[发明专利]分布式系统全局唯一ID生成方法、装置、设备和介质有效
申请号: | 202110431038.4 | 申请日: | 2021-04-21 |
公开(公告)号: | CN112988757B | 公开(公告)日: | 2021-10-26 |
发明(设计)人: | 熊超 | 申请(专利权)人: | 杭州魔点科技有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 杭州创智卓英知识产权代理事务所(普通合伙) 33324 | 代理人: | 张超 |
地址: | 310000 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 分布式 系统 全局 唯一 id 生成 方法 装置 设备 介质 | ||
本申请公开了分布式系统全局唯一ID生成方法、装置、设备和存储介质,属于计算机领域,该方法包括:根据时间点占用位数、组ID占用位数、组内节点ID占用位数和序列号自增值占用位数得到全局唯一ID的格式信息,其中,时间点的值通过当前毫秒时间戳右移得到;当接收到生成全局唯一ID的请求时,将当前使用到的时间点与当前系统时间点做比较,并将当前时间点更新为较大的时间点,其中,该请求携带有ID域和生成全局唯一ID的数量的信息;针对该ID域,根据该数量生成序列号自增值;将序列号自增值、当前时间点、预设的组ID和组内节点ID按照格式信息生成全局唯一ID。根据本申请实施例,能够有效的解决生成的ID重复的问题。
技术领域
本申请涉及计算机技术领域,特别是涉及分布式系统全局唯一ID生成方法、装置、设备和存储介质。
背景技术
在计算机运行环境中,生成唯一记录标识的业务需求特别重要,就全局唯一ID而言,几乎是所有系统的刚需,该全局唯一ID在数据搜索、存储以及加快检索速度等很多方面都有着重要的意义。为了生成全局唯一ID,通常采用雪花算法,然而,雪花算法不仅固定了全局唯一ID的各项位数,不够灵活,难以满足复杂的业务需求,而且,在现实中很容易因系统对时造成时间戳回退,从而导致生成的ID重复的问题,对此,相关技术中尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种分布式系统全局唯一ID生成方法、装置、设备和存储介质,以至少解决相关技术中生成的ID重复的问题。
第一方面,本申请实施例提供了一种分布式系统全局唯一ID生成方法,包括:根据时间点占用位数、组ID占用位数、组内节点ID占用位数和序列号自增值占用位数得到全局唯一ID的格式信息,其中,时间点的值通过当前毫秒时间戳右移得到;当接收到生成所述全局唯一ID的请求时,将当前使用到的时间点与当前系统时间点做比较,并将当前时间点更新为较大的时间点,其中,所述请求携带有生成所述全局唯一ID的数量的信息;针对所述ID域,根据所述数量生成序列号自增值;将所述序列号自增值、所述当前时间点、预设的组ID和组内节点ID按照所述格式信息生成所述全局唯一ID。
在其中一些实施例中,在所述当前时间点对应的所述序列号自增值超过最大值的情况下,则向后借用时间点。
在其中一些实施例中,在所述的将当前时间点更新为较大的时间点之后,所述方法还包括:在将当前时间点更新为当前系统时间点的情况下,若该当前时间点发生变化,则将变化后的时间点持久化存储;在向后借用时间点的情况下,则将借用到的时间点持久化存储。
在其中一些实施例中,在所述数量为多个的情况下,所述的根据所述数量生成序列号自增值包括:根据所述数量生成序列号自增值的起止值;根据所述起止值生成数组,其中,所述数组用于网络传输以及在内存中存储。
在其中一些实施例中,在所述的根据时间点占用位数、组ID占用位数、组内节点ID占用位数和序列号自增值占用位数得到全局唯一ID的格式信息之前,所述方法还包括:从内存或持久化数据中获取ID生成器对象;在没有ID生成器对象的情况下,根据所述当前时间点生成ID生成器对象,该ID生成器对象的属性包括ID域、所述当前时间点、当前序列号自增值和当前补充信息,该当前补充信息包含组ID、组内节点ID和所述当前时间点。
在其中一些实施例中,在所述的生成全局唯一ID之后,所述方法还包括:按照如下公式对所述全局唯一ID进行分片存储:
J=(T+I)%M
其中,J为分片值,T为所述时间点,I为所述序列号自增值,M为分片数量,且M为2的n次方的值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州魔点科技有限公司,未经杭州魔点科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110431038.4/2.html,转载请声明来源钻瓜专利网。