[發(fā)明專利]一種分布式唯一ID生成方法在審
| 申請(qǐng)?zhí)枺?/td> | 202110868307.3 | 申請(qǐng)日: | 2021-07-30 |
| 公開(公告)號(hào): | CN113626496A | 公開(公告)日: | 2021-11-09 |
| 發(fā)明(設(shè)計(jì))人: | 孫志強(qiáng);徐士強(qiáng);楊繼偉;董玉全 | 申請(qǐng)(專利權(quán))人: | 浪潮云信息技術(shù)股份公司 |
| 主分類號(hào): | G06F16/2458 | 分類號(hào): | G06F16/2458;G06F16/2453;G06F16/2455;G06F16/21;G06F16/22;G06F16/27 |
| 代理公司: | 濟(jì)南信達(dá)專利事務(wù)所有限公司 37100 | 代理人: | 姜明 |
| 地址: | 250100 山東省濟(jì)南市高*** | 國省代碼: | 山東;37 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 分布式 唯一 id 生成 方法 | ||
1.一種分布式唯一ID生成方法,其特征在于,所述方法的實(shí)現(xiàn)包括內(nèi)容如下:
利用MySql主鍵自增的方式,實(shí)現(xiàn)分布式數(shù)據(jù)ID自增,利用MySql多實(shí)例主鍵自增,每次獲取ID時(shí)去數(shù)據(jù)庫請(qǐng)求,獲得的ID是一個(gè)ID區(qū)間段。
2.根據(jù)權(quán)利要求1所述的一種分布式唯一ID生成方法,其特征在于,所述ID區(qū)間段保存到j(luò)vm中,業(yè)務(wù)場(chǎng)景用的ID,在jvm內(nèi)存中獲得。
3.根據(jù)權(quán)利要求1或2所述的一種分布式唯一ID生成方法,其特征在于,所述ID區(qū)間段的獲取過程如下:
注冊(cè)用戶時(shí),查詢數(shù)據(jù)庫,找到user_tag的ID,獲取max_id,step;
把max_id更新為max_id=max_id+step,得到ID區(qū)間段:
ID=[max_id+1,max_id+step]。
4.根據(jù)權(quán)利要求3所述的一種分布式唯一ID生成方法,其特征在于,所述方法的實(shí)現(xiàn)還包括:
多個(gè)用戶服務(wù)同時(shí)獲取ID時(shí),采用加分布式鎖的方式,保證同一時(shí)刻只有一個(gè)用戶服務(wù)獲取max_id。
5.根據(jù)權(quán)利要求4所述的一種分布式唯一ID生成方法,其特征在于,所述方法通過自行定義max_id的起點(diǎn),和step步長,進(jìn)行擴(kuò)容。
6.根據(jù)權(quán)利要求5所述的一種分布式唯一ID生成方法,其特征在于,所述方法的實(shí)現(xiàn)還包括:
多個(gè)用戶服務(wù)獲取各自的ID區(qū)間時(shí),采用雙buffer方案,每次獲取ID時(shí)從buffer中獲取,并在兩個(gè)buffer之間自行切換使用。
7.根據(jù)權(quán)利要求6所述的一種分布式唯一ID生成方法,其特征在于,所述雙buffer為buffer1和buffer2,具體操作步驟如下:
1)當(dāng)前獲取ID在buffer1中,每次獲取ID從buffer1中獲取;
2)當(dāng)buffer1中的Id已經(jīng)使用了區(qū)間的10%,先判斷buffer2中有沒有去獲取過,如果沒有就立即發(fā)起請(qǐng)求獲取ID線程,所述線程把獲取到的ID設(shè)置到buffer2中;
3)如果buffer1用完了,自動(dòng)切換到buffer2;
4)當(dāng)buffer2用到10%了,再次啟動(dòng)線程獲取,把獲取到的ID設(shè)置到buffer1中;
5)當(dāng)每個(gè)buffer中的Id使用的區(qū)間每增長10%,把獲取到的ID設(shè)置到另一個(gè)buffer中。
8.根據(jù)權(quán)利要求4所述的一種分布式唯一ID生成方法,其特征在于,所述,所述id采用AtomicLong中的getAndIncrement方法獲取。
9.根據(jù)權(quán)利要求4所述的一種分布式唯一ID生成方法,其特征在于,所述ID區(qū)間段的獲取通過用戶服務(wù)模塊和生成ID服務(wù)模塊實(shí)現(xiàn),具體實(shí)現(xiàn)流程如下:
注冊(cè)用戶時(shí),需要一個(gè)用戶ID,用戶服務(wù)模塊請(qǐng)求生成ID服務(wù)模塊的接口;
生成ID服務(wù)模塊查詢數(shù)據(jù)庫,找到user_tag的ID,把max_id和step返回給用戶服務(wù)模塊;
用戶服務(wù)模塊需要用到ID的時(shí)候,在區(qū)間ID=[max_id+1,max_id+step]中依次獲取id。
10.根據(jù)權(quán)利要求9所述的一種分布式唯一ID生成方法,其特征在于,所述方法的實(shí)現(xiàn)流程還包括:
如果所述區(qū)間的值用完了,再去請(qǐng)求生成ID服務(wù)模塊接口,獲取到max_id為step,使用[max_id+1,max_id+step]區(qū)間的ID。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于浪潮云信息技術(shù)股份公司,未經(jīng)浪潮云信息技術(shù)股份公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110868307.3/1.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。





