[发明专利]一种全局ID生成方法、装置、设备及存储介质有效
申请号: | 202110449174.6 | 申请日: | 2021-04-25 |
公开(公告)号: | CN113064903B | 公开(公告)日: | 2022-12-13 |
发明(设计)人: | 钟江;马黎明;黄明远 | 申请(专利权)人: | 小马国炬(玉溪)科技有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 薛娇 |
地址: | 653100 云南省玉*** | 国省代码: | 云南;53 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 全局 id 生成 方法 装置 设备 存储 介质 | ||
本发明公开了一种全局ID生成方法、装置、设备及存储介质,该方法包括:如果需要生成指定业务对应ID,查询相应的ID记录;如果当前为宕机重启后首次生成指定业务对应的ID,确定指定业务的ID记录中下一ID号段开始值的值为生成的ID,如果当前不为宕机重启后首次生成指定业务对应的ID,对指定业务相应的ID记录中的ID号段进行自增加N操作以生成ID;判断生成的ID是否符合单个ID号段结束的要求,如果是,更新指定业务的ID记录中下一ID号段开始值的值为该下一ID号段开始值当前的值及单个ID号段的长度值之和,否则,确定无需更新指定业务的ID记录中下一ID号段开始值的值。从而能够有效保证生成的ID的全局唯一性。
技术领域
本发明涉及业务开发技术领域,更具体地说,涉及一种全局ID生成方法、装置、设备及存储介质。
背景技术
在业务开发中,大量场景需要唯一ID(Identity document,身份标识号)来进行标识:如用户需要唯一ID、商品需要唯一ID、消息需要唯ID、事件需要唯一ID等,这些都需要全局唯一ID,尤其是复杂的分布式业务场景中全局唯一ID更为重要。但是现有的技术方案在实现全局唯一ID生成时,如果因宕机导致重启就会继续按照统一的规则生成ID,但是这种方式容易和宕机之前生成的ID发生重复,进而无法实现ID的全局唯一性。
发明内容
本发明的目的是提供一种全局ID生成方法、装置、设备及存储介质,能够有效保证生成的ID的全局唯一性。
为了实现上述目的,本发明提供如下技术方案:
一种全局ID生成方法,包括:
如果需要生成指定业务对应ID,则查询相应的ID记录;
如果当前为宕机重启后首次生成所述指定业务对应的ID,则确定所述指定业务的ID记录中下一ID号段开始值的值为生成的ID,如果当前不为宕机重启后首次生成所述指定业务对应的ID,则对所述指定业务相应的ID记录中的ID号段进行自增加N操作以生成ID;
判断生成的ID是否符合单个ID号段结束的要求,如果是,则更新所述指定业务的ID记录中下一ID号段开始值的值为该下一ID号段开始值当前的值及单个ID号段的长度值之和,否则,确定无需更新所述指定业务的ID记录中下一ID号段开始值的值。
优选的,查询相应的ID记录包括:
在Redis中查询相应的ID记录;
相应的,查询相应的ID记录之后,还包括:
如果在所述Redis中查询到所述指定业务相应的ID记录,则执行生成ID的步骤,否则,在数据库中查询所述指定业务相应的ID记录,并将查询到的ID记录写入所述Redis中。
优选的,查询相应的ID记录之后,还包括:
如果在所述Redis及所述数据库中均未查询到相应的ID记录,则按照预设的与所述指定业务对应的规则生成ID。
优选的,按照预设的与所述指定业务对应的规则生成ID,包括:
按照预设的所述指定业务的ID前缀及ID长度值生成相应的ID。
优选的,判断生成的ID是否符合单个ID号段结束的要求,包括:
判断生成的ID后M位数据的值是否分别与单个ID号段结束的ID后M位数据的值一一对应相同。
优选的,对所述指定业务相应的ID记录中的ID号段进行自增加N操作以生成ID,包括:
调用所述Redis的原子自增指令对所述指定业务相应的ID记录中的ID号段进行自增加N操作以生成ID。
优选的,在数据库中查询所述指定业务相应的ID记录,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于小马国炬(玉溪)科技有限公司,未经小马国炬(玉溪)科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110449174.6/2.html,转载请声明来源钻瓜专利网。