分布式全局唯一ID生成方法、装置、设备和存储介质制造方法及图纸

技术编号:19692215 阅读:15 留言:0更新日期:2018-12-08 11:16
本发明专利技术涉及一种分布式全局唯一ID生成方法、装置、设备和存储介质,所述方法包括:S1:设定分布式全局唯一ID的总位数,将分布式全局唯一ID划分为若干个区间;设定每个区间的位数;所述分布式全局唯一ID由所有区间拼接而成;S2:生成时间区间位,所述时间区间位为当前毫秒长整数减去当日零点毫秒长整数;S3:根据生成请求提供的节点序列号,生成节点序列位;S4:根据配置文件中的当前序列最大值以递增方式生成并发递增位;S5:将生成请求提供的业务渠道号,做为长整数返回,生成业务渠道号;S6:将从步骤S2‑S5中获得的区间位拼接获得一个全局分布式唯一ID。上述方法不依赖于数据库自增序列,优化了高频生成请求的生成效率。

【技术实现步骤摘要】
分布式全局唯一ID生成方法、装置、设备和存储介质
本专利技术涉及数据处理
,尤其涉及分布式全局唯一ID生成方法、装置、设备和存储介质。
技术介绍
现在基于计算机技术的业务系统中,为了分辨和管理,对每一项业务均生成一个与之对应的具有唯一性的ID,正如人们的身份证一样。目前针对分布式数据库的全局ID的主流生成方法有以下两种方案:UUID/GUID:它是32位26个字母和数字组成的字符串。这种方案大部分程序语言和数据库均提供直接支持。如果用这种方式,全局唯一ID不需要额外任何开发工作量。但这种方式为数据库的ID,其索引效率非常低效,因为它的生成32位字符串是随机的。Snowflake(雪花算法),它是18位10进制数字组成,41位Bits的timestamp+10位Bits自定义的机器码+12位Bits累加计数器组成。这算法生成的ID不但是在主流数据库数字类型Interger长度内的十进制数字,关键还是在一定时间内连续自增排序的,且不会重复或并发的问题。但是该方法至少要18位数字起。有字长的限制。上述两种方案无法独立运作,需要依赖数据库实现运行,因此,直接导致其低性能、高延迟和过长位描述的缺陷。
技术实现思路
有鉴于此,有必要针对分布式全局唯一ID生成方法,低性能、高延迟和过长位描述的缺陷,提供一种分布式全局唯一ID生成方法、装置、设备和存储介质。一种分布式全局唯一ID生成方法,用于分布式数据库和分布式系统,所述生成方法包括以下步骤:S1:设定分布式全局唯一ID的总位数,将分布式全局唯一ID划分为若干个区间;设定每个区间的位数;所述分布式全局唯一ID由所有区间拼接而成;S2:生成时间区间位,所述时间区间位为当前毫秒长整数减去当日零点毫秒长整数;S3:接收服务器节点发送的生成分布式全局唯一ID的生成请求,所述生成请求携带了唯一节点序列号,根据所述生成请求提供的节点序列号,生成节点序列位;S4:根据服务器预设的配置项,生成配置文件,并根据该配置文件中的当前序列最大值以递增方式生成并发递增位;S5:接收客户端发送的生成分布式全局唯一ID的生成请求,所述生成请求携带了唯一业务渠道号,将所述生成请求提供的业务渠道号,做为长整数返回转换的整数和长度,将整数值作为指定大小的整数生成业务渠道号;S6:将从步骤S2-S5中获得的时间区间位、节点序列位、并发递增位和业务渠道号拼接获得一个分布式唯一ID。在其中一个实施例中,所述步骤S2还包括将所述时间区间位进行左移位操作,左移动位数个数为21位。在其中一个实施例中,所述步骤S3还包括将所述节点序列位进行左移位操作,左移动位数个数为18位。在其中一个实施例中,所述步骤S4还包括将所述并发递增位进行左移位操作,左移动位数个数为8位,具体步骤如下:节点中通过两个变量A对B,A记录当前生成请求的当前时间毫秒值,B记录递增数,从0开始,当请求毫秒数与A相同,则将B自增加1并且与10位并发递增掩码做并且操作,若当前掩码后值为0,则将A的值设置为下一个时间毫秒数,B值从0开始继续累加,B值做为长整数向左移动8位,若请求毫秒数与A不同,则将A设置为新的请求毫秒数,并将B值置为0,B值做为长整数向左移动8位。在其中一个实施例中,将所述时间区间位、所述节点序列位、所述并发递增位以及所述业务渠道号,通过位操作符取或操作,获得一个新的长整数,截取所述新的长整数后48位比特位为当日内唯一ID的比特位。在其中一个实施例中,将所述当日内唯一ID的比特位进行BASE64位编码操作,编码后的结果为8位字符。一种分布式全局唯一ID生成装置,用于分布式数据库和分布式系统,所述生成装置包括:设定单元,用于设定分布式全局唯一ID的总位数,将分布式全局唯一ID划分为若干个区间;设定每个区间的位数;所述分布式全局唯一ID由所有区间拼接而成;生成时间位单元,用于生成时间区间位,所述时间区间位为当前毫秒长整数减去当日零点毫秒长整数;生成节点位单元,用于接收服务器节点发送的生成分布式全局唯一ID的生成请求,所述生成请求携带了唯一节点序列号,根据所述生成请求提供的节点序列号,生成节点序列位;生成并发递增单元,用于根据服务器预设的配置项,生成配置文件,并根据该配置文件中的当前序列最大值以递增方式生成并发递增位;生成渠道号单元,用于接收客户端发送的生成分布式全局唯一ID的生成请求,所述生成请求携带了唯一业务渠道号,将所述生成请求提供的业务渠道号,做为长整数返回转换的整数和长度,将整数值作为指定大小的整数生成业务渠道号;拼接单元,用于将从步骤S2-S5中获得的时间区间位、节点序列位、并发递增位和业务渠道号拼接获得一个分布式唯一ID。在其中一个实施例中,所述生成时间位单元还用于将所述时间区间位进行左移位操作,左移动位数个数为21位;生成节点位单元还用于将所述节点序列位进行左移位操作,左移动位数个数为18位;所述并发递增单元还用于将所述并发递增位进行左移位操作,左移动位数个数为8位。一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述方法的步骤。一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述方法的步骤。上述分布式全局唯一ID生成方法、装置、设备和存储介质,通过设定分布式全局唯一ID的总位数,将分布式全局唯一ID划分为若干个区间;设定每个区间的位数;所述分布式全局唯一ID由所有区间拼接而成。生成时间区间位,所述时间区间位为当前毫秒长整数减去当日零点毫秒长整数,根据生成请求提供的节点序列号,生成节点序列位,根据配置文件中的当前序列最大值以递增方式生成并发递增位,将生成请求提供的业务渠道号,做为长整数返回,生成业务渠道号,将从步骤S2-S5中获得的区间拼接获得一个分布式唯一ID,不需要依赖于数据库自增序列,不需要分布式ID生成服务器,减少了系统操作,优化了高频生成请求的生成效率。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。图1为一个实施例中提供的分布式全局唯一ID生成方法的流程图;图2为一个实施例中分布式48位唯一ID的区间位示意图;图3为一个实施例中分布式全局唯一ID生成装置的结构框图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。本
技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本专利技术的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。作为一个较好的实施例,如图1所示,一种分布式全局唯一ID生成方法,用于分布式数据库和分布式系统,该生成方法包括以下步骤:S1:设定分布式全局唯一ID的总位数,将分布式全局唯一ID划分为若干个区间;设定每个区间的位数;分本文档来自技高网
...

【技术保护点】
1.一种分布式全局唯一ID生成方法,用于分布式数据库和分布式系统,其特征在于,所述生成方法包括以下步骤:S1:设定分布式全局唯一ID的总位数,将分布式全局唯一ID划分为若干个区间;设定每个区间的位数;所述分布式全局唯一ID由所有区间拼接而成;S2:生成时间区间位,所述时间区间位为当前毫秒长整数减去当日零点毫秒长整数;S3:接收服务器节点发送的生成分布式全局唯一ID的生成请求,所述生成请求携带了唯一节点序列号,根据所述生成请求提供的节点序列号,生成节点序列位;S4:根据服务器预设的配置项,生成配置文件,并根据该配置文件中的当前序列最大值以递增方式生成并发递增位;S5:接收客户端发送的生成分布式全局唯一ID的生成请求,所述生成请求携带了唯一业务渠道号,将所述生成请求提供的业务渠道号,做为长整数返回转换的整数和长度,将整数值作为指定大小的整数生成业务渠道号;S6:将从步骤S2‑S5中获得的时间区间位、节点序列位、并发递增位和业务渠道号拼接获得一个分布式全局唯一ID。

【技术特征摘要】
1.一种分布式全局唯一ID生成方法,用于分布式数据库和分布式系统,其特征在于,所述生成方法包括以下步骤:S1:设定分布式全局唯一ID的总位数,将分布式全局唯一ID划分为若干个区间;设定每个区间的位数;所述分布式全局唯一ID由所有区间拼接而成;S2:生成时间区间位,所述时间区间位为当前毫秒长整数减去当日零点毫秒长整数;S3:接收服务器节点发送的生成分布式全局唯一ID的生成请求,所述生成请求携带了唯一节点序列号,根据所述生成请求提供的节点序列号,生成节点序列位;S4:根据服务器预设的配置项,生成配置文件,并根据该配置文件中的当前序列最大值以递增方式生成并发递增位;S5:接收客户端发送的生成分布式全局唯一ID的生成请求,所述生成请求携带了唯一业务渠道号,将所述生成请求提供的业务渠道号,做为长整数返回转换的整数和长度,将整数值作为指定大小的整数生成业务渠道号;S6:将从步骤S2-S5中获得的时间区间位、节点序列位、并发递增位和业务渠道号拼接获得一个分布式全局唯一ID。2.根据权利要求1所述的分布式全局唯一ID生成方法,其特征在于,所述步骤S2还包括将所述时间区间位进行左移位操作,左移动位数个数为21位。3.根据权利要求1所述的分布式全局唯一ID生成方法,其特征在于,所述步骤S3还包括将所述节点序列位进行左移位操作,左移动位数个数为18位。4.根据权利要求1所述的分布式全局唯一ID生成方法,其特征在于,所述步骤S4还包括:节点中通过两个变量A对B,A记录当前生成请求的当前时间毫秒值,B记录递增数,从0开始,当请求毫秒数与A相同,则将B自增加1并且与10位并发递增掩码做并且操作,若当前掩码后值为0,则将A的值设置为下一个时间毫秒数,B值从0开始继续累加,B值做为长整数向左移动8位,若请求毫秒数与A不同,则将A设置为新的请求毫秒数,并将B值置为0,B值做为长整数向左移动8位。5.根据权利要求1-4所述的任一方法,其特征在于,将所述时间区间位、所述节点序列位、所述并发递增位以及所述业务渠道号,通过位操作符取或操作,获得一个新的长整数,截取所述新的长...

【专利技术属性】
技术研发人员:张辉
申请(专利权)人:深圳壹账通智能科技有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1