[发明专利]分布式系统全局唯一ID生成方法、装置、设备和介质有效
申请号: | 202110431038.4 | 申请日: | 2021-04-21 |
公开(公告)号: | CN112988757B | 公开(公告)日: | 2021-10-26 |
发明(设计)人: | 熊超 | 申请(专利权)人: | 杭州魔点科技有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 杭州创智卓英知识产权代理事务所(普通合伙) 33324 | 代理人: | 张超 |
地址: | 310000 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 分布式 系统 全局 唯一 id 生成 方法 装置 设备 介质 | ||
1.一种分布式系统全局唯一ID生成方法,其特征在于,包括:
根据时间点占用位数、组ID占用位数、组内节点ID占用位数和序列号自增值占用位数得到全局唯一ID的格式信息,其中,时间点的值通过当前毫秒时间戳右移得到;
当接收到生成所述全局唯一ID的请求时,在当前时间点对应的序列号自增值超过最大值的情况下,则向后借用时间点,在将当前时间点更新为当前系统时间点的情况下,若该当前时间点发生变化,则将变化后的时间点持久化存储;在向后借用时间点的情况下,则将借用到的时间点持久化存储,当系统重启时,对持久化存储的当前时间点和系统当前时间点做比较,选择较大值作为时间点自增的基础,其中,所述请求携带有ID域和生成所述全局唯一ID的数量的信息;
针对所述ID域,根据所述数量生成序列号自增值;
将所述序列号自增值、所述当前时间点、预设的组ID和组内节点ID按照所述格式信息生成所述全局唯一ID;
在所述数量为多个的情况下,所述的根据所述数量生成序列号自增值包括:
根据所述数量生成序列号自增值的起止值;
根据所述起止值生成数组,其中,所述数组用于网络传输以及在内存中存储。
2.根据权利要求1所述的方法,其特征在于,在所述的根据时间点占用位数、组ID占用位数、组内节点ID占用位数和序列号自增值占用位数得到全局唯一ID的格式信息之前,所述方法还包括:
从内存或持久化数据中获取ID生成器对象;
在没有ID生成器对象的情况下,根据所述当前时间点生成ID生成器对象,该ID生成器对象的属性包括ID域、所述当前时间点、当前序列号自增值和当前补充信息,该当前补充信息包含组ID、组内节点ID和所述当前时间点。
3.根据权利要求1所述的方法,其特征在于,在所述的生成全局唯一ID之后,所述方法还包括:
按照如下公式对所述全局唯一ID进行分片存储:
J=(T+I)%M
其中,J为分片值,T为所述时间点,I为所述序列号自增值,M为分片数量,且M为2的n次方的值。
4.一种分布式系统全局唯一ID生成装置,其特征在于,包括:
计算模块,用于根据时间点占用位数、组ID占用位数、组内节点ID占用位数和序列号自增值占用位数得到全局唯一ID的格式信息,其中,时间点的值通过当前毫秒时间戳右移得到;
时间点更新模块,用于当接收到生成所述全局唯一ID的请求时,在当前时间点对应的序列号自增值超过最大值的情况下,则向后借用时间点,在将当前时间点更新为当前系统时间点的情况下,若该当前时间点发生变化,则将变化后的时间点持久化存储;在向后借用时间点的情况下,则将借用到的时间点持久化存储,当系统重启时,对持久化存储的当前时间点和系统当前时间点做比较,选择较大值作为时间点自增的基础,其中,所述请求携带有ID域和生成所述全局唯一ID的数量的信息;
序列号自增值生成模块,用于针对所述ID域,根据所述数量生成序列号自增值;
ID生成模块,用于将所述序列号自增值、所述当前时间点、预设的组ID和组内节点ID按照所述格式信息生成所述全局唯一ID;在所述数量为多个的情况下,所述的根据所述数量生成序列号自增值包括:根据所述数量生成序列号自增值的起止值;根据所述起止值生成数组,其中,所述数组用于网络传输以及在内存中存储。
5.一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至3中任一项所述的方法。
6.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至3中任一项所述的方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州魔点科技有限公司,未经杭州魔点科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110431038.4/1.html,转载请声明来源钻瓜专利网。