[發明專利]一種用于分布式系統的數字ID生成方法有效
| 申請號: | 201810969674.0 | 申請日: | 2018-08-23 |
| 公開(公告)號: | CN109241057B | 公開(公告)日: | 2020-12-08 |
| 發明(設計)人: | 王志文 | 申請(專利權)人: | 重慶富民銀行股份有限公司 |
| 主分類號: | G06F16/22 | 分類號: | G06F16/22;G06F16/27;G06F16/25 |
| 代理公司: | 重慶強大凱創專利代理事務所(普通合伙) 50217 | 代理人: | 黃書凱 |
| 地址: | 401121 重慶市*** | 國省代碼: | 重慶;50 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 用于 分布式 系統 數字 id 生成 方法 | ||
本發明涉及分布式系統管理方法技術領域,具體為一種用于分布式系統的數字ID生成方法,包括以下內容:數據表創建步驟,在數據庫中創建ID數據表;數據表路由步驟,應用接收到ID生成的調用請求后隨機選取ID數據表;ID生成步驟,應用向選取的ID數據表執行生成命令;數據表創建步驟包括:步驟一:在數據庫中創建N張ID數據表;步驟二:在每張ID數據表中均創建一個ID字段;步驟三:設置ID字段為自增類型,同時設置自增步長為N且N張ID數據表的ID字段的起始值依次加一。本發明提供的一種用于分布式系統的數字ID生成方法,能夠解決現有分布式系統的數字ID的生成方法所存在的無法保證遞增趨勢、查詢效率低以及無法應對多并發情況等問題。
技術領域
本發明涉及分布式系統管理方法技術領域,具體為一種用于分布式系統的數字ID生成方法。
背景技術
在分布式系統中,經常需要使用全局唯一數字ID定義對應的數據。這個數字ID基本需求包括以下幾點:1、全局唯一;2、占用相對較少,方便將ID進行DB存儲,方便索引;3、性能高,可用性高。
分布式系統下實現唯一數字ID的方式較多,常見的有下面幾種:
1、UUID算法,其核心思想是結合機器的硬件、時間以及隨機種子數來生成唯一的數字ID。
2、基于Redis的分布式ID生成器:使用41bit來存放時間,精確到毫秒,可以使用41年;使用12bit來存放邏輯分片ID,最大分片ID是4095;使用10bit來存放自增長ID,意味著每個節點,每毫秒最多可以生成1024個ID。
3、隊列/ID池的方式,即預先生成一定量的數字ID,并放到一個隊列/ID池里,每次操作時,從隊列中讀取一個ID。
以上的這些方式中,UUID的缺點在于其無法保證趨勢遞增,同時若UUID過長,往往用字符串表示,作為主鍵建立索引查詢效率低,常見優化方案為“折半存儲”,然而折半后并不能保證唯一性。基于Redis的分布式ID生成器的缺點在于需要單獨部署Redis且性能較差,缺乏穩定性。而ID池的缺點在于,需要提前生成,無法保證趨勢遞增,需要部署單獨的服務進行維護。在分布式應用橫向擴展服務的情況下,上面幾種方式都不能做到既穩定,又高效地生成數字型唯一ID。
發明內容
本發明意在提供一種用于分布式系統的數字ID生成方法,能夠解決現有分布式系統的數字ID的生成方法所存在的無法保證遞增趨勢、查詢效率低以及無法應對多并發情況等問題。
為了解決上述技術問題,本專利提供如下技術方案:
一種用于分布式系統的數字ID生成方法,包括以下內容:
數據表創建步驟,在數據庫中創建ID數據表;
數據表路由步驟,應用接收到ID生成的調用請求后隨機選取ID數據表;
ID生成步驟,應用向選取的ID數據表執行生成命令,相應的ID數據表返回生成數據的ID字段值,應用根據該ID字段值生成的ID返回給調用程序;
其中,數據表創建步驟包括:
步驟一:在數據庫中創建N張ID數據表;
步驟二:在每張ID數據表中均創建一個ID字段;
步驟三:設置ID字段為自增類型,同時設置自增步長為N且N張ID數據表的ID字段的起始值依次加一。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于重慶富民銀行股份有限公司,未經重慶富民銀行股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810969674.0/2.html,轉載請聲明來源鉆瓜專利網。





