System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及分布式系统,尤其涉及一种分布式id生成方法、装置、电子设备及存储介质。
技术介绍
1、在分布式系统中,需要对数据、消息、http请求等进行唯一标识,要求产生全局唯一且单调递增的id(identity,唯一编码)。
2、目前,常见的方案有uuid(universally unique identifier,通用唯一识别码)、flicker方案、snowflake算法等。通过snowflake算法生成新的id时,该id包括long和string两种类型,其中,long类型的由64位二进制bit组成,该64位一般包括1bit的符号位、41bit的时间戳位、10bit的机器号位和12bit的序列号位。在用于发号(在生成新的id后)的服务器发生时钟回拨时,41bit的时间戳位会出现重复的情况,导致最终生成的id重复。
3、因此,实际应用中需要一种能够避免分布式系统中id重复的方案。
技术实现思路
1、本申请的主要目的在于提供一种分布式id生成方法、装置、电子设备及存储介质,旨在解决使用snowflake算法生成新的id并出现时钟回拨时,id重复的技术问题。
2、为实现上述目的,本申请提供一种分布式id生成方法,所述分布式id生成方法包括以下步骤:
3、获取当前时间戳和上一次生成的历史id对应的历史时间戳;
4、若所述当前时间戳小于所述历史时间戳,则获取新的机器号;
5、基于所述新的机器号生成新的id。
< ...【技术保护点】
1.一种分布式ID生成方法,其特征在于,所述分布式ID生成方法包括以下步骤:
2.如权利要求1所述的分布式ID生成方法,其特征在于,所述获取新的机器号,包括:
3.如权利要求1或2所述的分布式ID生成方法,其特征在于,所述从数据库的机器号列表中获取所有可复用的机器号对应的续期时间之前,包括:
4.如权利要求3所述的分布式ID生成方法,其特征在于,所述获取当前实例的标识之前,包括:
5.如权利要求2所述的分布式ID生成方法,其特征在于,所述对所有所述续期时间进行先后顺序排序之后,还包括:
6.如权利要求1所述的分布式ID生成方法,其特征在于,所述方法还包括:
7.如权利要求1所述的分布式ID生成方法,其特征在于,所述新的ID包括预留位,所述预留位用于对机器号位和/或时间戳位进行扩展。
8.一种分布式ID生成装置,其特征在于,所述分布式ID生成装置包括:
9.一种电子设备,其特征在于,所述电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的分布式ID生成程序,所述分布式
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有分布式ID生成程序,所述分布式ID生成程序被处理器执行时实现如权利要求1至7中任一项所述的分布式ID生成方法的步骤。
...【技术特征摘要】
1.一种分布式id生成方法,其特征在于,所述分布式id生成方法包括以下步骤:
2.如权利要求1所述的分布式id生成方法,其特征在于,所述获取新的机器号,包括:
3.如权利要求1或2所述的分布式id生成方法,其特征在于,所述从数据库的机器号列表中获取所有可复用的机器号对应的续期时间之前,包括:
4.如权利要求3所述的分布式id生成方法,其特征在于,所述获取当前实例的标识之前,包括:
5.如权利要求2所述的分布式id生成方法,其特征在于,所述对所有所述续期时间进行先后顺序排序之后,还包括:
6.如权利要求1所述的分布式id生成方法,其特征在于,所述方法还包括:
7...
【专利技术属性】
技术研发人员:吴永能,张志强,李玉峰,金海成,
申请(专利权)人:招商银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。