CN116010498A - 一种分布式全局唯一规则id的生成方法 - Google Patents
一种分布式全局唯一规则id的生成方法 Download PDFInfo
- Publication number
- CN116010498A CN116010498A CN202211704769.2A CN202211704769A CN116010498A CN 116010498 A CN116010498 A CN 116010498A CN 202211704769 A CN202211704769 A CN 202211704769A CN 116010498 A CN116010498 A CN 116010498A
- Authority
- CN
- China
- Prior art keywords
- rule
- digits
- custom
- value
- local cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种分布式全局唯一规则ID的生成方法,其特征在于,包括以下步骤:页面新增规则指定数据向后台请求生成分布式全局唯一规则ID;后端接收请求开始生成规则ID;自定义组成策略通过传入每部分十进制的业务值以及所占的位数来组成一个二进制数字;默认组成策略则是通过获取业务系统的版本号,将版本号转成二进制数字然后形成workId;获取规则编号;获取序列值。本发明在不依赖机器时钟周期以及三方服务如数据库的条件下实现分布式规则ID的生成并且支持自定义策略实现规则ID各部分位数的自定义。
Description
技术领域
本发明属于分布式ID生成技术领域,尤其涉及一种分布式全局唯一规则ID的生成方法。
背景技术
目前市面主流的分布式ID生成的方法有:
基于服务器的时钟周期如推特的雪花算法。雪花算法是用64位long类型的数据存储id,最高一位存储0或者1,0代表整数,1代表负数,一般都是0。41位存储毫秒时间戳,10位存储机器码,12存储序列号。
基于数据库号段模式如美团的leaf-segment算法。每次批量获取一个号段内的分布式Id,用完之后再去数据库获取新的号段内的分布式Id,分布式id的唯一性由数据库保证。
雪花算法的分布式ID生成算法强依赖机器的时钟周期,当发生时钟回拨的情况会出现分布式ID错乱的问题。
数据库号段模式在数据量大的场景需要和数据库频繁交互,I/0占用高。另外,数据库宕机将造成整个系统不可用。
发明内容
本发明目的在于提供一种用于航空部件减振性能测试的原位打印装置及方法,对航空部件减振性能的测试和减振零件结构提供了一种新的解决方案,更好的适用于航空部件各种复杂的表面外形,提供一种新的减振结构以保证减振性能满足要求外减轻减振零件。
为了实现这一目的,采用以下技术方案:
一种分布式全局唯一规则ID的生成方法,包括以下步骤:
步骤S1、页面新增规则指定数据向后台请求生成分布式全局唯一规则ID;
步骤S2、后端接收请求开始生成规则ID;
步骤S3、自定义组成策略通过传入每部分十进制的业务值以及所占的位数来组成一个二进制数字;
步骤S4、默认组成策略则是通过获取业务系统的版本号,将版本号转成二进制数字然后形成workId;
步骤S5、获取规则编号;
步骤S6、获取序列值。
进一步地,步骤S3包括:如果传入的位数超过自定义位数会抛出自定义位数异常,当传入的参数值通过校验之后,将每部分业务值转成预期位数的二进制数字,最终将所有的二进制数字全部拼接起来形成workId。
进一步地,步骤S5包括:规则编号默认占7位二进制数字,规则编号的获取有两种方式:一种是系统集群部署的时候内置了每个节点的集群编号,获取每个节点不会重复的集群编号标识转化为二进制数字,然后形成规则编号加载到本地缓存;另外一种是自定义规则编号,首次加载组件时会生成规则ID相关的配置文件,在配置文件可自定义规则编号,然后系统内部会获取规则编号转成二进制数字,同样加载到本地缓存。
进一步地,步骤S6包括,序列值的生成会先从本地缓存获取,如果本地缓存有直接获取,如果本地缓存没有,这个时候会查看步骤s5中和规则编号一样的配置文件,获取配置文件中的规则号段值,规则号段值是一个范围,可根据业务实际并发量定义,获取之后一次性生成这个号段内所有的序列值加载到缓存中并更新配置文件为下一个号段,最后从本地缓存取出一个序列值。
与现有技术相比,本发明具有如下有益效果:
1.本发明提供的一种分布式全局唯一规则ID的生成方法,本方案的分布式Id生成没有不依赖三方服务如数据库,也不依赖机器时钟周期,主要通过本地缓存更新持久化以及机器集群模式下的自定义规则编号完成全局唯一分布式ID的生成。
2.本发明提供的一种分布式全局唯一规则ID的生成方法,本方法分布式Id的首部开放配置策略实现规则ID组成自定义更符合实际的业务需求。
3.本发明提供的一种分布式全局唯一规则ID的生成方法,规则号段实现在不依赖三方服务的前提下完成集群模式下的全局唯一规则ID生成以及生成效率的提高。
附图说明
图1为本发明流程图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
同时,应当理解,在以下的描述中,“电路”是指由至少一个元件或子电路通过电气连接或电磁连接构成的导电回路。当称元件或电路“连接到”另一元件或称元件/电路“连接在”两个节点之间时,它可以是直接耦接或连接到另一元件或者可以存在中间元件,元件之间的连接可以是物理上的、逻辑上的、或者其结合。相反,当称元件“直接耦接到”或“直接连接到”另一元件时,意味着两者不存在中间元件。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
下面结合附图进一步说明本发明的具体内容。
在实际的业务系统集群场景中,分布式规则ID的生成和运用可以很好的唯一标识业务数据,并且此时的分布式ID的组成部分是有标准要求的。例如有如下场景:
某省管辖的多个市都部署了管理系统的集群,并且管理系统下面对接多个检测服务系统,管理系统通过在页面下发特定规则指令控制检测服务系统。每当页面下发一条规则指令,管理系统后台就需要生成一个满足特定规则的全局唯一性ID。很显然规则ID的生成是一个很重要的维度,首先规则ID的每一部分组成是有特定要求的,另外需要考虑在高并发场景下规则ID生成效率和唯一性。具体步骤如下:
s1、页面新增规则指定数据向后台请求生成分布式全局唯一规则ID。
s2、后端接收请求开始生成规则ID。规则ID各部组成位数默认是由28位可自定义组成的workId和7位的规则编号rule_number以及29位的序列值sequence_id生成。workId的生成见步骤s3,规则编号rule_number的生成见步骤s6,序列值sequence_id的生成见步骤s7。
s3、workId是组成规则ID的首部,默认为28位。在实际的业务场景中,分布式ID的生成除了全局唯一的特性外,往往还具有特定的组成和含义。本专利方法通过workId组成自定义的方式更加符合实际的业务场景。workId的生成方式支持两种策略,自定义组成策略和默认组成策略。自定义策略的实现步骤见s4,默认策略的实现步骤见s5。
s4、自定义组成策略通过传入每部分十进制的业务值以及所占的位数来组成一个二进制数字。如果传入的位数超过自定义位数会抛出自定义位数异常,当传入的参数值通过校验之后,将每部分业务值转成预期位数的二进制数字,最终将所有的二进制数字全部拼接起来形成workId。
s5、默认组成策略则是通过获取业务系统的版本号,将版本号转成二进制数字然后形成workId。
s6、规则编号rule_number是保证全局唯一的重要组成部分,所以在集群模式下每个节点的规则编号必须唯一。规则编号默认占7位二进制数字,规则编号的获取有两种方式:一种是系统集群部署的时候内置了每个节点的集群编号,获取每个节点不会重复的集群编号标识转化为二进制数字,然后形成规则编号加载到本地缓存;另外一种是自定义规则编号,首次加载组件时会生成规则ID相关的配置文件,在配置文件可自定义规则编号,然后系统内部会获取规则编号转成二进制数字,同样加载到本地缓存。
s7、序列值sequence_id是保证节点内部高并发场景下唯一的重要组成部分。序列值的生成会先从本地缓存获取,如果本地缓存有直接获取,如果本地缓存没有,这个时候会查看步骤s6中和规则编号一样的配置文件。获取配置文件中的规则号段值,规则号段值是一个范围,可根据业务实际并发量定义,获取之后一次性生成这个号段内所有的序列值加载到缓存中并更新配置文件为下一个号段,最后从本地缓存取出一个序列值。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (4)
1.一种分布式全局唯一规则ID的生成方法,其特征在于,包括以下步骤:
步骤S1、页面新增规则指定数据向后台请求生成分布式全局唯一规则ID;
步骤S2、后端接收请求开始生成规则ID;
步骤S3、自定义组成策略通过传入每部分十进制的业务值以及所占的位数来组成一个二进制数字;
步骤S4、默认组成策略则是通过获取业务系统的版本号,将版本号转成二进制数字然后形成workId;
步骤S5、获取规则编号;
步骤S6、获取序列值。
2.根据权利要求1所述的一种分布式全局唯一规则ID的生成方法,其特征在于,步骤S3包括:如果传入的位数超过自定义位数会抛出自定义位数异常,当传入的参数值通过校验之后,将每部分业务值转成预期位数的二进制数字,最终将所有的二进制数字全部拼接起来形成workId。
3.根据权利要求1所述的一种分布式全局唯一规则ID的生成方法,其特征在于,步骤S5包括:规则编号默认占7位二进制数字,规则编号的获取有两种方式:一种是系统集群部署的时候内置了每个节点的集群编号,获取每个节点不会重复的集群编号标识转化为二进制数字,然后形成规则编号加载到本地缓存;另外一种是自定义规则编号,首次加载组件时会生成规则ID相关的配置文件,在配置文件可自定义规则编号,然后系统内部会获取规则编号转成二进制数字,同样加载到本地缓存。
4.根据权利要求1所述的一种分布式全局唯一规则ID的生成方法,其特征在于,步骤S6包括,序列值的生成会先从本地缓存获取,如果本地缓存有直接获取,如果本地缓存没有,这个时候会查看步骤s5中和规则编号一样的配置文件,获取配置文件中的规则号段值,规则号段值是一个范围,可根据业务实际并发量定义,获取之后一次性生成这个号段内所有的序列值加载到缓存中并更新配置文件为下一个号段,最后从本地缓存取出一个序列值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211704769.2A CN116010498A (zh) | 2022-12-29 | 2022-12-29 | 一种分布式全局唯一规则id的生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211704769.2A CN116010498A (zh) | 2022-12-29 | 2022-12-29 | 一种分布式全局唯一规则id的生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116010498A true CN116010498A (zh) | 2023-04-25 |
Family
ID=86022426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211704769.2A Pending CN116010498A (zh) | 2022-12-29 | 2022-12-29 | 一种分布式全局唯一规则id的生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116010498A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117520460A (zh) * | 2024-01-05 | 2024-02-06 | 成都安世赛斯特软件技术有限公司 | 一种自定义编号生成管理方法及系统 |
-
2022
- 2022-12-29 CN CN202211704769.2A patent/CN116010498A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117520460A (zh) * | 2024-01-05 | 2024-02-06 | 成都安世赛斯特软件技术有限公司 | 一种自定义编号生成管理方法及系统 |
CN117520460B (zh) * | 2024-01-05 | 2024-04-02 | 成都安世赛斯特软件技术有限公司 | 一种自定义编号生成管理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108959386B (zh) | 分布式全局唯一id生成方法、装置、设备和存储介质 | |
CN111767143B (zh) | 交易数据处理方法、装置、设备及系统 | |
CN110222048A (zh) | 序列生成方法、装置、计算机设备及存储介质 | |
CN110619114B (zh) | 流水号生成方法及系统 | |
CN107454203A (zh) | 在分布式系统中生成唯一id的方法 | |
CN108241715A (zh) | 一种分布式数据库主键生成方法及装置 | |
CN103838770A (zh) | 一种数据逻辑分区的方法和系统 | |
CN103246659A (zh) | 键值数据查询的方法和装置 | |
CN109167819B (zh) | 数据同步系统、方法、装置及存储介质 | |
CN112181306A (zh) | 一种号段模式下生成分布式id的方法 | |
CN109885614B (zh) | 一种数据同步的方法和装置 | |
CN116010498A (zh) | 一种分布式全局唯一规则id的生成方法 | |
CN108399175B (zh) | 一种数据存储、查询方法及其装置 | |
CN108388613B (zh) | 一种缓存数据的更新方法 | |
WO2020000486A1 (zh) | 数据处理方法及装置 | |
CN108647193B (zh) | 一种可应用于分布式系统的唯一标识符生成方法及装置 | |
CN109951541A (zh) | 一种流水号生成方法及服务器 | |
CN110807035A (zh) | 流水号生成方法、装置、设备及存储介质 | |
CN111930765A (zh) | 一种分布式系统唯一流水号生成的方法 | |
CN106993022B (zh) | 用于集群的标识管理方法、标识服务器及相应的系统 | |
CN112231319B (zh) | 一种地铁监控系统的实时数据存储和查询方法 | |
CN112182005A (zh) | 一种流水号生成方法及装置 | |
CN111651459A (zh) | 一种基于Redis的业务ID生成方法 | |
CN111741038A (zh) | 数据传输方法和数据传输装置 | |
CN115577042A (zh) | 分布式系统递增数字id生成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |