【技术实现步骤摘要】
基于优化后雪花算法的分布式ID生成方法及应用
[0001]本专利技术涉及分布式系统
,尤其涉及一种基于优化后雪花算法的分布式ID生成方法及应用。
技术介绍
[0002]在分布式系统中,经常需要使用标识号对数据进行标识,这些标识号要求在同一业务场景下全局唯一。作为举例,比如在业务系统中为每一订单分配唯一的订单号,该订单号可以理解为订单对应的ID;又比如合同系统中的合同号,核心、抵质押、催收系统中的贷款号或银行卡号等序列号等,这些唯一标识号就是分布式ID。
[0003]分布式ID的生成算法有很多种,比如UUID、数据库主键自增、雪花(snowf lake)算法等。UUID的优势在于采用本地生成不经网络IO,效率高,但由于完全无序,导致数据库存储、查询效率低;数据库主键自增的优势在于简单方便,有序递增,方便排序和主键索引查找,但必须依赖数据库,并且在分库分表的情况下会有重复的问题;雪花算法的优势在于高性能,低延时,分布式环境保证唯一,趋势性递增,不依赖于数据库或者其他中间件,在生成标识号中使用最为广泛。
[0 ...
【技术保护点】
【技术特征摘要】
1.一种基于优化后雪花算法的分布式ID生成方法,其特征在于包括如下步骤:接收ID生成请求,获取当前时间戳;触发调用机器标识位注册服务模块生成机器标识位,所述机器标识位注册服务模块能够利用数据持久化单元生成机器标识位;根据前述当前时间戳和机器标识位利用优化后雪花算法生成分布式ID,所述优化后雪花算法生成的分布式ID包括63比特时间戳位、32比特机器标识位和32比特序列号位,所述序列号通过自增任意值生成。2.根据权利要求1所述的方法,其特征在于:所述分布式ID为128比特的数字标识符且具有时间顺序,第1位为符号位。3.根据权利要求1所述的方法,其特征在于:触发调用机器标识位注册服务模块生成机器标识位的步骤包括,判断机器标识位是否为空,判定为空时,调用机器标识位注册服务模块生成一个机器标识位;判断前述当前时间戳与上次生成ID的时间戳是否相等;判定相等时,对序列号位进行加1操作;判定不相等时,继续判断当前时间戳是否大于上次获取ID的时间戳;判定大于上次获取ID的时间戳时,将序列号位置为0;否则,判定发生时钟回拨,将序列号位置为0,并重新调用机器标识位注册服务模块生成一个新的机器标识位。4.根据权利要求1所述的方法,其特征在于:所述机器标识位注册服务模块包括数据持久化单元,所述数据持久化单元为数据库;所述数据库中存储有用于生成机器标识位的数据表,所述数据表以机器标识位作为主键,并将主键设置为自增类型;或者,所述机器标识位注册服务模块连接数据持久化单元,所述数据持久化单元为数据库,数据库中存储有用于生成机器标识位的数据表,所述数据表以机器标识位作为主键,并将主键设置为自增类型。5.根据权利要求1所述的方法,其特征在于:根据前述当前时间戳和机器标识位利用优化后雪花算法生成ID的步骤包括,对前述当前时间戳、机器标识位和序列号做位运算;其中,将前述当前时间戳向左移第一位数,所述第一位数为机器标识位和序列号位的总长度位,然后将前述机器标识位向左移第二位数,所述第二位数为序列号位的长度位;将经过位运算后得到的各部分做或运算,得到唯一ID。6.一种基于优化后雪花算法的分布式ID生成系统,其特征在于:包括通信连接的分布式ID微服务集群单元和分布式ID应用层单元;所述分布式ID应用层单元面向用户设置,用于采集用户的ID生成请求,以及向用户返回生成的分布式ID;所述分布式ID微服务集群单元包括通信连接的ID生成服务模块和机器标识位注册服务模块,所述机器标识位注册服务模块能够利...
【专利技术属性】
技术研发人员:王康岚,周文竹,
申请(专利权)人:上海佳锐信息科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。