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

标识信息的生成方法及装置、存储介质、电子装置与流程

2022-07-02 08:58:24 来源:中国专利 TAG:


1.本发明实施例涉及通信领域,具体而言,涉及一种标识信息的生成方法及装置、存储介质、电子装置。


背景技术:

2.在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识,全局唯一标识由发号器生成。现有发号器,全局唯一id生成策略也非常多,在负责分布式系统中,需要一种极高性能,有序,纯数字的id生成策略,数据库的自增序列一般是最适合的,但数据库的自增序列存在性能瓶颈。


技术实现要素:

3.本发明实施例提供了一种标识信息的生成方法及装置、存储介质、电子装置,以至少解决相关技术中标识信息的生成性能较低的问题。
4.根据本发明的一个实施例,提供了一种标识信息的生成方法,包括:接收客户端发送的请求信息,其中,上述请求信息中包括参数步长;将上述参数步长发送至发号线程,其中,上述发号线程用于利用上述参数步长生成数据区间值;接收上述发号线程发送的上述数据区间值;基于上述数据区间值生成目标数组,其中,上述目标数组中包括标识信息,上述标识信息用于标识数据的唯一性。
5.根据本发明的另一个实施例,提供了一种标识信息的生成方法,包括:接收补全线程发送的参数步长;利用上述参数步长生成数据区间值;将上述数据区间值发送至上述补全线程,以指示上述补全线程生成目标数组,其中,上述目标数组中包括标识信息,上述标识信息用于标识数据的唯一性。
6.根据本发明的另一个实施例,提供了一种标识信息的接收方法,包括:向补全线程发送请求信息,其中,上述请求信息中包括参数步长,上述补全线程用于利用上述请求信息生成目标数组;接收上述补全线程发送的上述目标数组,其中,上述目标数组中包括标识信息,上述标识信息用于标识数据的唯一性。
7.根据本发明的另一个实施例,提供了一种标识信息的生成装置,其特征在于,包括:第一接收模块,用于接收客户端发送的请求信息,其中,上述请求信息中包括参数步长;第一发送模块,用于将上述参数步长发送至发号线程,其中,上述发号线程用于利用上述参数步长生成数据区间值;第二接收模块,用于接收上述发号线程发送的上述数据区间值;第一生成模块,用于基于上述数据区间值生成目标数组,其中,上述目标数组中包括标识信息,上述标识信息用于标识数据的唯一性。
8.在一个示例性实施例中,上述第一生成模块,包括:第一确定单元,用于确定上述参数步长的第一预设类型的数组;第一生成单元,用于利用上述数据区间值中的起始值、上述起始值与上述参数步长之间的和值,生成上述数组中的参数值;第一补全单元,用于补全上述数组中的参数值,确定上述目标数组。
9.在一个示例性实施例中,上述第一补全单元,包括:第一确定子单元,用于确定上述参数值的数量;第二确定子单元,用于按照上述参数值的数量补全上述数组中的参数值,确定上述目标数组。
10.在一个示例性实施例中,上述装置还包括:第一转换模块,用于基于上述数据区间值生成目标数组之后,将上述目标数组的数字类型转换为第二预设类型;第四发送模块,用于将转换为上述第二预设类型的目标数组发送至上述客户端。
11.根据本发明的另一个实施例,提供了一种标识信息的生成装置,包括:第三接收模块,用于接收补全线程发送的参数步长;第二生成模块,用于利用上述参数步长生成数据区间值;第二发送模块,用于将上述数据区间值发送至上述补全线程,以指示上述补全线程生成目标数组,其中,上述目标数组中包括标识信息,上述标识信息用于标识数据的唯一性。
12.在一个示例性实施例中,上述第二生成模块,包括:第二生成单元,用于利用预设算法确定数组的起始值、上述起始值和上述参数步长之间的和值,以生成上述数据区间值。
13.根据本发明的又一个实施例,还提供了一种标识信息的接收装置,包括:
14.第三发送模块,用于向补全线程发送请求信息,其中,上述请求信息中包括参数步长,上述补全线程用于利用上述请求信息生成目标数组;
15.第四接收模块,用于接收上述补全线程发送的上述目标数组,其中,上述目标数组中包括标识信息,上述标识信息用于标识数据的唯一性。
16.在一个示例性实施例中,上述装置还包括:缓存模块,用于接收上述补全线程发送的上述目标数组之后,缓存上述目标数组;获取模块,用于获取上述目标数组中的参数值,以利用上述参数值唯一标识上述数据。
17.根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
18.根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
19.通过本发明,通过接收客户端发送的请求信息,其中,请求信息中包括参数步长;将参数步长发送至发号线程,其中,发号线程用于利用参数步长生成数据区间值;接收发号线程发送的数据区间值;基于数据区间值生成目标数组,其中,目标数组中包括标识信息,标识信息用于标识数据的唯一性。利用发号线程和补全线程实现了双线程发号的目的,保证了标识信息生成的性能。因此,可以解决相关技术中标识信息的生成性能较低的问题,达到提高标识信息的生成性能的效果。
附图说明
20.图1是本发明实施例的一种标识信息的生成方法的移动终端的硬件结构框图;
21.图2是根据本发明实施例的标识信息的生成方法的流程图(一);
22.图3是根据本发明实施例的标识信息的生成方法的流程图(二);
23.图4是根据本发明实施例的标识信息的接收方法的流程图;
24.图5是根据本发明实施例的具体实施例的流程图;
25.图6是根据本发明实施例的标识信息的生成装置的结构框图(一);
26.图7是根据本发明实施例的标识信息的生成装置的结构框图(二);
27.图8是根据本发明实施例的标识信息的接收装置的结构框图。
具体实施方式
28.下文中将参考附图并结合实施例来详细说明本发明的实施例。
29.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
30.本技术实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种标识信息的生成方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
31.存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的标识信息的生成方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
32.传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
33.在本实施例中提供了一种标识信息的生成方法,图2是根据本发明实施例的标识信息的生成方法的流程图(一),如图2所示,该流程包括如下步骤:
34.步骤s202,接收客户端发送的请求信息,其中,请求信息中包括参数步长;
35.例如,客户端发起获取标识信息的请求信息,通过超文本传输协议(hypertext transfer protocol,简称为http)协议get请求,传参为步长n;
36.步骤s204,将参数步长发送至发号线程,其中,发号线程用于利用参数步长生成数据区间值;
37.在本实施例中,补全线程调用发号线程,根据步长n获取数据区间值;
38.步骤s206,接收发号线程发送的数据区间值;
39.在本实施例中,数据区间值包括发号线程起始的默认值,会持久化到硬盘,启动时读入内存;
40.步骤s208,基于数据区间值生成目标数组,其中,目标数组中包括标识信息,标识信息用于标识数据的唯一性。
41.其中,上述步骤的执行主体可以为补全线程等,但不限于此。
42.通过上述步骤,通过接收客户端发送的请求信息,其中,请求信息中包括参数步长;将参数步长发送至发号线程,其中,发号线程用于利用参数步长生成数据区间值;接收发号线程发送的数据区间值;基于数据区间值生成目标数组,其中,目标数组中包括标识信息,标识信息用于标识数据的唯一性。利用发号线程和补全线程实现了双线程发号的目的,保证了标识信息生成的性能。因此,可以解决相关技术中标识信息的生成性能较低的问题,达到提高标识信息的生成性能的效果。
43.在一个示例性实施例中,基于数据区间值生成目标数组,包括:
44.s11,确定参数步长的第一预设类型的数组;
45.s12,利用数据区间值中的起始值、起始值与参数步长之间的和值,生成数组中的参数值;
46.s13,补全数组中的参数值,确定目标数组。
47.例如,创建n长度的long类型数组,然后根据区间起始值i和i n生成数组,补全id并返回客户端(单元测试这里每秒钟可以生成十亿级数字,单线程完全可以满足需求)。
48.在一个示例性实施例中,补全数组中的参数值,确定目标数组,包括:
49.s21,确定参数值的数量;
50.s22,按照参数值的数量补全数组中的参数值,确定目标数组。
51.在一个示例性实施例中,基于数据区间值生成目标数组之后,方法还包括:
52.s31,将目标数组的数字类型转换为第二预设类型;
53.s32,将转换为第二预设类型的目标数组发送至客户端。
54.例如,把long数字类型转为字符串类型再返给客户端,防止js接收时数字精度丢失,如果是java微服务或者数据库使用,可以使用long数组接收,自动转化为数组。
55.在本实施例中提供了一种标识信息的生成方法,图3是根据本发明实施例的标识信息的生成方法的流程图(二),如图3所示,该流程包括如下步骤:
56.步骤s302,接收补全线程发送的参数步长;
57.步骤s304,利用参数步长生成数据区间值;
58.步骤s306,将数据区间值发送至补全线程,以指示补全线程生成目标数组,其中,目标数组中包括标识信息,标识信息用于标识数据的唯一性。
59.其中,上述步骤的执行主体可以为发号线程等,但不限于此。
60.通过上述步骤,通过接收补全线程发送的参数步长;利用参数步长生成数据区间值;将数据区间值发送至补全线程,以指示补全线程生成目标数组,其中,目标数组中包括标识信息,标识信息用于标识数据的唯一性。利用发号线程和补全线程实现了双线程发号的目的,保证了标识信息生成的性能。因此,可以解决相关技术中标识信息的生成性能较低的问题,达到提高标识信息的生成性能的效果。
61.在一个示例性实施例中,利用参数步长生成数据区间值,包括:
62.s41,利用预设算法确定数组的起始值、起始值和参数步长之间的和值,以生成数据区间值。
63.在本实施例中提供了一种标识信息的接收方法,图4是根据本发明实施例的标识信息的接收方法的流程图,如图4所示,该流程包括如下步骤:
64.步骤s402,向补全线程发送请求信息,其中,请求信息中包括参数步长,补全线程用于利用请求信息生成目标数组;
65.步骤s404,接收补全线程发送的目标数组,其中,目标数组中包括标识信息,标识信息用于标识数据的唯一性。
66.在一个示例性实施例中,接收补全线程发送的目标数组之后,方法还包括:
67.s51,缓存目标数组;
68.s52,获取目标数组中的参数值,以利用参数值唯一标识数据。
69.下面结合具体实施例对本发明进行说明:
70.本实施例以比较与交换(compare and swap,简称为cas)算法实现为例,一种标识信息生成方法。cas是一种无锁算法,即不使用锁的情况下实现多线程之间的变量同步,也就是在没有线程被阻塞的情况下实现变量的同步,所以也叫非阻塞同步(non-blocking synchronization)。cas算法涉及到三个操作数:需要读写的内存值v、进行比较的值a、拟写入的新值b。当且仅当v的值等于a时,cas通过原子方式用新值b来更新v值,否则不会执行任何操作(比较和替换是原子一个原子操作)。一般情况下是一个自旋转操作,即不断的重试。好消息是jdk的原子类默认帮我们实现了高性能的cas算法,开箱即用。
71.在本实施例中,发号器为单进程应用,使用多线程生成全局唯一标识。核心线程有两个,分为“发号线程”和“补全线程”;
72.发号线程:生成自增的全局唯一id,内部使用cas算法,多线程访问时保证高性能,只负责实现原子性的加法操作,返回id区间的起始值;
73.补全线程:根据id区间的起始值创建并补全数组,返回前端long类的数据,并有意字符串化。
74.如图5所示,本实施例包括以下步骤:
75.s501,客户端发起获取id请求,http协议get请求,传参为步长n;
76.s502,补全线程调用发号线程,根据步长n获取id区间;
77.s503,发号线程默认起始值i,会持久化到硬盘,启动时读入内存;
78.s504,使用cas算法,原子累加后返回区间起始值i和i n;
79.s505,实时响应id区间的起始值;
80.s506,补全线程,创建n长度的long类型数组,然后根据区间起始值i和i n生成数组,补全id并返回客户端(单元测试这里每秒钟可以生成十亿级数字,单线程完全可以满足需求);
81.s507,实时响应ids数组给前端,默认会把long数字类型转为字符串类型再返给客户端,防止js接收时数字精度丢失,如果是java微服务或者数据库使用,可以使用long数组接收,自动转化为数组;
82.s508,客户端接收到数组后,本地缓存数组,挨个使用后再次获取;
83.在本实施例中,可以通过以下公式生成标识信息的数量:
[0084][0085]
其中,y:单位时间内生成的id数,t:一段时间,n:t时间内的并发请求数,每次请求步长假设为x,y,z等变量。
[0086]
y跟每次请求的步长总和(总id数量)成正比,故步长越大,y越大。取每次步长都为最小值1计算可得y的最小值。多次单元测试(普通笔记本),y最小为百万级,理论上无上限,性能极高。
[0087]
综上所述,本实施例的双线程发号实现,cas无锁算法加区间缓存机制,保证极高的性能;利用客户端缓存技术,类似边缘计算,把大量的计算和存储交个分布式的客户端处理,提高性能的同时降低服务器资源成本,客户端缓存技术同时大幅度降低获取id的qps并发数,降低服务端请求压力,使得单节点单进程发号器也能满足亿万级的id生成;生成的类数据库自增序列id,简单易用,老应用程序也能无缝迁移。
[0088]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0089]
在本实施例中还提供了一种标识信息的生成装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0090]
图6是根据本发明实施例的标识信息的生成装置的结构框图(一),如图6所示,该装置包括:
[0091]
第一接收模块62,用于接收客户端发送的请求信息,其中,上述请求信息中包括参数步长;
[0092]
第一发送模块64,用于将上述参数步长发送至发号线程,其中,上述发号线程用于利用上述参数步长生成数据区间值;
[0093]
第二接收模块66,用于接收上述发号线程发送的上述数据区间值;
[0094]
第一生成模块68,用于基于上述数据区间值生成目标数组,其中,上述目标数组中包括标识信息,上述标识信息用于标识数据的唯一性。
[0095]
在一个示例性实施例中,上述第一生成模块,包括:
[0096]
第一确定单元,用于确定上述参数步长的第一预设类型的数组;
[0097]
第一生成单元,用于利用上述数据区间值中的起始值、上述起始值与上述参数步长之间的和值,生成上述数组中的参数值;
[0098]
第一补全单元,用于补全上述数组中的参数值,确定上述目标数组。
[0099]
在一个示例性实施例中,上述第一补全单元,包括:
[0100]
第一确定子单元,用于确定上述参数值的数量;
[0101]
第二确定子单元,用于按照上述参数值的数量补全上述数组中的参数值,确定上述目标数组。
[0102]
在一个示例性实施例中,上述装置还包括:
[0103]
第一转换模块,用于基于上述数据区间值生成目标数组之后,将上述目标数组的数字类型转换为第二预设类型;
[0104]
第四发送模块,用于将转换为上述第二预设类型的目标数组发送至上述客户端。
[0105]
图7是根据本发明实施例的标识信息的生成装置的结构框图(二),如图7所示,该装置包括:
[0106]
第三接收模块72,用于接收补全线程发送的参数步长;
[0107]
第二生成模块74,用于利用上述参数步长生成数据区间值;
[0108]
第二发送模块76,用于将上述数据区间值发送至上述补全线程,以指示上述补全线程生成目标数组,其中,上述目标数组中包括标识信息,上述标识信息用于标识数据的唯一性。
[0109]
在一个示例性实施例中,上述第二生成模块,包括:
[0110]
第二生成单元,用于利用预设算法确定数组的起始值、上述起始值和上述参数步长之间的和值,以生成上述数据区间值。
[0111]
图8是根据本发明实施例的标识信息的接收装置的结构框图,如图8所示,该装置包括:
[0112]
第三发送模块82,用于向补全线程发送请求信息,其中,上述请求信息中包括参数步长,上述补全线程用于利用上述请求信息生成目标数组;
[0113]
第四接收模块84,用于接收上述补全线程发送的上述目标数组,其中,上述目标数组中包括标识信息,上述标识信息用于标识数据的唯一性。
[0114]
在一个示例性实施例中,上述装置还包括:
[0115]
缓存模块,用于接收上述补全线程发送的上述目标数组之后,缓存上述目标数组;
[0116]
获取模块,用于获取上述目标数组中的参数值,以利用上述参数值唯一标识上述数据。
[0117]
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
[0118]
本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
[0119]
在本实施例中,上述计算机可读存储介质可以被设置为存储用于执行以上各步骤的计算机程序。
[0120]
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:u盘、只读存储器(read-only memory,简称为rom)、随机存取存储器(random access memory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
[0121]
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步
骤。
[0122]
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
[0123]
在一个示例性实施例中,上述处理器可以被设置为通过计算机程序执行以上各步骤。
[0124]
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
[0125]
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0126]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

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

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

相关文献