[發明專利]分布式系統全局唯一ID生成方法、系統、設備及介質在審
| 申請號: | 202210745288.X | 申請日: | 2022-06-29 |
| 公開(公告)號: | CN114827082A | 公開(公告)日: | 2022-07-29 |
| 發明(設計)人: | 盧超;林京;梁海棠 | 申請(專利權)人: | 廣州市玄武無線科技股份有限公司 |
| 主分類號: | H04L61/3015 | 分類號: | H04L61/3015;H04L61/30;G06F9/54;G06F8/60 |
| 代理公司: | 廣州三環專利商標代理有限公司 44202 | 代理人: | 陳旭紅 |
| 地址: | 510653 廣東省廣州市*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 分布式 系統 全局 唯一 id 生成 方法 設備 介質 | ||
1.一種分布式系統全局唯一ID生成方法,其特征在于,包括:
部署環境組件,所述組件包括etcd和集成SDK的微服務;
啟動微服務,從etcd中自動獲取工作機器ID,將工作機器ID自動寫入key后發送至etcd;
監聽微服務寫入的所有key并處理刪除事件,定時生成第一預設數量的全局ID并放入隊列中;
若隊列中的可用全局ID數目大于或等于隊列總容量的一半,從隊列中任取一個作為全局唯一ID。
2.根據權利要求1所述的分布式系統全局唯一ID生成方法,其特征在于,所述定時生成第一預設數量的全局ID并放入隊列中,包括:
基于改進的Snowflake算法定時生成第一預設數量的全局ID并放入隊列中;
其中,生成的全局ID的時間戳為相對于某一時間基點的增量值。
3.根據權利要求1所述的分布式系統全局唯一ID生成方法,其特征在于,還包括:
若隊列中的可用全局ID數目小于隊列總容量的一半,異步生成第二預設數量的全局ID并放入隊列中,再從隊列中任取一個作為全局唯一ID。
4.根據權利要求1所述的分布式系統全局唯一ID生成方法,其特征在于,所述將工作機器ID自動寫入key后發送至etcd,包括:
在key中附帶租約,并啟動自動續約機制;
若服務宕機,key在超時后會自動刪除,且對應的工作機器ID會被回收,并被分配至其他服務。
5.根據權利要求1所述的分布式系統全局唯一ID生成方法,其特征在于,在所述啟動微服務之前,還包括:
在etcd中存放帶有第一前綴、第二前綴以及第三前綴的key;所述第三前綴包括多種。
6.根據權利要求5所述的分布式系統全局唯一ID生成方法,其特征在于,所述從etcd中獲取工作機器ID,包括:
啟動微服務,判斷在etcd中是否能匹配帶有第三前綴的其他key;
若是,則將當前帶有第三前綴的其他key作為工作機器ID;
若否,則在etcd中設置kv鍵值對,并以kv鍵值對中key對應的version值作為工作機器ID。
7.根據權利要求6所述的分布式系統全局唯一ID生成方法,其特征在于,所述version值會根據kv鍵值對中的value值的變化而遞增。
8.一種分布式系統全局唯一ID生成系統,其特征在于,包括:
部署單元,用于部署環境組件,所述組件包括etcd和集成SDK的微服務;
工作機器ID獲取單元,用于啟動微服務,從etcd中自動獲取工作機器ID,將工作機器ID自動寫入key后發送至etcd;
監聽單元,用于監聽微服務寫入的所有key并處理刪除事件,定時生成第一預設數量的全局ID并放入隊列中;
全局唯一ID生成單元,用于若隊列中的可用全局ID數目大于或等于隊列總容量的一半,從隊列中任取一個作為全局唯一ID。
9.一種終端設備,其特征在于,包括:
一個或多個處理器;
存儲器,與所述處理器耦接,用于存儲一個或多個程序;
當所述一個或多個程序被所述一個或多個處理器執行,使得所述一個或多個處理器實現如權利要求1-7任一項所述的分布式系統全局唯一ID生成方法。
10.一種計算機可讀存儲介質,其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執行時實現如權利要求1-7任一項所述的分布式系統全局唯一ID生成方法。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于廣州市玄武無線科技股份有限公司,未經廣州市玄武無線科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202210745288.X/1.html,轉載請聲明來源鉆瓜專利網。





