[发明专利]分布式系统全局唯一ID生成方法、系统、设备及介质在审
申请号: | 202210745288.X | 申请日: | 2022-06-29 |
公开(公告)号: | CN114827082A | 公开(公告)日: | 2022-07-29 |
发明(设计)人: | 卢超;林京;梁海棠 | 申请(专利权)人: | 广州市玄武无线科技股份有限公司 |
主分类号: | H04L61/3015 | 分类号: | H04L61/3015;H04L61/30;G06F9/54;G06F8/60 |
代理公司: | 广州三环专利商标代理有限公司 44202 | 代理人: | 陈旭红 |
地址: | 510653 广东省广州市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 分布式 系统 全局 唯一 id 生成 方法 设备 介质 | ||
1.一种分布式系统全局唯一ID生成方法,其特征在于,包括:
部署环境组件,所述组件包括etcd和集成SDK的微服务;
启动微服务,从etcd中自动获取工作机器ID,将工作机器ID自动写入key后发送至etcd;
监听微服务写入的所有key并处理删除事件,定时生成第一预设数量的全局ID并放入队列中;
若队列中的可用全局ID数目大于或等于队列总容量的一半,从队列中任取一个作为全局唯一ID。
2.根据权利要求1所述的分布式系统全局唯一ID生成方法,其特征在于,所述定时生成第一预设数量的全局ID并放入队列中,包括:
基于改进的Snowflake算法定时生成第一预设数量的全局ID并放入队列中;
其中,生成的全局ID的时间戳为相对于某一时间基点的增量值。
3.根据权利要求1所述的分布式系统全局唯一ID生成方法,其特征在于,还包括:
若队列中的可用全局ID数目小于队列总容量的一半,异步生成第二预设数量的全局ID并放入队列中,再从队列中任取一个作为全局唯一ID。
4.根据权利要求1所述的分布式系统全局唯一ID生成方法,其特征在于,所述将工作机器ID自动写入key后发送至etcd,包括:
在key中附带租约,并启动自动续约机制;
若服务宕机,key在超时后会自动删除,且对应的工作机器ID会被回收,并被分配至其他服务。
5.根据权利要求1所述的分布式系统全局唯一ID生成方法,其特征在于,在所述启动微服务之前,还包括:
在etcd中存放带有第一前缀、第二前缀以及第三前缀的key;所述第三前缀包括多种。
6.根据权利要求5所述的分布式系统全局唯一ID生成方法,其特征在于,所述从etcd中获取工作机器ID,包括:
启动微服务,判断在etcd中是否能匹配带有第三前缀的其他key;
若是,则将当前带有第三前缀的其他key作为工作机器ID;
若否,则在etcd中设置kv键值对,并以kv键值对中key对应的version值作为工作机器ID。
7.根据权利要求6所述的分布式系统全局唯一ID生成方法,其特征在于,所述version值会根据kv键值对中的value值的变化而递增。
8.一种分布式系统全局唯一ID生成系统,其特征在于,包括:
部署单元,用于部署环境组件,所述组件包括etcd和集成SDK的微服务;
工作机器ID获取单元,用于启动微服务,从etcd中自动获取工作机器ID,将工作机器ID自动写入key后发送至etcd;
监听单元,用于监听微服务写入的所有key并处理删除事件,定时生成第一预设数量的全局ID并放入队列中;
全局唯一ID生成单元,用于若队列中的可用全局ID数目大于或等于队列总容量的一半,从队列中任取一个作为全局唯一ID。
9.一种终端设备,其特征在于,包括:
一个或多个处理器;
存储器,与所述处理器耦接,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7任一项所述的分布式系统全局唯一ID生成方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7任一项所述的分布式系统全局唯一ID生成方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广州市玄武无线科技股份有限公司,未经广州市玄武无线科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210745288.X/1.html,转载请声明来源钻瓜专利网。