分布式系统全局唯一ID生成方法、系统、设备及介质与流程

文档序号:30925328发布日期:2022-07-29 23:38阅读:来源:国知局

技术特征:
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生成方法。

技术总结
本申请公开了一种分布式系统全局唯一ID生成方法、系统、设备及介质,包括部署环境组件:etcd和集成SDK的微服务;启动微服务,从etcd中获取工作机器ID,将其自动写入key后发送至etcd;监听微服务写入的所有key并处理删除事件,定时生成第一预设数量的全局ID并放入队列中;若队列中的可用全局ID数目大于或等于队列总容量的一半,从队列中任取一个作为全局唯一ID。本申请无需依赖etcd和本地机器时钟,而是只需将操作全部集成在SDK中,并使用未来时间解决时钟回拨问题。同时,基于etcd解决机器ID的自动生成和复用问题,采用异步预生成方式提前生成一批全局唯一ID,极大提高获取全局ID的吞吐量。ID的吞吐量。ID的吞吐量。


技术研发人员:卢超 林京 梁海棠
受保护的技术使用者:广州市玄武无线科技股份有限公司
技术研发日:2022.06.29
技术公布日:2022/7/28
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1