一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分布式ID生成方法、装置及系统

2022-06-22 14:34:17 来源:中国专利 TAG:

分布式id生成方法、装置及系统
技术领域
1.本发明涉及软件开发技术领域,特别是涉及一种分布式id生成方法及装置。


背景技术:

2.目前,随着软件系统的业务量增加,微服架构逐渐普及。在微服架构中,各服务做了拆分,随着时间的推移,各服务会产生大量的数据。为了缓解数据库的压力,一般的做法是对数据库进行分库分表。对数据分库分表后需要有一个唯一id(identity document身份标识号)来标识一条数据或消息,数据库的自增id显然不能满足需求。因此生成一个全局唯一的身份标识id是必要的。
3.传统的id生成方法主要有基于关系型数据库自增id、基于snowflake算法两类。然而,基于关系型数据库生成id的方式,其数据库的性能不高,大业务量的情况下,数据库的压力依旧很大。因此,为了降低数据库的压力,基于数据自增id的方式扩展出了一些改进方法,但流程过于复杂。类snowflake算法方案其存在的主要问题在强依赖于机器时钟,如果系统在运行过程中对机器时钟进行了回拨,则会导致系统重复发号或者会导致系统不可用。
4.综上所述,可见传统的id生成方法还存在以上不足。


技术实现要素:

5.基于此,有必要针对传统的id生成方法还存在的不足,提供一种分布式id生成方法及装置。
6.一种分布式id生成方法,包括步骤:
7.获取业务发送的id请求;
8.根据当前id和所述id请求判断是否存在可用于下发的id;
9.在存在可用于下发的id时,向所述业务返回id;
10.在不存在可用于下发的id时,向远程服务请求号码段;
11.根据所述号码段向所述业务返回id。
12.上述的分布式id生成方法,在获取业务发送的id请求后,根据当前id和id请求判断是否存在可用于下发的id。在存在可用于下发的id时,向业务返回id;在不存在可用于下发的id时,向远程服务请求号码段,并根据号码段向业务返回id。基于此,以号码段的方式向业务下发id,既保证了分布式id生成的性能,又简化了分布式id生成的流程,有利于提高了分布式id生成的效率。
13.在其中一个实施例中,id请求包括请求参数;其中,所述请求参数的参数类型为长整形。
14.在其中一个实施例中,根据当前id和所述id请求判断是否存在可用于下发的id的过程,包括步骤:
15.判断所述当前id和所述id请求之和,是否大于当前边界值;
16.若大于所述当前边界值,判定不存在可用于下发的id,否则判定存在可用于下发的id。
17.在其中一个实施例中,向远程服务请求号码段的过程,包括步骤:
18.向远程字典服务请求号码段。
19.在其中一个实施例中,在所述向所述业务返回id的过程之后,还包括步骤:
20.更新所述当前id。
21.在其中一个实施例中,在所述向所述业务返回id的过程之后,还包括步骤:
22.更新所述当前边界值。
23.一种分布式id生成装置,包括:
24.请求接收模块,用于获取业务发送的id请求;
25.id判断模块,用于根据当前id和所述id请求判断是否存在可用于下发的id;
26.第一下发模块,用于在存在可用于下发的id时,向所述业务返回id;
27.id更新模块,用于在不存在可用于下发的id时,向远程服务请求号码段;
28.第二下发模块,用于根据所述号码段向所述业务返回id。
29.上述的分布式id生成装置,在获取业务发送的id请求后,根据当前id和id请求判断是否存在可用于下发的id。在存在可用于下发的id时,向业务返回id;在不存在可用于下发的id时,向远程服务请求号码段,并根据号码段向业务返回id。基于此,以号码段的方式向业务下发id,既保证了分布式id生成的性能,又简化了分布式id生成的流程,有利于提高了分布式id生成的效率。
30.一种计算机存储介质,其上存储有计算机指令,计算机指令被处理器执行时实现上述任一实施例的分布式id生成方法。
31.上述的计算机存储介质,在获取业务发送的id请求后,根据当前id和id请求判断是否存在可用于下发的id。在存在可用于下发的id时,向业务返回id;在不存在可用于下发的id时,向远程服务请求号码段,并根据号码段向业务返回id。基于此,以号码段的方式向业务下发id,既保证了分布式id生成的性能,又简化了分布式id生成的流程,有利于提高了分布式id生成的效率。
32.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现上述任一实施例的分布式id生成方法。
33.上述的计算机设备,在获取业务发送的id请求后,根据当前id和id请求判断是否存在可用于下发的id。在存在可用于下发的id时,向业务返回id;在不存在可用于下发的id时,向远程服务请求号码段,并根据号码段向业务返回id。基于此,以号码段的方式向业务下发id,既保证了分布式id生成的性能,又简化了分布式id生成的流程,有利于提高了分布式id生成的效率。
34.一种分布式id生成系统,包括:
35.业务端,被配置为执行业务,并用于发送id请求;
36.id服务端,被配置为执行如上述任一实施例的分布式id生成方法;
37.远程服务端,被配置为根据所述id服务端的请求下发号码段。
38.上述的分布式id生成系统,id服务端在获取业务端的业务发送的id请求后,根据当前id和id请求判断是否存在可用于下发的id。在存在可用于下发的id时,向业务返回id;
在不存在可用于下发的id时,向远程服务请求号码段,并根据号码段向业务返回id。基于此,以号码段的方式向业务下发id,既保证了分布式id生成的性能,又简化了分布式id生成的流程,有利于提高了分布式id生成的效率。
附图说明
39.图1为一实施方式的分布式id生成系统结构示意图;
40.图2为一实施方式的分布式id生成方法流程图;
41.图3为另一实施方式的分布式id生成方法流程图;
42.图4为一实施方式的分布式id生成装置模块结构图;
43.图5为一实施方式的计算机内部构造示意图。
具体实施方式
44.为了更好地理解本发明的目的、技术方案以及技术效果,以下结合附图和实施例对本发明进行进一步的讲解说明。同时声明,以下所描述的实施例仅用于解释本发明,并不用于限定本发明。
45.本发明实施例提供了一种分布式id生成系统。
46.图1为一实施方式的分布式id生成系统结构示意图,如图1所示,一实施方式的分布式id生成系统包括:
47.业务端,被配置为执行业务,并用于发送id请求;
48.id服务端,被配置为执行任一实施例的分布式id生成方法;
49.远程服务端,被配置为根据id服务端的请求下发号码段。
50.如图1所示,业务端被配置为执行各业务类型的业务,包括一个或多个业务。各业务间存在id标识需求,即业务与id一一对应。
51.id服务端作为分布式id生成方法的执行端,用于作为业务端和远程服务端的中介交互一侧。
52.在其中一个实施例中,id服务端包括一个或多个id生成服务,一id生成服务可对接一业务或多业务,以此提高id生成的效率以及应对多业务id请求并发的需求。
53.远程服务端作为id服务端的被请求侧,用于下发号码段,由id服务端根据号码段构建下发id或更新下发id。通过远程服务端,降低id服务端的运行压力,提高id生成的效率。
54.在其中一个实施例中,远程服务端用于运行远程字典服务(remote dictionary server)。
55.在其中一个实施例中,id服务端在内存中直接生成id,有利于提高id生成的性能。同时,id服务端结合远程字典服务(redis)可使用lua脚本的特性,完美的解决了当使用关系形数据库的并问题,优化id服务端在执行基于数据自增id此类id生成的性能。
56.基于此,本发明实施例还提供一种分布式id生成方法,分布式id生成方法可依托分布式id生成系统的id服务端执行,或者由独立的运行端执行。
57.图2为一实施方式的分布式id生成方法流程图,如图2所示,一实施方式的分布式id生成方法包括步骤s100至步骤s104:
58.s100,获取业务发送的id请求;
59.s100,根据当前id和id请求判断是否存在可用于下发的id;
60.s100,在存在可用于下发的id时,向业务返回id;
61.s100,在不存在可用于下发的id时,向远程服务请求号码段;
62.s100,根据号码段向业务返回id。
63.其中,id请求可由业务主动发送或被动发送。业务可根据自身的id需求进行id请求的发送。
64.在其中一个实施例中,id请求包括请求参数;其中,请求参数的参数类型为长整形。由业务定义请求参数(service、size),对id生成服务进行访问。
65.在id生成服务一侧中,预先配置有各id,并根据各业务的请求进行相应下发。id的下发以轮询或递增等方式进行,将当前id进行下发,下发后更新当前id。
66.基于此,在其中一个实施例中,图3为另一实施方式的分布式id生成方法流程图,如图3所示,步骤s101中根据当前id和id请求判断是否存在可用于下发的id的过程,包括步骤s200和步骤s201:
67.s200,判断当前id和id请求之和,是否大于当前边界值;
68.s201,若大于当前边界值,判定不存在可用于下发的id,否则判定存在可用于下发的id。
69.其中,id生成服务存储的id包括多个号码,当前边界值为存储的id中的最大值。
70.若当前id和id请求之和大于当前边界值,说明当前id生成服务存储的号码无法满足id下发,即判定不存在可用于下发的id,否则判定存在可用于下发的id。
71.在存在可用于下发的id时,向业务返回id。其中,反馈的id可以为当前id。
72.基于此,如图3所示,在步骤s102中向业务返回id的过程之后,还包括步骤s300:
73.s300,更新当前id。
74.更新当前id,以满足下次id下发的需求。
75.在其中一个实施例中,如图3所示,在步骤s105中向业务返回id的过程之后,还包括步骤:
76.s301,更新当前边界值。
77.更新当前边界值,以满足号码段更新后,步骤s200的判定更新需求。
78.在其中一个实施例中,如图3所示,步骤s103中向远程服务请求号码段的过程,包括步骤:
79.s400,向远程字典服务请求号码段。
80.向远程字典服务请求号码段请求号码段,基于远程字典服务的特性进行id生成方式的确定。
81.以下以一具体例子对号码段的优势进行及解释。常见的id生成方式,如关系型数据库的自增方式,其是每一个id都向数据库进行申请,会导致性能低下,并且对数据库的频繁访问会给数据造成巨大的压力。
82.采用号码段加载的模式从远程字典服务中一次加载一批id。一批id可以看成是一个id范围,例如(100,200],这个100到200称为一个"号码段"。id生成服务向远程字典服务申请一个号码段,加载到内存中,再采用自增的方式来生成id,这个号码段用完后,再次向
远程字典服务申请一个新的号段,这样对远程字典服务的压力就减轻了很多,同时内存中直接生成id,性能则提高了很多。作为一个较优的实施方式,id生成服务结合远程字典服务可以使用lua脚本的特性,完美的解决了当使用关系形数据库的并问题。
83.号码段结构表如下表所示:
84.servicemax_idsteptestserver130001000
85.其中,service代表业务类型,不同的业务的id相互隔离;max_id代表当前id的最大可用id;step代表号码段的长度,可以根据业务的qps(每秒查询率)来设置一个合理的长度。
86.上述任一实施例的分布式id生成方法,在获取业务发送的id请求后,根据当前id和id请求判断是否存在可用于下发的id。在存在可用于下发的id时,向业务返回id;在不存在可用于下发的id时,向远程服务请求号码段,并根据号码段向业务返回id。基于此,以号码段的方式向业务下发id,既保证了分布式id生成的性能,又简化了分布式id生成的流程,有利于提高了分布式id生成的效率。
87.本发明实施例还提供了一种分布式id生成装置。
88.图4为一实施方式的分布式id生成装置模块结构图,如图4所示,一实施方式的分布式id生成装置包括:
89.请求接收模块100,用于获取业务发送的id请求;
90.id判断模块101,用于根据当前id和id请求判断是否存在可用于下发的id;
91.第一下发模块102,用于在存在可用于下发的id时,向业务返回id;
92.id更新模块103,用于在不存在可用于下发的id时,向远程服务请求号码段;
93.第二下发模块104,用于根据号码段向业务返回id。
94.上述的分布式id生成装置,在获取业务发送的id请求后,根据当前id和id请求判断是否存在可用于下发的id。在存在可用于下发的id时,向业务返回id;在不存在可用于下发的id时,向远程服务请求号码段,并根据号码段向业务返回id。基于此,以号码段的方式向业务下发id,既保证了分布式id生成的性能,又简化了分布式id生成的流程,有利于提高了分布式id生成的效率。
95.本发明实施例还提供了一种计算机存储介质,其上存储有计算机指令,该指令被处理器执行时实现上述的分布式id生成方法中任一实施例。
96.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
97.或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、终端、或者网络设备等)执行本发明各个实施例方法的全部或部分。而前述的存储介质包括:移动存储设备、ram、rom、磁碟或者光盘等各种可以存储程序代码的介质。
98.与上述的计算机存储介质对应的是,在一个实施例中还提供一种计算机设备,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行程序时实现上述的分布式id生成方法中任一实施例。
99.该计算机设备可以是终端,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述的分布式id生成方法中任一实施例。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
100.上述计算机设备,在获取业务发送的id请求后,根据当前id和id请求判断是否存在可用于下发的id。在存在可用于下发的id时,向业务返回id;在不存在可用于下发的id时,向远程服务请求号码段,并根据号码段向业务返回id。基于此,以号码段的方式向业务下发id,既保证了分布式id生成的性能,又简化了分布式id生成的流程,有利于提高了分布式id生成的效率。
101.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
102.以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献