[发明专利]面向业务实体的全局ID生成方法及装置在审
申请号: | 201910848935.8 | 申请日: | 2019-09-09 |
公开(公告)号: | CN110737806A | 公开(公告)日: | 2020-01-31 |
发明(设计)人: | 杨凯翔;杨晓辰 | 申请(专利权)人: | 贝壳技术有限公司 |
主分类号: | G06F16/901 | 分类号: | G06F16/901;G06F16/903 |
代理公司: | 11283 北京润平知识产权代理有限公司 | 代理人: | 肖冰滨;王晓晓 |
地址: | 300280 天津市滨海新区南港*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 全局 业务实体 算法 实际业务 业务类型 时间戳 解析 增设 保证 | ||
1.一种面向业务实体的全局ID生成方法,所述生成方法基于SnowFlake算法,其生成的全局ID包括时间戳、机器ID和序列号,其特征在于,所述全局ID还包括业务ID。
2.根据权利要求1所述的生成方法,其特征在于,所述业务ID与业务类型相对应。
3.根据权利要求1所述的生成方法,其特征在于,所述机器ID采用抢占式分布式锁的方式获取。
4.根据权利要求3所述的生成方法,其特征在于,所述机器ID采用以下方式获取:
接收包含机器ID的抢占请求,并在缓存服务中查询所述机器ID对应的缓存key是否存在;所述缓存服务响应于机器在服务启动时的连接,并保存有当前在线机器的缓存key;
若存在,则通知抢占请求的发送者重新生成机器ID并重新请求,重复上一步骤;若不存在,则采用所述机器ID作为所述抢占请求的发送者的机器ID,同时将所述机器ID对应的缓存key加入所述缓存服务。
5.根据权利要求4所述的生成方法,其特征在于,所述生成方法还包括:当接收到某一机器的服务关闭时,从所述缓存服务中删除所述机器的机器ID对应的缓存key。
6.根据权利要求4所述的生成方法,其特征在于,所述生成方法还包括:设置所述缓存key的生存周期,当所述生存周期内未收到其对应的机器的心跳信号时,从所述缓存服务中删除所述机器的机器ID对应的缓存key。
7.根据权利要求3所述的生成方法,其特征在于,所述时间戳和所述序列号采用以下步骤生成:
获取ID生成请求中的第一时间戳;
将所述第一时间戳与最近一次ID生成请求中的第二时间戳相比较;
若两者不相等,则以所述第一时间戳为所述全局ID中的所述时间戳,以预设起始序列号为所述全局ID中的所述序列号;
若两者相等,则以所述第一时间戳为所述全局ID中的所述时间戳,以所述最近一次ID生成请求所分配的序列号加1为所述全局ID中的所述序列号。
8.根据权利要求7所述的生成方法,其特征在于,所述生成方法还包括:判断所述全局ID中的所述序列号是否达到所述序列号的上限;若已达上限,则采用当前时间替换所述第一时间戳。
9.一种面向业务实体的全局ID生成装置,其特征在于,所述装置包括:存储器和处理器;
所述存储器,用于存储程序指令;
所述处理器,用于调用所述存储器中存储的所述程序指令以实现权利要求1至8中任一项权利要求所述的面向业务实体的全局ID生成方法,生成面向业务实体的全局ID。
10.一种存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至8中任一项权利要求所述的面向业务实体的全局ID生成方法的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于贝壳技术有限公司,未经贝壳技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910848935.8/1.html,转载请声明来源钻瓜专利网。