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

业务序列号生成方法、发号器组件、设备和存储介质与流程

2021-12-01 01:54:00 来源:中国专利 TAG:


1.本发明涉及大数据技术领域,尤其涉及一种业务序列号生成方法、发号器组件、设备和存储介质。


背景技术:

2.随着物联网技术的不断发展,序列号的应用场景越来越多,例如,业务办理的排队号码、订单号等,以医疗领域为例,随着智慧医疗的不断发展,使用大数据创建医疗健康服务云平台,可以实现医疗资源的共享,大大提高医疗机构的效率,像现在医院的预约挂号、电子病历、检查报告等数据需进行标识管理,而相关技术的序列号生成通常采用数据库的自增主键或uuid(universally unique identifier,通用唯一识别码),用于表示唯一标识记录,当数据量越来越大时,需对数据进行分库分表,数据库自带的自增主键就无法满足需求,uuid性能比较差,影响数据库插入和查询的性能,而面对不同的业务应用方,只能生成无含义的序列号,不能满足分布式的环境中上游应用系统的自身业务需求,需要根据不同的业务需求单独部署服务,使用不够方便。


技术实现要素:

3.本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种业务序列号生成方法、发号器组件、设备和存储介质,可以生成具有业务含义的业务序列号,满足上游应用层的各种业务需求。
4.第一方面,本发明实施例提供了一种业务序列号生成方法,应用于分布式系统的发号器组件,所述分布式系统还包括管理端和应用层,所述发号器组件以插件形式加载至所述应用层,所述业务序列号生成方法包括:
5.读取所述管理端配置的序列号生成规则,其中,所述序列号生成规则包括发号器名称、缓存步长、递增步长和预设业务格式;
6.根据所述缓存步长生成对应的标识号段,并将所述标识号段预先存储至缓冲池,其中,所述标识号段用于提供当前索引值;
7.接收所述应用层的序列号获取请求;
8.响应于所述序列号获取请求,从所述标识号段中获取当前索引值;
9.判断所述序列号生成规则是否存在预设业务格式;
10.若存在预设业务格式,则根据所述当前索引值和所述预设业务格式生成与所述发号器名称对应的业务序列号;
11.根据所述递增步长得到多个依次递增的业务序列号,并向所述应用层返回所述业务序列号。
12.在一些实施例中,所述根据所述缓存步长生成对应的标识号段,并将所述标识号段预先存储至缓冲池,包括:
13.根据所述缓存步长生成标识号段,采用分片原理对所述标识号段进行分段得到多
个隔离号段;
14.将多个所述隔离号段分别存储到不同的阻塞队列中。
15.在一些实施例中,所述应用层设置有多个机器节点,多个所述机器节点均加载有发号器组件;所述采用分片原理对所述标识号段进行分段得到多个隔离号段,包括:
16.根据所述应用层的机器节点数量对所述标识号段进行等量划分得到多个隔离号段;
17.将多个所述隔离号段分配至不同的机器节点。
18.在一些实施例中,所述从所述标识号段中获取当前索引值之前,还包括:
19.判断所述缓冲池中的标识号段是否耗尽;
20.若所述标识号段耗尽,重新根据所述缓存步长生成新的标识号段并存储至缓冲池;
21.所述从所述标识号段中获取当前索引值之后,还包括:
22.将所述当前索引值加1后回写以表示所述当前索引值被占用。
23.在一些实施例中,所述重新根据所述缓存步长生成新的标识号段并存储至缓冲池之前,还包括:
24.获取前一个索引值;
25.将所述前一个索引值加上所述缓存步长赋值给当前索引值。
26.在一些实施例中,所述根据所述递增步长得到多个依次递增的业务序列号,包括:
27.获取所述管理端配置的启动参数,其中,所述启动参数包括开始索引值;
28.以所述开始索引值作为起始值,根据所述递增步长得到多个依次递增的业务序列号。
29.在一些实施例中,所述预设业务格式包括字符串、固定长度、日期、标记符至少之一;所述业务序列号生成方法还包括:
30.若不存在预设业务格式,则直接根据所述当前索引值返回生成与所述发号器名称对应的业务序列号。
31.第二方面,本发明实施例还提供了一种发号器组件,设置于分布式系统,所述分布式系统还包括管理端和应用层,所述发号器组件以插件形式加载至所述应用层,所述发号器组件包括:
32.规则读取模块,用于读取所述管理端配置的序列号生成规则,其中,所述序列号生成规则包括发号器名称、缓存步长、递增步长和预设业务格式;
33.预分配模块,用于根据所述缓存步长生成对应的标识号段,并将所述标识号段预先存储至缓冲池,其中,所述标识号段用于提供当前索引值;
34.请求获取模块,用于接收所述应用层的序列号获取请求;
35.当前索引获取模块,用于从所述标识号段中获取当前索引值;
36.格式判断模块,用于判断所述序列号生成规则是否存在预设业务格式;
37.第一生成模块,用于在预设业务格式存在的情况下,根据所述当前索引值和所述预设业务格式生成与所述发号器名称对应的业务序列号;
38.业务序列号返回模块,用于根据所述递增步长得到多个依次递增的业务序列号,以及向所述应用层返回所述业务序列号。
39.第三方面,本发明实施例还提供了一种计算机设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的业务序列号生成方法。
40.第四方面,本发明实施例还提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行如上述第一方面所述的业务序列号生成方法。
41.本发明实施例包括:读取所述管理端配置的序列号生成规则,其中,所述序列号生成规则包括发号器名称、缓存步长、递增步长和预设业务格式;根据所述缓存步长生成对应的标识号段,并将所述标识号段预先存储至缓冲池,其中,所述标识号段用于提供当前索引值;接收所述应用层的序列号获取请求;响应于所述序列号获取请求,从所述标识号段中获取当前索引值;判断所述序列号生成规则是否存在预设业务格式;若存在预设业务格式,则根据所述当前索引值和所述预设业务格式生成与所述发号器名称对应的业务序列号;根据所述递增步长得到多个依次递增的业务序列号,并向所述应用层返回所述业务序列号。根据本发明实施例的技术方案,通过将发号器组件以插件形式加载至应用层,发号器组件以嵌入式模式设置于分布式系统中,能够达到去中心化,不需要进行单独部署,通用性强,通过管理端配置发号器组件的序列号生成规则,能够根据应用层中不同的业务需求配置预设业务格式,读取序列号生成规则后,根据缓存步长生成对应的标识号段,并将标识号段预先存储至缓冲池中,即进行预分配标识号段,便于从标识号段中取出当前索引值,当接收到应用层的序列号获取请求后,从标识号段中取出当前索引值,再判断序列号生成规则是否存在预设业务格式,若存在预设业务格式,则基于当前索引值,根据预设业务格式进行格式化生成与发号器名称对应的业务序列号,发号器名称可以唯一标识分布式系统中的发号器组件,根据递增步长可以得到多个依次递增的业务序列号,并将生成的业务序列号返回至应用层,本发明实施例不仅能够生成递增的业务序列号,同时支持自定义格式的业务序列号,使得应用层能够灵活获取具有业务含义的业务序列号,满足上游应用层的各种业务需求,有效地解决了传统方式采用自增主键或uuid记录没有任何业务含义、占用数据库空间大、影响查询性能、后续难以进行分库分表等问题。
42.本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
43.附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
44.图1是本发明一个实施例提供的分布式系统的结构示意图;
45.图2是本发明一个实施例提供的业务序列号生成方法的流程图;
46.图3是本发明另一个实施例提供的分布式系统的结构示意图;
47.图4是本发明另一个实施例提供的业务序列号生成方法的流程图;
48.图5是本发明另一个实施例提供的业务序列号生成方法的流程图;
49.图6是本发明另一个实施例提供的业务序列号生成方法的流程图;
50.图7是本发明另一个实施例提供的业务序列号生成方法的流程图;
51.图8是本发明另一个实施例提供的业务序列号生成方法的流程图;
52.图9是本发明一个实施例提供的管理端的显示界面;
53.图10是本发明一个实施例提供的发号器组件的结构示意图;
54.图11是本发明一个实施例提供的计算机设备的结构示意图。
具体实施方式
55.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
56.需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书、权利要求书或上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
57.下面结合附图,对本发明实施例作进一步阐述。
58.如图1所示,图1是本发明一个实施例提供的分布式系统100的结构示意图。
59.在图1的示例中,该分布式系统100包括应用层200、发号器组件300和管理端400,通过将与发号器组件300对应的最新版本maven依赖添加至应用层200的程序中,可以使得发号器组件300以插件的形式集成到项目中,发号器组件300提供api(application programming interface,应用程序编程接口),能够供应用层200调用,管理端400用于对发号器组件300的序列号生成规则进行配置管理以及监控发号器组件300的状态。分布式系统100还设置有缓冲池500,即数据库的内存空间,用于供发号器组件300和管理端400调用,需要说明的是,数据库可以选择mysql或redis。
60.需要说明的是,发号器组件300采用spring boot starter形式来开发,可以以插件的形式集成到项目中,能够避免对外部模块的强依赖,即插即用,实现零成本接入,从而能够实现在分布式环境中提供序列号生成服务,管理端400是一个spring boot thymeleaf的web工程,可以进行单独部署,根据不同业务方需求对发号器组件300进行配置和监控。
61.如图2所示,图2是本发明一个实施例提供的业务序列号生成方法的流程图,该方法包括但不限于有步骤s110至步骤s170:
62.步骤s110:读取管理端配置的序列号生成规则,其中,序列号生成规则包括发号器名称、缓存步长、递增步长和预设业务格式;
63.通过管理端配置发号器组件的序列号生成规则,可以在配置文件中添加以下配置参数:
64.#sequence属性配置
65.qihoo.finace.sequence.conf[0]=testseq2,100,1,ur%018d
[0066]
需要说明的是,发号器名称对应缓冲池500中发号器组件300的唯一名,缓存步长表示每次从缓冲池500中获取的标识号数量,相当于获取当前索引值,递增步长表示发号器
组件300每次next的增长步长,预设业务格式可以根据不同种类的业务需求进行配置,即进行格式化配置,例如,上述例子属性配置中的testseq2为发号器名称,100为缓存步长,1为递增步长,按照ur%018d进行格式化处理生成业务序列号。
[0067]
步骤s120:根据缓存步长生成对应的标识号段,并将标识号段预先存储至缓冲池,其中,标识号段用于提供当前索引值;
[0068]
需要说明的是,发号器组件300在分布式系统100中生成的业务序列号需保证全局唯一,根据缓存步长生成对应的标识号段,标识号段用于提供当前索引值,通过将标识号段先存储到缓冲池500中,采用生产消费模式,当需要调用发号器组件300的发号功能时,再从标识号段中取出当前索引值,再通过应用层200的业务需求生成相应的业务序列号,不需要网络传输,也不需要与服务器进行交互,通过预分配标识号段,能够有效地提高发号性能。
[0069]
步骤s130:接收应用层的序列号获取请求;
[0070]
需要说明的是,应用层200具体可以通过调用发号器组件300的api接口,发送序列号获取请求,发号器组件300接收到序列号获取请求即可为应用层200提供业务序列号。
[0071]
步骤s140:响应于序列号获取请求,从标识号段中获取当前索引值;
[0072]
需要说明的是,当发号器组件300接收到序列号获取请求后,通过从标识号段中获取当前索引值,可以保证全局唯一id值的生成,可以理解的是,标识号段划分为多个标识号,即id值,每个id值在分布式系统100中均保持唯一,id值可以是递增的,通过从标识号段中获取当前索引值,可以理解的是,每生成一个业务序列号,需从标识号段中取出id值,即获取与当前需生成的业务序列号对应的当前索引值,当前索引值可以标记上述业务序列号已被占用。
[0073]
通过将标识号段预先存储至缓冲池500中,便于在调用发号器生成业务序列号的时候取出当前索引值,标识号段能够保证在分布式系统100中生成不重复的业务序列号。
[0074]
步骤s150:判断序列号生成规则是否存在预设业务格式;
[0075]
步骤s160:若存在预设业务格式,则根据当前索引值和预设业务格式生成与发号器名称对应的业务序列号;
[0076]
通过判断序列号生成规则中是否存在预设业务格式,便于提高业务序列号的生成效率,若存在预设业务格式,则根据当前索引值和预设业务格式生成格式化的业务序列号,需要说明的是,生成的业务序列号与发号器名称对应,基于发号器名称生成的业务序列号可以保证在分布式系统100中唯一标识记录。
[0077]
需要说明的是,预设业务格式可以通过正则表达式进行定义,由于程序支持扩展,用户可以根据不同的业务需求进行自定义格式,操作简单方便,例如,通过将预设业务格式设置为abc%s,即可达到自定义业务序列号的目的。
[0078]
步骤s170:根据递增步长得到多个依次递增的业务序列号,并向应用层返回业务序列号。
[0079]
需要说明的是,发号器组件300支持自定义递增步长,从而能够按照需求得到多个依次递增的业务序列号,即能够生成递增序列,确保不会出现重复的数据,此外,若序列号生成规则设置有预设业务格式,可以保证业务序列号按照一定的格式进行递增。发号器组件300按照从小到大的顺序将业务序列号依次返回至应用层200,以供应用层200使用,满足应用层200的业务需求。
[0080]
例如,配置的序列号生成规则为:testseq2,100,1,ur%018d,表示对应“testseq2”的发号器组件300可以按照ur%018d规则生成业务序列号,且按照1的递增步长得到100个递增的业务序列号,示例性的,最终生成的业务序列号可以为ur000000000000168100、ur000000000000168101、ur000000000000168102等,其中,业务序列号以ur开头,固定18位长度。
[0081]
根据本发明实施例的技术方案,通过将发号器组件300以插件形式加载至应用层200,发号器组件300以嵌入式模式设置于分布式系统100中,能够达到去中心化,不需要进行单独部署,通用性强,通过管理端400配置发号器组件300的序列号生成规则,能够根据应用层200中不同的业务需求配置预设业务格式,读取序列号生成规则后,根据缓存步长生成对应的标识号段,并将标识号段预先存储至缓冲池500中,即进行预分配标识号段,便于从标识号段中取出当前索引值,当接收到应用层200的序列号获取请求后,从标识号段中取出当前索引值,再判断序列号生成规则是否存在预设业务格式,若存在预设业务格式,则基于当前索引值,根据预设业务格式进行格式化生成与发号器名称对应的业务序列号,发号器名称可以唯一标识分布式系统100中的发号器组件300,根据递增步长可以得到多个依次递增的业务序列号,并将生成的业务序列号返回至应用层200,本发明实施例不仅能够生成递增的业务序列号,同时支持自定义格式的业务序列号,使得应用层200能够灵活获取具有业务含义的业务序列号,满足上游应用层200的各种业务需求,有效地解决了传统方式采用自增主键或uuid记录没有任何业务含义、占用数据库空间大、影响查询性能、后续难以进行分库分表等问题。
[0082]
如图3所示,图3是本发明另一个实施例提供的分布式系统100的结构示意图。
[0083]
基于图3示出的分布式系统100,如图4所示,在上述的业务序列号生成方法中,步骤s120中根据缓存步长生成对应的标识号段,并将标识号段预先存储至缓冲池,包括但不限于步骤s210和步骤s220:
[0084]
步骤s210:根据缓存步长生成标识号段,采用分片原理对标识号段进行分段得到多个隔离号段;
[0085]
步骤s220:将多个隔离号段分别存储到不同的阻塞队列中。
[0086]
需要说明的是,缓冲池500采用单链表结构的阻塞队列实现,根据缓存步长生成标识号段,采用分片原理对标识号段进行分段得到多个隔离号段,通过分段缓存提供业务序列号,可以合理设计标识号段,将多个隔离号段分别存储到不同的阻塞队列中,不同隔离号段是相互独立的,可以满足多线程业务序列号生成需求,支持多并发的场景,有利于提高发号器组件300的发号效率。示例性的,若缓存步长为300,则得到的隔离号段可以为1

100、101

200、201

300。
[0087]
还需说明的是,隔离号段中的id值以递增形式存在于阻塞队列,通过采用java原子类atomiclong,以原子方式将当前值加1,并返回相加后的值,达到自增序列的目的,从而能够生成隔离增长的业务序列号,若应用层200存在多个业务系统,各个发号器组件300之间能够相互隔离,不会因发号器组件300出现故障而影响业务,在高并发场景下,由于发号器组件300生成业务序列号效率高,不会影响分布式系统100处理请求的速度。
[0088]
基于图3示出的分布式系统100,应用层200设置有多个机器节点,多个机器节点均加载有发号器组件300;如图5所示,在上述的业务序列号生成方法中,步骤s210中采用分片
原理对标识号段进行分段得到多个隔离号段,包括但不限于步骤s310和步骤s320:
[0089]
步骤s310:根据应用层的机器节点数量对标识号段进行等量划分得到多个隔离号段;
[0090]
步骤s320:将多个隔离号段分配至不同的机器节点。
[0091]
具体地,在应用层200集群中可以设置多个机器节点,每个机器节点加载有发号器组件300,通过设置多个发号器组件300,可以支持多并发的场景,即不同的机器节点可以同时生成业务序列号,且能够保证生成的业务序列号的唯一性。
[0092]
需要说明的是,根据发号器名称区分不同的序列号生成规则,多个发号器组件300所配置的序列号生成规则可以相同,也可以不同,本领域技术人员可根据实际需求进行设计。
[0093]
根据机器节点数量对标识号段进行等量划分得到多个隔离号段,并将多个隔离号段分配至不同的机器节点进行独立管理,采用分区独立分配的方式,相当于每个机器节点预先分配隔离号段,然后再由各个机器节点内进行集中式生成对应的业务序列号,既能实现高效率并发生成业务序列号的目的,又能保证在分布式环境下生成的业务序列号不会重复。
[0094]
如图3所示,示例性的,缓存步长为300,对应的标识号段为1

300,在应用层200集群中有3个机器节点,将标识号段平均分成3个隔离的号段,分别存储在3个阻塞队列中,不同的阻塞队列分别存储隔离号段1

100、101

200、201

300,对应由机器节点1、机器节点2、机器节点3进行管理,可以理解的是,当机器节点1生成业务序列号时,只能基于1

100的隔离号段区间生成,由此得到的业务序列号不会与机器节点2生成的业务序列号出现重复。
[0095]
如图6所示,基于图2的业务序列号生成方法,步骤s140中从标识号段中获取当前索引值之前,还包括但不限于步骤s410和步骤s420:
[0096]
步骤s410:判断缓冲池中的标识号段是否耗尽;
[0097]
步骤s420:若标识号段耗尽,重新根据缓存步长生成新的标识号段并存储至缓冲池。
[0098]
当接收到应用层200的序列号获取请求,发号器组件300需从标识号段中获取当前索引值,因此需先判断缓冲池500中的标识号段是否耗尽,若标识号段已耗尽,则需要重新根据缓存步长生成新的标识号段存储至缓冲池500,便于供发号器组件300获取当前索引值。
[0099]
基于图2的业务序列号生成方法,步骤s140中从标识号段中获取当前索引值之后,还包括以下步骤:
[0100]
将当前索引值加1后回写以表示当前索引值被占用。
[0101]
需要说明的是,缓冲池500中的标识号段主要用于提供当前索引值,若标识号段未耗尽,发号器组件300可以直接从缓冲池500中拿取当前索引值,并将当前索引值加1后回写以表示当前索引值被占用,当前索引值能够实现边更新边递增,可以理解的是,通过发号器组件300调用当前索引值,在缓冲池500中主要实现当前索引值的获取和更新。
[0102]
若缓冲池500通过阻塞队列实现标识号段的存储,当接收到序列号获取请求时,从阻塞队列顶部直接弹出当前索引值,并把当前索引值加1。
[0103]
如图7所示,基于图2的业务序列号生成方法,步骤s420中重新根据缓存步长生成
新的标识号段并存储至缓冲池之前,还包括但不限于步骤s510和步骤s520:
[0104]
步骤s510:获取前一个索引值;
[0105]
步骤s520:将前一个索引值加上缓存步长赋值给当前索引值。
[0106]
需要说明的是,缓冲池500的内存区间通常会存储有两个字段,一个字段用于记录前一个索引值,一个字段用于记录当前索引值,若缓冲池500的标识号段耗尽,则将前一个索引值加上缓存步长赋值给当前索引值,表示当前索引值之前生成的业务序列号已被占用,在分布式系统100中,可以使得应用层200中的机器节点往后取当前索引值,保证生成的业务序列号不会出现冲突。
[0107]
例如:前一个索引值为1000,缓存步长为100,则算得当前索引值为1000 100=1100,表示前1100个索引值对应的序列号已被占用,用于标记其它机器节点从1100往后取当前索引值以生成对应的序列号。此时,重新根据缓存步长100生成新的标识号段,即生成标识号段1101

1200,可以保证生成的业务序列号基于标识号段1101

1200区间,不会与1101之前生成的业务序列号出现重复。
[0108]
如图8所示,基于图2的业务序列号生成方法,步骤s170中根据递增步长得到多个依次递增的业务序列号,包括但不限于以下步骤s610和步骤s620:
[0109]
步骤s610:获取管理端配置的启动参数,其中,启动参数包括开始索引值;
[0110]
步骤s620:以开始索引值作为起始值,根据递增步长得到多个依次递增的业务序列号。
[0111]
需要说明的是,管理端400支持页面配置,配置参数能够即时生效,通过在管理端400配置发号器组件300的启动参数,启动参数包括开始索引值,当应用层200调用发号器组件300生成业务序列号时,以开始索引值作为初始值,开始生成业务序列号,并根据递增步长生成多个依次递增的业务序列号。此外,启动参数还可以包括最小值和最大值,通过设置最小值和最大值可以对生成业务序列号的范围进行限制。
[0112]
管理端400还可以根据发号器名称对配置有不同序列号生成规则的发号器组件300进行管理,具体包括创建发号器组件300,查询发号器组件300获取的号码段等,例如,创建新的发号器组件300,对应的发号器名称为:客户号序列、testseq2,查询“testseq2”获取的号码段:165701、165801、165901、166001、166101、166201、166301、166401、166501、166601,设置“testseq2”的启动参数:开始索引值1、最小值0、最大值100000000,具体的显示界面如图9所示。
[0113]
基于图2的业务序列号生成方法,还包括以下步骤:
[0114]
若不存在预设业务格式,则直接根据当前索引值返回生成与发号器名称对应的业务序列号。
[0115]
需要说明的是,判断序列号生成规则是否存在预设业务格式,若不存在预设业务格式,则直接根据当前索引值返回生成业务序列号,即生成没有格式的业务序列号,可以理解的是,若序列号生成规则没有配置预设业务格式,则发号器组件300根据当前索引值和递增步长得到多个依次递增的默认业务序列号。
[0116]
可以理解的是,预设业务格式包括字符串、固定长度、日期、标记符至少之一,用户可以根据实际的业务需求配置不同的预设业务格式,预设业务格式采用正则表达式定义,用户在序列号生成规则中配置现有的正则表达式语句即可对业务序列号的生成规则进行
自定义,使用方便。示例性的,预设业务格式可以为ur%018d、abc%s、80%s0、xs

日期

序号等,例如,ur%018d表示业务序列号要以ur开头,固定18位长度;xs

日期

序号中的日期可以包括年月,序号可以为阿拉伯数字,最终生成的业务序列号可以为xs

2021年8月

001的形式。
[0117]
在一种可能的实现方式中,分布式系统100可以应用于医疗健康服务云平台,业务序列号用于标识医疗电子记录,医疗电子记录包括电子病历、心电图、医学影像等一系列具备保存备查价值的电子化记录,从而可以基于人工智能模型从海量的电子病历中查询用户所需的病历信息,有助于为用户提供病历参考,实现医疗资源的共享和医疗范围的扩大。
[0118]
基于上述业务序列号生成方法,下面分别提出本发明的发号器组件、计算机设备和计算机可读存储介质的各个实施例。
[0119]
如图1和图10所示,图10是本发明一个实施例提供的发号器组件300的结构示意图。本发明实施例的发号器组件300设置于分布式系统100,分布式系统100还包括管理端400和应用层200,发号器组件300以插件形式加载至应用层200,发号器组件300包括但不限于规则读取模块310、预分配模块320、请求获取模块330、当前索引获取模块340、格式判断模块350、第一生成模块360、业务序列号返回模块370。
[0120]
具体地,规则读取模块310用于读取管理端400配置的序列号生成规则,其中,序列号生成规则包括发号器名称、缓存步长、递增步长和预设业务格式;预分配模块320用于根据缓存步长生成对应的标识号段,并将标识号段预先存储至缓冲池500,其中,标识号段用于提供当前索引值;请求获取模块330用于接收应用层200的序列号获取请求;当前索引获取模块340用于从标识号段中获取当前索引值;格式判断模块350用于判断序列号生成规则是否存在预设业务格式;第一生成模块360用于在预设业务格式存在的情况下,根据当前索引值和预设业务格式生成与发号器名称对应的业务序列号;业务序列号返回模块370,用于根据递增步长得到多个依次递增的业务序列号,以及向应用层200返回业务序列号。
[0121]
根据本发明实施例的技术方案,通过将发号器组件300以插件形式加载至应用层200,发号器组件300以嵌入式模式设置于分布式系统100中,能够达到去中心化,不需要进行单独部署,通用性强,本发明实施例不仅能够生成递增的业务序列号,同时支持自定义格式的业务序列号,使得应用层200能够灵活获取具有业务含义的业务序列号,满足上游应用层200的各种业务需求,有效地解决了传统方式采用自增主键或uui d记录没有任何业务含义、占用数据库空间大、影响查询性能、后续难以进行分库分表等问题。
[0122]
在上述的发号器组件300中,预分配模块320包括但不限于分段子模块和队列存储子模块,分段子模块用于根据缓存步长生成标识号段,采用分片原理对标识号段进行分段得到多个隔离号段;队列存储子模块用于将多个隔离号段分别存储到不同的阻塞队列中。
[0123]
基于上述的分布式系统100,应用层200设置有多个机器节点,多个机器节点均加载有发号器组件300,在上述的发号器组件300中,分段子模块包括但不限于划分单元和分配单元,划分单元用于根据应用层200的机器节点数量对标识号段进行等量划分得到多个隔离号段;分配单元用于将多个隔离号段分配至不同的机器节点。
[0124]
在上述的发号器组件300中,还包括但不限于号段判断模块、号段更新模块和当前索引更新模块,号段判断模块用于判断缓冲池500中的标识号段是否耗尽;号段更新模块用于在标识号段耗尽的情况下,重新根据缓存步长生成新的标识号段并存储至缓冲池500;当
前索引更新模块用于将当前索引值加1后回写以表示当前索引值被占用。
[0125]
在上述的发号器组件300中,还包括但不限于前一索引获取模块和赋值模块,前一索引获取模块用于获取前一个索引值;赋值模块用于将前一个索引值加上缓存步长赋值给当前索引值。
[0126]
在上述的发号器组件300中,业务序列号返回模块370包括但不限于启动参数获取子模块和启动生成子模块,启动参数获取子模块用于获取管理端400配置的启动参数,其中,启动参数包括开始索引值;启动生成子模块用于以开始索引值作为起始值,并根据递增步长得到多个依次递增的业务序列号。
[0127]
在上述的发号器组件300中,还包括第二生成模块,第二生成模块用于在预设业务格式不存在的情况下,直接根据当前索引值返回生成与发号器名称对应的业务序列号;另外,通过规则读取模块310读取的序列号生成规则包括预设业务格式,其中,预设业务格式包括字符串、固定长度、日期、标记符至少之一。
[0128]
需要说明的是,本发明实施例的发号器组件300的具体实施方式及对应的技术效果,可对应参照上述业务序列号生成方法的具体实施方式及对应的技术效果。
[0129]
如图11所示,本发明的一个实施例还提供了一种计算机设备1100,该计算机设备1100包括:存储器1110、处理器1120及存储在存储器1110上并可在处理器1120上运行的计算机程序。
[0130]
处理器1120和存储器1110可以通过总线或者其他方式连接。存储器1110作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器1110可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器1110可选包括相对于处理器1120远程设置的存储器,这些远程存储器可以通过网络连接至该发号器组件。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。本领域技术人员可以理解的是,图11中示出的计算机设备1100并不构成对本发明实施例的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0131]
需要说明的是,本实施例中的计算机设备1100能够构成图10所示实施例中的发号器组件的一部分,两者属于相同的发明构思,因此两者具有相同的实现原理以及有益效果,此处不再详述。实现上述实施例的业务序列号生成方法所需的非暂态软件程序以及指令存储在存储器1110中,当被处理器1120执行时,执行上述实施例的业务序列号生成方法,例如,执行以上描述的图2以及图4至图8中的方法步骤。
[0132]
另外,本发明的一个实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于执行上述的业务序列号生成方法。例如,被上述发号器组件的一个处理器执行,可使得上述处理器执行上述实施例中的业务序列号生成方法,例如,执行以上描述的图2以及图4至图8中的方法步骤。
[0133]
此外,如图1所示,本发明的一个实施例还提供了一种分布式系统100,分布式系统100包括发号器组件300、管理端400和应用层200,发号器组件300以插件形式加载至应用层200。需要说明的是,本实施例中的分布式系统包括上述的发号器组件300,同样具有上述发号器组件300的有益效果,此处不再详述。
[0134]
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd

rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包括计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
[0135]
以上是对本发明的较佳实施进行了具体说明,但本发明并不局限于上述实施方式,熟悉本领域的技术人员在不违背本发明精神的共享条件下还可作出种种等同的变形或替换,这些等同的变形或替换均包括在本发明权利要求所限定的范围内。
再多了解一些

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

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

相关文献