一种分布式全局唯一规则ID的生成方法技术

技术编号:37378697 阅读:12 留言:0更新日期:2023-04-27 07:21
本发明专利技术涉及一种分布式全局唯一规则ID的生成方法,其特征在于,包括以下步骤:页面新增规则指定数据向后台请求生成分布式全局唯一规则ID;后端接收请求开始生成规则ID;自定义组成策略通过传入每部分十进制的业务值以及所占的位数来组成一个二进制数字;默认组成策略则是通过获取业务系统的版本号,将版本号转成二进制数字然后形成workId;获取规则编号;获取序列值。本发明专利技术在不依赖机器时钟周期以及三方服务如数据库的条件下实现分布式规则ID的生成并且支持自定义策略实现规则ID各部分位数的自定义。位数的自定义。位数的自定义。

【技术实现步骤摘要】
一种分布式全局唯一规则ID的生成方法


[0001]本专利技术属于分布式ID生成
,尤其涉及一种分布式全局唯一规则ID的生成方法。

技术介绍

[0002]目前市面主流的分布式ID生成的方法有:
[0003]基于服务器的时钟周期如推特的雪花算法。雪花算法是用64位long类型的数据存储id,最高一位存储0或者1,0代表整数,1代表负数,一般都是0。41位存储毫秒时间戳,10位存储机器码,12存储序列号。
[0004]基于数据库号段模式如美团的leaf

segment算法。每次批量获取一个号段内的分布式Id,用完之后再去数据库获取新的号段内的分布式Id,分布式id的唯一性由数据库保证。
[0005]雪花算法的分布式ID生成算法强依赖机器的时钟周期,当发生时钟回拨的情况会出现分布式ID错乱的问题。
[0006]数据库号段模式在数据量大的场景需要和数据库频繁交互,I/0占用高。另外,数据库宕机将造成整个系统不可用。

技术实现思路

[0007]本专利技术目的在于提供一种用于航空部件减振性能测试的原位打印装置及方法,对航空部件减振性能的测试和减振零件结构提供了一种新的解决方案,更好的适用于航空部件各种复杂的表面外形,提供一种新的减振结构以保证减振性能满足要求外减轻减振零件。
[0008]为了实现这一目的,采用以下技术方案:
[0009]一种分布式全局唯一规则ID的生成方法,包括以下步骤:
[0010]步骤S1、页面新增规则指定数据向后台请求生成分布式全局唯一规则ID;
[0011]步骤S2、后端接收请求开始生成规则ID;
[0012]步骤S3、自定义组成策略通过传入每部分十进制的业务值以及所占的位数来组成一个二进制数字;
[0013]步骤S4、默认组成策略则是通过获取业务系统的版本号,将版本号转成二进制数字然后形成workId;
[0014]步骤S5、获取规则编号;
[0015]步骤S6、获取序列值。
[0016]进一步地,步骤S3包括:如果传入的位数超过自定义位数会抛出自定义位数异常,当传入的参数值通过校验之后,将每部分业务值转成预期位数的二进制数字,最终将所有的二进制数字全部拼接起来形成workId。
[0017]进一步地,步骤S5包括:规则编号默认占7位二进制数字,规则编号的获取有两种
方式:一种是系统集群部署的时候内置了每个节点的集群编号,获取每个节点不会重复的集群编号标识转化为二进制数字,然后形成规则编号加载到本地缓存;另外一种是自定义规则编号,首次加载组件时会生成规则ID相关的配置文件,在配置文件可自定义规则编号,然后系统内部会获取规则编号转成二进制数字,同样加载到本地缓存。
[0018]进一步地,步骤S6包括,序列值的生成会先从本地缓存获取,如果本地缓存有直接获取,如果本地缓存没有,这个时候会查看步骤s5中和规则编号一样的配置文件,获取配置文件中的规则号段值,规则号段值是一个范围,可根据业务实际并发量定义,获取之后一次性生成这个号段内所有的序列值加载到缓存中并更新配置文件为下一个号段,最后从本地缓存取出一个序列值。
[0019]与现有技术相比,本专利技术具有如下有益效果:
[0020]1.本专利技术提供的一种分布式全局唯一规则ID的生成方法,本方案的分布式Id生成没有不依赖三方服务如数据库,也不依赖机器时钟周期,主要通过本地缓存更新持久化以及机器集群模式下的自定义规则编号完成全局唯一分布式ID的生成。
[0021]2.本专利技术提供的一种分布式全局唯一规则ID的生成方法,本方法分布式Id的首部开放配置策略实现规则ID组成自定义更符合实际的业务需求。
[0022]3.本专利技术提供的一种分布式全局唯一规则ID的生成方法,规则号段实现在不依赖三方服务的前提下完成集群模式下的全局唯一规则ID生成以及生成效率的提高。
附图说明
[0023]图1为本专利技术流程图。
具体实施方式
[0024]以下基于实施例对本专利技术进行描述,但是本专利技术并不仅仅限于这些实施例。在下文对本专利技术的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本专利技术。为了避免混淆本专利技术的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
[0025]此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
[0026]同时,应当理解,在以下的描述中,“电路”是指由至少一个元件或子电路通过电气连接或电磁连接构成的导电回路。当称元件或电路“连接到”另一元件或称元件/电路“连接在”两个节点之间时,它可以是直接耦接或连接到另一元件或者可以存在中间元件,元件之间的连接可以是物理上的、逻辑上的、或者其结合。相反,当称元件“直接耦接到”或“直接连接到”另一元件时,意味着两者不存在中间元件。
[0027]除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
[0028]在本专利技术的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本专利技术的描述中,除非另有说明,“多个”的含义是两个或两个以上。
[0029]下面结合附图进一步说明本专利技术的具体内容。
[0030]在实际的业务系统集群场景中,分布式规则ID的生成和运用可以很好的唯一标识业务数据,并且此时的分布式ID的组成部分是有标准要求的。例如有如下场景:
[0031]某省管辖的多个市都部署了管理系统的集群,并且管理系统下面对接多个检测服务系统,管理系统通过在页面下发特定规则指令控制检测服务系统。每当页面下发一条规则指令,管理系统后台就需要生成一个满足特定规则的全局唯一性ID。很显然规则ID的生成是一个很重要的维度,首先规则ID的每一部分组成是有特定要求的,另外需要考虑在高并发场景下规则ID生成效率和唯一性。具体步骤如下:
[0032]s1、页面新增规则指定数据向后台请求生成分布式全局唯一规则ID。
[0033]s2、后端接收请求开始生成规则ID。规则ID各部组成位数默认是由28位可自定义组成的workId和7位的规则编号rule_number以及29位的序列值sequence_id生成。workId的生成见步骤s3,规则编号rule_number的生成见步骤s6,序列值sequence_id的生成见步骤s7。
[0034]s3、workId是组成规则ID的首部,默认为28位。在实际的业务场景中,分布式ID的生成除了全局唯一的特性外,往往还具有特定的组成和含义。本专利方法通过workId组成自定义的方式更加符合实际的业务场景。workId的生成方式支持两种策略,自定义组成策略和默认组成策略。自定义策略的实现步骤见s4,默认策略的实现步骤见本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式全局唯一规则ID的生成方法,其特征在于,包括以下步骤:步骤S1、页面新增规则指定数据向后台请求生成分布式全局唯一规则ID;步骤S2、后端接收请求开始生成规则ID;步骤S3、自定义组成策略通过传入每部分十进制的业务值以及所占的位数来组成一个二进制数字;步骤S4、默认组成策略则是通过获取业务系统的版本号,将版本号转成二进制数字然后形成workId;步骤S5、获取规则编号;步骤S6、获取序列值。2.根据权利要求1所述的一种分布式全局唯一规则ID的生成方法,其特征在于,步骤S3包括:如果传入的位数超过自定义位数会抛出自定义位数异常,当传入的参数值通过校验之后,将每部分业务值转成预期位数的二进制数字,最终将所有的二进制数字全部拼接起来形成workId。3.根据权利要求1所述的一种分布式全局唯一规则ID的生成方法,其特征在于,步骤S5包括:规则...

【专利技术属性】
技术研发人员:刘国文盛凯任京徽
申请(专利权)人:南京中孚信息技术有限公司
类型:发明
国别省市:

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

1