[發明專利]分布式系統全局唯一ID生成方法、系統、設備及介質在審
| 申請號: | 202210745288.X | 申請日: | 2022-06-29 |
| 公開(公告)號: | CN114827082A | 公開(公告)日: | 2022-07-29 |
| 發明(設計)人: | 盧超;林京;梁海棠 | 申請(專利權)人: | 廣州市玄武無線科技股份有限公司 |
| 主分類號: | H04L61/3015 | 分類號: | H04L61/3015;H04L61/30;G06F9/54;G06F8/60 |
| 代理公司: | 廣州三環專利商標代理有限公司 44202 | 代理人: | 陳旭紅 |
| 地址: | 510653 廣東省廣州市*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 分布式 系統 全局 唯一 id 生成 方法 設備 介質 | ||
本申請公開了一種分布式系統全局唯一ID生成方法、系統、設備及介質,包括部署環境組件:etcd和集成SDK的微服務;啟動微服務,從etcd中獲取工作機器ID,將其自動寫入key后發送至etcd;監聽微服務寫入的所有key并處理刪除事件,定時生成第一預設數量的全局ID并放入隊列中;若隊列中的可用全局ID數目大于或等于隊列總容量的一半,從隊列中任取一個作為全局唯一ID。本申請無需依賴etcd和本地機器時鐘,而是只需將操作全部集成在SDK中,并使用未來時間解決時鐘回撥問題。同時,基于etcd解決機器ID的自動生成和復用問題,采用異步預生成方式提前生成一批全局唯一ID,極大提高獲取全局ID的吞吐量。
技術領域
本申請涉及分布式系統ID處理技術領域,尤其涉及一種分布式系統全局唯一ID生成方法、系統、設備及介質。
背景技術
在分布式系統中,常常需要對業務數據打上唯一標識。如訂單系統有訂單ID,商品系統有商品ID,用戶系統中有用戶ID等。對于這類ID,通常會存在以下要求:第一,ID全局唯一或某類業務內唯一;第二,ID單調遞增,以滿足排序和增量拉取的需求。
目前,生成全局唯一ID最常見的方法主要有以下幾類:第一類是強依賴存儲系統(MySQL、MongoDB、Redis等),對存儲系統的性能要求很高,同時對存儲系統的壓力也很大,生成的ID還是連續的,容易泄露商業機密,并且業務量大的場景還要進行分庫分表,導致開發和運維效率較低。第二類是以Snowflake算法為基礎,不依賴任何存儲系統,本地生成全局ID,但這種方式需要人工指定機器ID,并且對機器時鐘非常敏感,存在時鐘回撥問題;第三類是再第二類基礎上對Snowflake算法進行一些局部優化,可以自動獲取工作機器ID,但是這類方法只是不斷創建新的工作機器ID,對已經分配出去的機器ID不能夠復用和再分配,導致在pod重啟頻繁的kubernetes環境下容易造成機器ID不夠用的情況,從而無法生成全局唯一ID。
發明內容
本申請的目的在于提供一種分布式系統全局唯一ID生成方法、系統、設備及介質,以解決現有基于Snowflake算法生成全局ID時存在的需要依賴人工分配工作機器ID以及時鐘回撥的問題。
為實現上述目的,本申請提供一種分布式系統全局唯一ID生成方法,包括:
部署環境組件,所述組件包括etcd和集成SDK的微服務;
啟動微服務,從etcd中自動獲取工作機器ID,將工作機器ID自動寫入key后發送至etcd;
監聽微服務寫入的所有key并處理刪除事件,定時生成第一預設數量的全局ID并放入隊列中;
若隊列中的可用全局ID數目大于或等于隊列總容量的一半,從隊列中任取一個作為全局唯一ID。
進一步,作為優選地,所述定時生成第一預設數量的全局ID并放入隊列中,包括:
基于改進的Snowflake算法定時生成第一預設數量的全局ID并放入隊列中;
其中,生成的全局ID的時間戳為相對于某一時間基點的增量值。
進一步,作為優選地,所述的分布式系統全局唯一ID生成方法,還包括:
若隊列中的可用全局ID數目小于隊列總容量的一半,異步生成第二預設數量的全局ID并放入隊列中,再從隊列中任取一個作為全局唯一ID。
進一步,作為優選地,所述將工作機器ID自動寫入key后發送至etcd,包括:
在key中附帶租約,并啟動自動續約機制;
若服務宕機,key在超時后會自動刪除,且對應的工作機器ID會被回收,并被分配至其他服務。
進一步,作為優選地,在所述啟動微服務之前,還包括:
在etcd中存放帶有第一前綴、第二前綴以及第三前綴的key;所述第三前綴包括多種。
進一步,作為優選地,所述從etcd中獲取工作機器ID,包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于廣州市玄武無線科技股份有限公司,未經廣州市玄武無線科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202210745288.X/2.html,轉載請聲明來源鉆瓜專利網。





