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

分布式序列号的生成方法、装置、设备及可读存储介质与流程

2022-04-06 14:23:00 来源:中国专利 TAG:


1.本发明涉及计算机信息技术领域,具体涉及一种分布式序列号的生成方法、装置、设备及可读存储介质。


背景技术:

2.随着计算机信息技术的快速发展和各类信息化单位数据量急速增加,软件应用系统正在向分布式和大数据的应用方向飞速演进。在非分布式的软件应用系统中往往依赖数据库系统的序列号生成机制即可生成序列号,但在分布式系统中往往需要处理海量的大数据,面对单表的海量数据,对于关系型数据库就不得不分库分表,且分布式应用和大数据应用具有高可用、高并发以及高性能的特性,依赖数据库系统的序列号生成机制难以满足分布式应用系统生成唯一序列号的需求。目前的分布式序列号生成方法主要包括:(1)通用唯一识别码(universally unique identifier,uuid)生成16进制格式的字符串;(2)数据库自带的序列号生成机制生成序列号;(3)采用redis增量函数生成序列号;(4)采用zookeeper集群服务的节点数据版本生成序列号;(5)采用毫秒数 计算机id 毫秒内流水号 符号位的方式生成序列号;(6)基于链表/队列生成分布式序列号。
3.但是,采用uuid生成16进制格式的字符串难以解决顺序递增问题,且序列号长度过长,会占用过多的磁盘空间、内存空间和网络带宽,根据序列号字段进行查询和更新的效率较低;采用数据库自带的序列号生成机制生成序列号,同一业务表数据只能存储于单库单表中,数据库压力较大且难以满足海量数据的存储需求,且其只能用于数据库表,非数据库系统不能使用;采用redis增量函数生成序列号依赖于redis,如果应用系统中无redis组件,则需要另外安装redis组件,会增加系统整体的复杂度和运维工作量;采用zookeeper集群服务的节点数据版本来生成序列号依赖于zookeeper,需要部署一套zookeeper分布式框架;采用毫秒数 计算机id 毫秒内流水号 符号位的方式生成序列号,需要对每台计算机id进行唯一编号,且要求每台计算机的时钟完全同步,现实中难以实现;基于链表/队列生成分布式序列号在面对高并发生成大量序列场景时,难以满足其性能要求,并且占用的系统资源会随着序列号个数的增加而线性增加。因此,现有的分布式序列号生成方法存在不够便捷、生成效率低的缺陷,难以满足分布式应用对高可用、高并发、高性能的生成序列号的需求。


技术实现要素:

4.有鉴于此,本发明实施例提供了一种分布式序列号的生成方法、装置、设备及可读存储介质,以解决分布式序列号生成方法不够便捷、生成效率低,难以满足分布式应用和大数据应用对高可用、高并发、高性能的生成序列号的需求的问题。
5.根据第一方面,本发明实施例提供了一种分布式序列号的生成方法,包括:获取序列号的请求信息、所述请求信息对应的请求个数以及本地缓存的可用序列号个数;判断所述可用序列号个数是否满足所述请求个数;当所述可用序列号个数不满足所述请求个数
时,基于所述请求个数计算所需的全局序列号个数;基于所述全局序列号个数,生成所述请求信息对应的序列号列表。
6.本发明实施例提供的分布式序列号的生成方法,通过获取序列号的请求信息、请求信息对应的请求个数以及本地缓存的可用序列号个数,在本地缓存的可用序列号个数不满足请求个数时,基于请求个数计算所需的全局序列号个数,继而基于全局序列号个数以及请求信息,生成序列号列表。该方法无需进行繁琐的配置操作,提高了序列号的生成效率,且在本地缓存的可用序列号个数不满足请求个数时,进一步请求全局序列号,降低了系统资源的占用,最大程度的满足了分布式应用对高可用、高并发、高性能的生成序列号的需求。
7.结合第一方面,在第一方面的第一实施方式中,所述基于所述请求个数计算所需的全局序列号个数,包括:获取全局序列号所对应缓存池的序列号容量;判断所述请求个数是否大于所述缓存池的序列号容量;当所述请求个数大于所述缓存池的序列号容量时,将所述请求个数确定为所述全局序列号个数。
8.结合第一方面第一实施方式,在第一方面的第二实施方式中,所述方法还包括:当所述请求个数小于等于所述缓存池的序列号容量时,将所述缓存池的序列号容量确定为所述全局序列号个数。
9.本发明实施例提供的分布式序列号的生成方法,通过获取全局序列号所对应缓存池的序列号容量,判断请求个数是否大于缓存池的序列号容量,当请求个数大于缓存池的序列号容量时,将请求个数确定为全局序列号个数,当请求个数小于等于缓存池的序列号容量时,将缓存池的序列号容量确定为全局序列号个数,由此能够准确确定出所请求的序列号,保证了序列号的准确生成。
10.结合第一方面第一实施方式,在第一方面的第三实施方式中,在所述基于所述请求个数计算所需的全局序列号个数之前,还包括:查询对应于所述请求信息的全局序列号,确定当前全局序列号;判断所述请求信息对应的全局序列号是否为空;当所述全局序列号不为空时,基于所述请求个数计算所需的全局序列号个数。
11.结合第一方面第三实施方式,在第一方面的第四实施方式中,在所述基于所述请求个数计算所需的全局序列号个数之后,还包括:基于所述全局序列号个数以及当前全局序列号更新所述全局序列号。
12.结合第一方面第三实施方式,在第一方面的第五实施方式中,在所述基于所述请求个数计算所需的全局序列号个数之后,还包括:当所述全局序列号为空时,基于所述全局序列号个数更新所述全局序列号。
13.本发明实施例提供的分布式序列号的生成方法,通过查询对应于请求信息的全局序列号,确定当前全局序列号;判断请求信息对应的全局序列号是否为空;当全局序列号不为空时,基于请求个数计算所需的全局序列号个数,并基于全局序列号个数以及当前全局序列号更新全局序列号。当全局序列号为空时,基于全局序列号个数更新全局序列号,由此实现了全局序列号的值更新,以保证序列号的生成唯一性。
14.结合第一方面,在第一方面的第六实施方式中,所述基于所述全局序列号个数,生成所述请求信息对应的序列号列表,包括:判断是否存在本地序列号缓存对象;当存在所述本地序列号缓存对象时,基于所述请求信息以及所述请求个数更新所述本地序列号缓存对
象的可用最大序列号和未用序列号个数;基于所述可用最大序列号和未用序列号个数,计算序列号起始值;基于所述序列号起始值以及所述全局序列号个数,构造所述序列号列表。
15.结合第一方面第六实施方式,在第一方面的第七实施方式中,所述方法还包括:当不存在所述本地序列号缓存对象时,新建所述本地序列号缓存对象;计算所述本地序列号缓存对象的可用最大序列号和未用序列号个数。
16.本发明实施例提供的分布式序列号的生成方法,判断是否存在本地序列号缓存对象;当存在本地序列号缓存对象时,基于请求信息以及请求个数更新本地序列号缓存对象的可用最大序列号和未用序列号个数;当不存在本地序列号缓存对象时,新建本地序列号缓存对象;计算本地序列号缓存对象的可用最大序列号和未用序列号个数;基于可用最大序列号和未用序列号个数,计算序列号起始值;基于序列号起始值以及全局序列号个数,构造序列号列表。由此保证了序列号的顺序递增,保证了所生成序列号的唯一性。
17.根据第二方面,本发明实施例提供了一种分布式序列号的生成装置,包括:获取模块,用于获取序列号的请求信息、所述请求信息对应的请求个数以及本地缓存的可用序列号个数;判断模块,用于判断所述可用序列号个数是否满足所述请求个数;计算模块,用于当所述可用序列号个数不满足所述请求个数时,基于所述请求个数计算所需的全局序列号个数;生成模块,用于基于所述全局序列号个数,生成所述请求信息对应的序列号列表。
18.根据第三方面,本发明实施例提供了一种电子设备,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行第一方面或第一方面任一实施方式所述的分布式序列号的生成方法。
19.根据第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使计算机执行第一方面或第一方面任一实施方式所述的分布式序列号的生成方法。
20.需要说明的是,本发明实施例提供的分布式序列号的生成装置、电子设备以及计算机可读存储介质的相应有益效果,请参见分布式序列号的生成方法中相应内容的描述,在此不再赘述。
附图说明
21.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
22.图1是根据本发明实施例的分布式序列号的生成方法的流程图;图2是根据本发明实施例的分布式序列号的生成方法的另一流程图;图3是根据本发明实施例的分布式序列号的生成方法的另一流程图;图4是根据本发明实施例的分布式序列号的生成方法的另一流程图;图5示出了本发明实施例中分布式序列号生成方法的架构图;图6是根据本发明实施例的分布式序列号的生成装置的结构框图;图7是本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
23.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
24.现有技术中的分布式序列号生成方法存在不够便捷、生成效率低的缺陷,难以满足分布式应用对高可用、高并发、高性能的生成序列号的需求。基于此,本发明实施例提供了一种分布式序列号生成方法的技术架构,该技术架构包括4层,从下至上依次是全局存储层、序列号引擎层、序列号接口层以及应用访问层,如图5所示。
25.其中,全局存储层负责序列号的全局存储,支持4种类型的存储,第1类是提供jdbc驱动的所有关系型数据库,例如mysql、postgresql、microsoftsqlserver、oracle、sybase、db2等,上面每种数据库均支持主从ha功能;第2类是提供jdbc驱动的所有分布式关系型数据库,例如mysql cluster、greenplum、tidb等;第3类是redis cluster;第4类是zookeeper cluster。后面3类天然支持ha特性。
26.其中,序列号引擎层是本分布式序列号方法的核心,包括id generator引擎(序列号生成算法内核)、rdb存储服务、redis存储服务、zookeeper存储服务、rdb分布式锁、redis分布式锁、zookeeper分布式锁、本地序列号缓存(序列号缓存算法结构)和工具类库。rdb分布式锁、redis分布式锁和zookeeper分布式锁是分布式锁的三种实现,可根据具体需求进行配置。
27.其中,序列号接口层为序列号客户端提供访问接口,支持5种类型的接口,第1种是isequence接口,提供高效的java sdk接口;第2种是hibernate idgenerator,实现了hibernate的序列号生成器接口;第3种是mybatis idgenerator,实现了mybatis的序列号生成器接口;第4种是restful idgenerator接口,为支持restful请求的应用场景提供序列号生成服务;第5种是socket idgenerator接口,为支持socket请求的应用场景提供序列号生成服务。该序列号接口层既支持数据库类应用,也支持非数据库类的应用,由此提高了分布式序列号生成方法的便捷性。
28.其中,应用访问层列举了使用分布式序列号生成机制的常见应用,具体包括java应用、scala应用、hibernate应用、mybatis应用、restful client应用以及socket client应用。
29.根据本发明实施例,提供了一种分布式序列号的生成方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
30.在本实施例中提供了一种分布式序列号的生成方法,可用于电子设备,如手机、平板电脑等,图1是根据本发明实施例的分布式序列号的生成方法的流程图,如图1所示,该流程包括如下步骤:s11,获取序列号的请求信息、请求信息对应的请求个数以及本地缓存的可用序列号个数。
31.序列号的请求信息为用户输入的序列号请求,该请求信息可以包括序列号名称,
该序列号名称可以是任意的字符串,例如字符串“t_trade”。具体地,电子设备可以根据其接收到来自用户的序列号请求,获取该序列号请求所对应的序列号名称,继而根据序列号名称启用唯一的本地锁,以查询本地序列号缓存对象池中的序列号缓存对象。序列号缓存对象中记录有序列号名称对应的当前可用最大序列号值以及未用序列号个数。
32.请求信息对应的请求个数为序列号请求个数,该请求个数为大于等于1的正整数,此处对请求个数不作具体限定。本地缓存的可用序列号个数为本地序列号缓存对象池中所剩余的未用序列号个数。具体地,电子设备可以通过访问本地序列号缓存对象池中的序列号缓存对象,确定出序列号名称对应的当前可用最大序列号值以及未用序列号个数。
33.s12,判断可用序列号个数是否满足请求个数。
34.电子设备将可用序列号个数与请求个数进行比较,以确定本地缓存的可用序列号个数是否满足序列号请求信息所对应的序列号请求个数。当可用序列号个数不满足请求个数时,执行步骤s13,否则,执行其他操作。该其他操作可以是根据序列号的请求信息以及请求个数分配相应的序列号,也可以是更新本地序列号缓存对象池中对应于该请求信息的序列号缓存对象所记录的当前可用最大序列号值以及未用序列号个数,此处对其他操作不作具体限定。
35.s13,基于请求个数计算所需的全局序列号个数。
36.当可用序列号个数不满足请求个数时,电子设备可以根据请求信息查询全局存储服务器,以根据请求个数计算出实际所要求申请的全局序列号个数。具体地,电子设备可以对比请求个数以及默认缓存池容量之间的大小关系,若请求个数小于等于默认缓存池容量,则全局序列号个数等于默认缓存池容量。
37.s14,基于全局序列号个数,生成请求信息对应的序列号列表。
38.电子设备在得到对应于请求信息的一个或多个全局序列号后,可以根据序列号起始值以及全局序列号个数构造序列号列表。该序列号列表可以是连续的整数序列,也可以是不连续的两个区间的整数序列,当然还可以为其他形式的整数序列,此处不作具体限定。
39.本实施例提供的分布式序列号的生成方法,通过获取序列号的请求信息、请求信息对应的请求个数以及本地缓存的可用序列号个数,在本地缓存的可用序列号个数不满足请求个数时,基于请求个数计算所需的全局序列号个数,继而基于全局序列号个数以及请求信息,生成序列号列表。该方法无需进行繁琐的配置操作,提高了序列号的生成效率,且在本地缓存的可用序列号个数不满足请求个数时,进一步请求全局序列号,降低了系统资源的占用,最大程度的满足了分布式应用对高可用、高并发、高性能的生成序列号的需求。
40.在本实施例中提供了一种分布式序列号的生成方法,可用于电子设备,如手机、平板电脑等,图2是根据本发明实施例的分布式序列号的生成方法的流程图,如图2所示,该流程包括如下步骤:s21,获取序列号的请求信息、请求信息对应的请求个数以及本地缓存的可用序列号个数。详细说明参见上述实施例对应步骤s11的相关描述,此处不再赘述。
41.s22,判断可用序列号个数是否满足请求个数。详细说明参见上述实施例对应步骤s12的相关描述,此处不再赘述。
42.s23,当可用序列号个数不满足请求个数时,查询对应于请求信息的全局序列号,确定当前全局序列号。
43.当可用序列号个数不满足请求个数时,电子设备可以根据请求信息查询全局存储服务器,以获取该请求信息所对应的当前全局序列号。具体地,电子设备可以向全局存储服务器发出查询请求,根据序列号名称查询全局存储服务器,全局存储服务器返回查询结果,电子设备可以从查询结果取出请求信息对应的当前全局序列号。此处的全局存储服务器可以是关系型数据库服务器(例如mysql、postgresql、microsoft sqlserver、oracle、sybase、db2等),可以是分布式关系型数据库服务器(例如mysql cluster、greenplum、tidb等),还可以是redis服务器、redis集群服务器、zookeeper集群服务器等,此处不作具体限定。
44.s24,判断请求信息对应的全局序列号是否为空。
45.电子设备通过全局存储服务器返回的查询结果确定请求信息对应的全局序列号是否为空。当所述全局序列号不为空时,执行步骤s25,否则说明是首次申请全局序列号,此时电子设备可以根据序列号的请求个数计算向全局存储服务器实际申请的全局序列号个数,开启全局分布式锁,持久化请求信息在全局存储服务器上的全局序列号。
46.s25,基于请求个数计算所需的全局序列号个数。
47.当所述全局序列号不为空时,电子设备可以根据序列号的请求个数以及默认缓存池的大小,计算实际所需申请的全局序列号个数。
48.具体地,如图4所示,上述步骤s25可以包括:s251,获取全局序列号所对应缓存池的序列号容量。
49.缓存池的序列号容量为全局存储服务器所对应的序列号缓存池所默认存储的全局序列号个数。电子设备可以根据请求信息查询全局存储服务器,确定出当前请求信息所对应全局序列号,继而根据全局存储服务器的属性确定出当前全局序列号所处缓存池的序列号容量。
50.s252,判断请求个数是否大于缓存池的序列号容量。
51.电子设备将序列号的请求个数和缓存池的序列号容量进行比较,以确定请求个数是否大于缓存池的序列号容量。当请求个数大于缓存池的序列号容量时,执行步骤s253,否则执行步骤s254。
52.s253,将请求个数确定为全局序列号个数。
53.当请求个数大于缓存池的序列号容量时,电子设备将将请求个数确定为全局序列号个数,即全局序列号个数等于序列号的请求个数。
54.s254,将缓存池的序列号容量确定为全局序列号个数。
55.当请求个数小于等于缓存池的序列号容量时,电子设备将将缓存池的序列号容量确定为全局序列号个数,即全局序列号个数等于缓存池的序列号容量。
56.s26,基于全局序列号个数以及当前全局序列号更新全局序列号。
57.在确定出对应于请求信息的全局序列号个数后,可用的全局序列号减少,此时电子设备可以对全局序列号进行更新。具体地,全局序列号的更新值等于全局序列号个数加上当前全局序列号的值,然后依据序列号的请求信息更新全局存储服务器上对应于该请求信息的全局序列号的值。
58.s27,基于全局序列号个数更新全局序列号。
59.当全局序列号为空时,电子设备可以根据序列号的请求个数计算向全局存储服务
器所要申请的全局序列号个数,并开启全局分布式锁,持久化序列号的请求信息在全局存储服务器上的全局序列号的值。具体地,全局序列号个数的确定方法与步骤s25一致,全局序列号的更新值等于全局序列号个数,电子设备在得到全局序列号后,根据序列号的请求信息持久化其在全局存储服务器上的全局序列号的值。
60.s28,基于全局序列号个数,生成请求信息对应的序列号列表。详细说明参见上述实施例对应步骤s14的相关描述,此处不再赘述。
61.本实施例提供的分布式序列号的生成方法,通过获取全局序列号所对应缓存池的序列号容量,判断请求个数是否大于缓存池的序列号容量,当请求个数大于缓存池的序列号容量时,将请求个数确定为全局序列号个数,当请求个数小于等于缓存池的序列号容量时,将缓存池的序列号容量确定为全局序列号个数,由此能够准确确定出所请求的序列号,保证了序列号的准确生成。通过查询对应于请求信息的全局序列号,确定当前全局序列号;判断请求信息对应的全局序列号是否为空;当全局序列号不为空时,基于请求个数计算所需的全局序列号个数,并基于全局序列号个数以及当前全局序列号更新全局序列号。当全局序列号为空时,基于全局序列号个数更新全局序列号,由此实现了全局序列号的值更新,以保证序列号的生成唯一性。
62.在本实施例中提供了一种分布式序列号的生成方法,可用于电子设备,如手机、平板电脑等,图3是根据本发明实施例的分布式序列号的生成方法的流程图,如图3所示,该流程包括如下步骤:s31,获取序列号的请求信息、请求信息对应的请求个数以及本地缓存的可用序列号个数。详细说明参见上述实施例对应步骤s11的相关描述,此处不再赘述。
63.s32,判断可用序列号个数是否满足请求个数。详细说明参见上述实施例对应步骤s12的相关描述,此处不再赘述。
64.s33,当可用序列号个数不满足请求个数时,基于请求个数计算所需的全局序列号个数。详细说明参见上述实施例对应步骤s13的相关描述,此处不再赘述。
65.s34,基于全局序列号个数,生成请求信息对应的序列号列表。
66.具体地,上述步骤s34可以包括:s341,判断是否存在本地序列号缓存对象。
67.本地序列号缓存对象为对应序列号请求信息的本地缓存信息。电子设备在得到全局序列号个数后,可以检测本地是否存在相应的本地序列号缓存对象。当存在本地序列号缓存对象时,执行步骤s342,否则执行步骤s343至s344。
68.s342,基于请求信息以及请求个数更新本地序列号缓存对象的可用最大序列号和未用序列号个数。
69.当存在本地序列号缓存对象时,电子设备可以根据请求信息和序列号的请求个数更新本地序列号缓存对象的当前可用最大序列号以及未用序列号个数。当前可用最大序列号等于实际申请的全局序列号个数 当前全局序列号的值,未用序列号个数等于实际申请的全局序列号个数-序列号的请求个数 上一次缓存的未用序列号个数。在得到可用最大序列号和未用序列号个数,电子设备将计算得到的当前可用最大序列号以及未用序列号个数分别赋予本地序列号缓存对象的最大序列号和未用序列号个数的属性。
70.s343,新建本地序列号缓存对象。
71.当不存在本地序列号缓存对象时,电子设备可以新建本地序列号缓存对象。
72.s344,计算本地序列号缓存对象的可用最大序列号和未用序列号个数。
73.在完成本地序列号缓存对象的新建操作后,电子设备可以计算本地序列号缓存对象所对应的当前可用最大序列号值和未用序列号个数,并将本地序列号缓存对象加入本地序列号缓存对象池。具体地,当前可用最大序列号等于实际申请的全局序列号个数 当前全局序列号值;若默认缓冲池的序列号容量大于序列号的请求个数,则未用序列号个数等于默认缓冲池的序列号容量-序列号的请求个数;若默认缓冲池的序列号容量小于等于序列号的请求个数,则未用序列号个数等于0。将计算获得的当前可用最大序列号值和未用序列号个数赋予序列号缓存新建的本地序列号缓存对象的对应属性,继而将本地序列号缓存对象加入本地序列号缓存对象池。
74.s345,基于可用最大序列号和未用序列号个数,计算序列号起始值。
75.序列号起始值为序列号的请求起始值,电子设备可以根据可用最大序列号和未用序列号个数计算序列号的请求起始值,具体地,该序列号起始值等于当前可用最大序列号值-未用序列号个数 1。
76.s346,基于序列号起始值以及全局序列号个数,构造序列号列表。
77.电子设备在计算得到序列号起始值之后,根据序列号起始值以及序列号的请求个数构建出序列号列表,具体地,序列号列表可能是连续的整数序列,以序列号请求个数12为例,构造出的序列号列表连续整数可能值为11,12,13,

,25;序列号列表也可能是不连续的两个区间的整数序列,以序列号请求个数10为例,构造出的序列号列表连续整数可能值为9998,9999,10000,20000,20001,

,20006,即前3个连续,后7个连续,但前3个和后7个属于不连续的区间。
78.本实施例提供的分布式序列号的生成方法,判断是否存在本地序列号缓存对象;当存在本地序列号缓存对象时,基于请求信息以及请求个数更新本地序列号缓存对象的可用最大序列号和未用序列号个数;当不存在本地序列号缓存对象时,新建本地序列号缓存对象;计算本地序列号缓存对象的可用最大序列号和未用序列号个数;基于可用最大序列号和未用序列号个数,计算序列号起始值;基于序列号起始值以及全局序列号个数,构造序列号列表。由此保证了序列号的顺序递增,保证了所生成序列号的唯一性。
79.在本实施例中还提供了一种分布式序列号的生成装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
80.本实施例提供一种分布式序列号的生成装置,如图6所示,包括:获取模块41,用于获取序列号的请求信息、请求信息对应的请求个数以及本地缓存的可用序列号个数。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
81.判断模块42,用于判断可用序列号个数是否满足请求个数。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
82.计算模块43,用于当可用序列号个数不满足请求个数时,基于请求个数计算所需的全局序列号个数。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
83.生成模块44,用于基于全局序列号个数,生成请求信息对应的序列号列表。详细说
明参见上述方法实施例对应的相关描述,此处不再赘述。
84.本实施例提供的分布式序列号的生成装置,无需进行繁琐的配置操作,提高了序列号的生成效率,且在本地缓存的可用序列号个数不满足请求个数时,进一步请求全局序列号,降低了系统资源的占用,最大程度的满足了分布式应用对高可用、高并发、高性能的生成序列号的需求。
85.本实施例中的分布式序列号的生成装置是以功能单元的形式来呈现,这里的单元是指asic电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
86.上述各模块的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
87.本发明实施例还提供一种电子设备,具有上述图6所示的分布式序列号的生成装置。
88.请参阅图7,图7是本发明可选实施例提供的一种电子设备的结构示意图,如图7所示,该电子设备可以包括:至少一个处理器501,例如cpu(central processing unit,中央处理器),至少一个通信接口503,存储器504,至少一个通信总线502。其中,通信总线502用于实现这些组件之间的连接通信。其中,通信接口503可以包括显示屏(display)、键盘(keyboard),可选通信接口503还可以包括标准的有线接口、无线接口。存储器504可以是高速ram存储器(random access memory,易挥发性随机存取存储器),也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器504可选的还可以是至少一个位于远离前述处理器501的存储装置。其中处理器501可以结合图6所描述的装置,存储器504中存储应用程序,且处理器501调用存储器504中存储的程序代码,以用于执行上述任一方法步骤。
89.其中,通信总线502可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。通信总线502可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
90.其中,存储器504可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:ram);存储器也可以包括非易失性存储器(英文:non-volatile memory),例如快闪存储器(英文:flash memory),硬盘(英文:hard disk drive,缩写:hdd)或固态硬盘(英文:solid-state drive,缩写:ssd);存储器504还可以包括上述种类存储器的组合。
91.其中,处理器501可以是中央处理器(英文:central processing unit,缩写:cpu),网络处理器(英文:network processor,缩写:np)或者cpu和np的组合。
92.其中,处理器501还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(英文:application-specific integrated circuit,缩写:asic),可编程逻辑器件(英文:programmable logic device,缩写:pld)或其组合。上述pld可以是复杂可编程逻辑器件(英文:complex programmable logic device,缩写:cpld),现场可编程逻辑门阵列(英文:field-programmable gate array,缩写:fpga),通用阵列逻辑(英文:generic array logic, 缩写:gal)或其任意组合。
93.可选地,存储器504还用于存储程序指令。处理器501可以调用程序指令,实现如本
申请图1至图4实施例中所示的分布式序列号的生成方法。
94.本发明实施例还提供了一种非暂态计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的分布式序列号的生成方法的处理方法。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)、随机存储记忆体(random access memory,ram)、快闪存储器(flash memory)、硬盘(hard disk drive,缩写:hdd)或固态硬盘(solid-state drive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。
95.虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
再多了解一些

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

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

相关文献