[发明专利]基于优化后雪花算法的分布式ID生成方法及应用在审
申请号: | 202011640737.1 | 申请日: | 2020-12-31 |
公开(公告)号: | CN114691642A | 公开(公告)日: | 2022-07-01 |
发明(设计)人: | 王康岚;周文竹 | 申请(专利权)人: | 上海佳锐信息科技股份有限公司 |
主分类号: | G06F16/21 | 分类号: | G06F16/21;G06F16/27;H04L67/1097 |
代理公司: | 上海图灵知识产权代理事务所(普通合伙) 31393 | 代理人: | 谢微 |
地址: | 200433 上海市杨浦区*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 优化 雪花 算法 分布式 id 生成 方法 应用 | ||
本发明公开了基于优化后雪花算法的分布式ID生成方法及应用,涉及分布式系统技术领域。所述分布式ID生成方法,包括步骤:接收ID生成请求,获取当前时间戳;触发调用机器标识位注册服务模块生成机器标识位,所述机器标识位注册服务模块能够利用数据持久化单元生成机器标识位;根据当前时间戳和机器标识位利用优化后雪花算法生成分布式ID,所述优化后雪花算法生成的分布式ID包括63比特时间戳位、32比特机器标识位和32比特序列号位,所述序列号通过自增任意值生成。本发明能够在发生时钟回拨时通过机器标识位注册服务模块更新机器标识位持续生成ID,并降低了对数据库的依赖程度,同时使得生成的ID的数量限制显著降低。
技术领域
本发明涉及分布式系统技术领域,尤其涉及一种基于优化后雪花算法的分布式ID生成方法及应用。
背景技术
在分布式系统中,经常需要使用标识号对数据进行标识,这些标识号要求在同一业务场景下全局唯一。作为举例,比如在业务系统中为每一订单分配唯一的订单号,该订单号可以理解为订单对应的ID;又比如合同系统中的合同号,核心、抵质押、催收系统中的贷款号或银行卡号等序列号等,这些唯一标识号就是分布式ID。
分布式ID的生成算法有很多种,比如UUID、数据库主键自增、雪花(snowf lake)算法等。UUID的优势在于采用本地生成不经网络IO,效率高,但由于完全无序,导致数据库存储、查询效率低;数据库主键自增的优势在于简单方便,有序递增,方便排序和主键索引查找,但必须依赖数据库,并且在分库分表的情况下会有重复的问题;雪花算法的优势在于高性能,低延时,分布式环境保证唯一,趋势性递增,不依赖于数据库或者其他中间件,在生成标识号中使用最为广泛。
雪花算法是由Twitter公司提出的,参见图1所示,示例了现有技术中采用雪花算法生成的分布式ID(标识号)的比特(bit)位分布示意图:ID通常由64位二进制数组成,其中:1位二进制数表示符号位、41位二进制数表示时间戳位(精确到毫秒)、10位二进制数表示工作机器ID位、12位二进制数表示序列号位。时间戳基于工作机器的本机时钟生成,在同一时间戳对应的时刻下会生成多个标识号,因此这些标识号需由不同的序列号区分,且不同的序列号随时间增加呈递增趋势。10位工作机器ID位,Twitter实现中使用前5位作为数据中心标识,后5位作为机器标识。现有的snowflake算法生成的标识号的时间戳的最小计数单位可以为毫秒,因此其可以表示的时间范围为241/(3600*24*365*1000)≈69.7年;可以部署到210=1024台工作机器中,在一毫秒内同一个工作机器,可以容纳212=4096个不同的标识号。表示工作机器ID的二进制数的位数和表示序列号的二进制数的位数之和,决定了系统的并发能力,即,现有的snowf lake算法可以支持1024*4096=4194304个并发。
然而,现有的雪花算法至少存在如下缺陷:一方面,雪花算法强依赖于时钟,如果时钟回拨,会生成重复的ID。由于时间戳是基于工作机器的本机时钟生成,因此当工作机器出现时钟回拨的情况时——即工作机器的时钟从当前时刻回退到之前的某一个时刻,例如,回退到当前时刻一小时之前的时刻等——生成的ID的时间戳也会随之回退,如果仍按照回退后的时间戳生成的ID,则可能出现所生成的ID与时钟回退之前在该时刻生成的ID相同的情况,导致ID出现重复。
另一方面,雪花算法的比特位分配固定,有使用年限(69.7年)的限制,在一定年限后可能导致ID用尽,无法扩展。同时,机器标识位长度不够,导致服务器横向扩展不便。
综上所述,是否能够对雪花算法进行优化和改进,提供一种能够在时钟回拨时防止出现重复ID、在年限和数量限制上更小且对数据库的依赖程度较低的分布式ID生成方案,是当前亟需解决的技术问题。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海佳锐信息科技股份有限公司,未经上海佳锐信息科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011640737.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:离子发生组件和空气调节设备
- 下一篇:一种动物双歧杆菌乳亚种及其组合物