1.本技术涉及分布式应用技术领域,特别涉及一种生成时序主键的方法、装置及设备。
背景技术:
2.随着万物互联时代的到来,物联网接入终端数量呈指数级增长,为了可以快速的进行状态判断,掌握趋势,并快速进行分析、决策,每个终端不停向后台传送数据,这样某一时刻的qps(query per second,每秒查询率)会由过去几百上千发展到上万,甚至千万级qps,出现高并发应用场景特性,如并发度高、资源依存度高、时间敏感度高等,从而无法满足高并发环境下时序主键生成要求。
3.现有技术中,针对这类高并发应用场景特性,主要通过以下方式生成时序主键:(1)使用数据库自增长序列生成时序主键,这种方式,每调用一次,就可以自动向上累计,获得一个自增长主键,实现方式比较简单,但性能较差,无法满足超高并发环境下时序主键生成要求。(2)使用uuid生成时序主键,uuid是应用基于当前时间、计数器和硬件标识地等信息随机产生,这种方式生成的时序主键无规则,且不包含时序特征,不能体现时序主键的全局递增趋势,从而无法满足超高并发环境下时序主键生成要求。(3)运用中间件生成时序主键,其中,中间件主要是缓存中间件,如redis,ehcache,memcache等,这种方式时间主要消耗在网络请求、分布锁和请求返回上,而且缓存中间件使用主机内存缓存数据,性能依赖中间件的写入和事务,存在性能瓶颈问题,此外,随着qps越高,硬件成本也会直线上升,从而无法满足超高并发环境下时序主键生成要求。可见,现有技术无法有效解决超高并发场景下,时序主键生成的问题。
4.因此,业内亟需一种可以解决上述技术问题的技术方案。
技术实现要素:
5.本说明书实施例提供了一种生成时序主键的方法、装置及设备,可以有效解决超高并发场景下时序主键的生成问题。
6.本说明书提供的一种生成时序主键的方法、装置及设备是包括以下方式实现的。
7.一种生成时序主键的方法,包括:应用于时序主键生成器,所述方法包括:在目标应用启动时,向时序注册装置发送注册请求;其中,所述注册请求中包括注册元数据;所述时序注册装置用于根据注册元数据生成目标应用对应的应用实例注册号;接收所述时序注册装置发送的应用实例注册号;获取全局计数器的数值作为主键计数值;获取所述目标应用启动时对应的时间作为主键时间标识;根据所述主键时间标识、所述主键计数值以及所述应用实例注册号,为所述目标应用生成时序主键。
8.一种生成时序主键的装置,包括:发送模块,用于在目标应用启动时,向时序注册装置发送注册请求;其中,所述注册请求中包括注册元数据;所述时序注册装置用于根据注册元数据生成目标应用对应的应用实例注册号;接收模块,用于接收所述时序注册装置发
送的应用实例注册号;第一获取模块,用于获取全局计数器的数值作为主键计数值;第二获取模块,用于获取所述目标应用启动时对应的时间作为主键时间标识;生成模块,用于根据所述主键时间标识、所述主键计数值以及所述应用实例注册号,为所述目标应用生成时序主键。
9.一种生成时序主键的设备,包括至少一个处理器以及存储计算机可执行指令的存储器,所述处理器执行所述指令时实现本说明书实施例中任意一个方法实施例的步骤。
10.一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现本说明书实施例中任意一个方法实施例的步骤。
11.本说明书提供的一种生成时序主键的方法、装置及设备。一些实施例中可以在目标应用启动时,向时序注册装置发送包括注册元数据的注册请求,以便时序注册装置根据注册元数据生成目标应用对应的应用实例注册号返回给时序主键生成器。还可以获取全局计数器的数值作为主键计数值,获取目标应用启动时对应的时间作为主键时间标识,根据主键时间标识、主键计数值以及应用实例注册号,为目标应用生成时序主键。由于时序主键是通过应用注册、单点生成,从而可以在多地域、多中心、多集群实现部署,满足在超高并发下时序主键生成需求。
附图说明
12.此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,并不构成对本说明书的限定。在附图中:
13.图1是本说明书提供的一种生成时序主键的方法的一个实施例的流程示意图;
14.图2是本说明书提供的一种生成时序主键的装置的一个实施例的模块结构示意图;
15.图3是本说明书提供的一种生成时序主键的服务器的一个实施例的硬件结构框图。
具体实施方式
16.为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书中的一部分实施例,而不是全部的实施例。基于本说明书中的一个或多个实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书实施例保护的范围。
17.下面以一个具体的应用场景为例对本说明书实施方案进行说明。具体的,图1是本说明书提供的一种生成时序主键的方法的一个实施例的流程示意图。虽然本说明书提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者部分合并后更少的操作步骤或模块单元。
18.本说明书提供的一种实施方案可以应用到时序主键生成器中。其中,时序主键生成器可以部署在目标应用中。目标应用可以运行在客户端或服务器等中。所述客户端可以包括终端设备,如智能手机、平板电脑等。所述服务器可以包括单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式系统的服务器结构等。
19.需要说明的是,下述实施例描述并不对基于本说明书的其他可扩展到的应用场景中的技术方案构成限制。具体的一种实施例如图1所示,本说明书提供的一种生成时序主键的方法的一种实施例中,所述方法可以包括以下步骤。
20.s0:在目标应用启动时,向时序注册装置发送注册请求;其中,所述注册请求中包括注册元数据;所述时序注册装置用于根据注册元数据生成目标应用对应的应用实例注册号。
21.其中,目标应用可以是分布式应用,也可以是其他应用。时序注册装置可以用于接收目标应用的注册元数据,利用注册元数据注册生成目标应用对应的应用实例注册号。应用实例注册号与应用实例注册标识一一对应。应用实例注册标识在时序注册装置中全局唯一,可以用来标识运行在分布式主机上的每一个应用实例。其中,应用每打开一次可以理解为是一个应用实例。
22.一些实施场景中,时序主键生成器可以采集分布式主机及应用信息作为注册元数据。一些实施场景中,所述注册元数据可以包括目标应用部署的分布式主机名称、目标应用名称、目标应用外呼对应的网卡物理地址、ip(internet protocol)地址、目标应用对外服务端口号等。
23.一些实施场景中,所述时序注册装置接收到注册请求后,可以对所述注册元数据进行哈希处理,获得第一应用实例注册标识;根据所述第一应用实例注册标识,获得目标应用对应的应用实例注册号。
24.例如一些实施场景中,时序主键生成器可以向时序注册装置发送包括注册元数据的注册请求,时序注册装置收到后注册请求后,可以根据预设哈希函数,对注册元数据进行哈希值计算,然后将计算结果作为第一应用实例注册标识。
25.一些实施场景中,时序注册装置在获得应用实例注册标识后,可以根据应用实例注册标识获得目标应用对应的应用实例注册号。
26.一些实施场景中,所述根据所述第一应用实例注册标识,获得目标应用对应的应用实例注册号,可以包括:将第一应用实例注册标识与数据库中已存储的应用实例注册标识进行比对;在已存储的应用实例注册标识中不存在所述第一应用实例注册标识的情况下,根据所述第一应用实例注册标识为目标应用生成对应的应用实例注册号。
27.一些实施场景中,将第一应用实例注册标识与数据库中已存储的应用实例注册标识进行比对后,还可以包括:在已存储的应用实例注册标识中存在所述第一应用实例注册标识的情况下,获取与所述第一应用实例注册标识相同的第二应用实例注册标识;将所述第二应用实例注册标识对应的应用实例注册号作为目标应用对应的应用实例注册号。
28.例如一些实施场景中,时序注册装置获得第一应用实例注册标识后,可以与时序注册装置对应的数据库存储的应用实例注册标识进行对比。如果数据库中不存在,则可以根据第一应用实例注册标识注册生成一个应用实例注册号;如果数据库中存在,则可以直接返回原来已生成的应用实例注册号。
29.需要说明的是,“第一”、“第二”只是为了区分应用实例注册标识,无特别含义。
30.一些实施场景中,在将所述第二应用实例注册标识对应的应用实例注册号作为目标应用对应的应用实例注册号后,还可以更新所述第二应用实例注册标识对应的应用实例注册号的注册时间。
31.一些实施场景中,在将所述第二应用实例注册标识对应的应用实例注册号作为目标应用对应的应用实例注册号后,可以将应用实例注册号返回给时序主键生成器。
32.s2:接收所述时序注册装置发送的应用实例注册号。
33.一些实施场景中,时序注册装置根据注册元数据生成目标应用对应的应用实例注册号后,可以将应用实例注册号返回给时序主键生成器。
34.一些实施场景中,时序主键生成器接收到应用实例注册号后,可以将其存储为应用实例范围内的全局静态变量,供应用实例全局使用,并在应用实例范围内有效。
35.一些实施场景中,所述应用实例注册号可以为第一预设位数的十进制数值。其中,所述第一预设位数最大为6。
36.例如一些实施场景中,应用实例注册号的最小值可以为0,最大值可以为62的三次方,即238328,最大长度为6位得出十进制数值。这样,全局可容纳238329个应用运行实例进行注册。当然,上述只是进行示例性说明,应用实例注册号不限于上述举例,所属领域技术人员在本技术技术精髓的启示下,还可能做出其它变更,但只要其实现的功能和效果与本技术相同或相似,均应涵盖于本技术保护范围内。
37.s4:获取全局计数器的数值作为主键计数值。
38.一些实施场景中,时序主键生成器在接收时序注册装置发送的应用实例注册号后,可以获取全局计数器的数值作为主键计数值。
39.一些实施场景中,所述获取全局计数器的数值作为主键计数值前,可以包括:在目标应用实例范围内建立一个全局计数器。其中,所述全局计数器可以用于累计目标应用实例范围内预设时间粒度的时序主键生成数量。预设时间粒度可以根据实际场景进行设定,例如可以是毫秒、秒等,本说明书对此不做限定。
40.一些实施场景中,所述主键计数值可以为第二预设位数的十进制数值。其中,第二预设位数最大可以为10。
41.例如一些实施场景中,时序主键生成器可以在运行应用实例范围内建立一个全局计数器,用于应用实例范围内某个时间粒度的时序主键生成数量累计,计数器从0开始累加,每产生一个时序主键,值累加1,累计最大值为2
31
‑
1,即2147483647,达到累计最大值后,计数器可以重置为0,然后重新在下一个时间粒度内从0开始累加。其中,每一次累加,可以返回一个应用实例范围内某个时间粒度的主键计数值。全局计数器在应用运行实例范围内有效。
42.一些实施场景中,全局计数器可以通过同步锁机制,支持多线程并发。这样,终端向应用实例发起的每一个请求,都会生成响应线程。累加前,线程可以获得一个对象的锁,累加后,可以释放锁。此外,为了提高响应效率,其它终端的响应线程可以采用非公平的锁机制,这样,在竞争前等待一个锁定对象计数器完成累加,可以确保在应用实例范围内某个时间粒度返回的累加值唯一。
43.s6:获取所述目标应用启动时对应的时间作为主键时间标识。
44.一些实施场景中,在获取全局计数器的数值作为主键计数值后,可以获取目标应用启动时对应的时间作为主键时间标识。当然,获取目标应用启动时对应的时间可以是在目标应用启动时获取,也可以是在获取全局计数器的数值时获取,还可以是在其他时刻获取,本说明书实施例中在获取全局计数器的数值后获取目标应用启动时对应的时间只是进
行示例性说明,对本说明书其他应用场景并不构成限定。
45.一些实施场景中,所述获取所述目标应用启动时对应的时间作为主键时间标识,可以包括:将获取的时间转化为第三预设位数的十进制数值;将第三预设位数的十进制数值作为主键时间标识。其中,第三预设位数可以为13。
46.例如一些实施场景,时序主键生成器可以以微秒的时间粒度采集分布式应用启动时对应的主机时间,然后将该时间转化为13位的十进制数值,将得到的13位数值作为主键时间标识。
47.s8:根据所述主键时间标识、所述主键计数值以及所述应用实例注册号,为所述目标应用生成时序主键。
48.一些实施场景中,在获得主键时间标识、主键计数值以及应用实例注册号后,可以根据主键时间标识、主键计数值以及应用实例注册号,为目标应用生成时序主键。
49.一些实施场景中,所述根据所述主键时间标识、所述主键计数值以及所述应用实例注册号,为所述目标应用生成时序主键,可以包括:将所述主键时间标识、所述主键计数值以及所述应用实例注册号进行拼接,获得目标应用对应的时序主键。
50.例如一些实施场景中,通过以上步骤,可以获得的三组十进制数值:(1)应用实例注册号,最大6位的十进制数值;(2)主键计数值,最大10位十进制数值;(3)主键时间标识,13位十进制数值。进一步,可以将上述三组十进制数值按照主键时间标识、主键计数值以及应用实例注册号的顺序进行拼接,从而生成目标应用对应的时序主键。这样,生成的时序主键在分布式数据库中可以做到全局唯一。
51.由于通过上述方式得到的时序主键的长度不能保证一致,一些实施场景中,对上述获得的三组十进制数值进一步进行了加工处理,使最终获得的时序主键可以满足分布式数据库主键要求。其中,分布式数据库主键要求可以包括:(1)主键为文本;(2)主键长度一致;(3)主键索引效率高,存储空间少。
52.一些实施场景中,所述将所述主键时间标识、所述主键计数值以及所述应用实例注册号进行拼接前,还可以包括:将数字、大写母、小字母按预设顺序连接,获得第一字符串;基于所述第一字符串分别对所述主键时间标识、所述主键计数值以及所述应用实例注册号进行转化,获得目标主键时间标识、目标主键计数值以及目标应用实例注册号;将所述目标主键时间标识、所述目标主键计数值以及所述目标应用实例注册号进行拼接,获得目标应用对应的时序主键。
53.一些实施场景中,预设顺序可以是ascii码表中的顺序,如在ascii码表中数字、大写母、小字母的排序规则如表1所示:
54.表1
55.0123456789
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
56.一些实施场景中,可以将数字、大写母、小字母62个字符按ascii码表中的顺序相连接,组成一个包括62个字符的字符串(即第一字符串)。进一步,可以利用包括62个字符的字符串代替表示十进制数字,获得六十二进制。
57.一些实施场景中,可以运用整除法,将获得的主键时间标识、主键计数值以及应用
实例注册号的十进制数值转化成六十二进制文本。
58.一些实施场景中,所述目标主键时间标识的长度可以为7;所述目标主键计数值的长度可以为6;所述目标应用实例注册号的长度可以为3。
59.例如一些实施场景中,可以将应用实例注册号的十进制数值,转化为长度为3位的六十二进制,不足3位的,左边可以用0补足;将主键计数值的十进制数值,转化为长度为6位的六十二进制,不足6位,左边用0补足;将主键时间标识的十进制数字,转化为长度为7位的六十二进制。进一步,可以将获得的7位、6位、3位六十二进制的固定长度文本,依次连接,获得16位文本作为目标时序主键。
60.当然,上述只是进行示例性说明,预设顺序不限于上述举例,所属领域技术人员在本技术技术精髓的启示下,还可能做出其它变更,但只要其实现的功能和效果与本技术相同或相似,均应涵盖于本技术保护范围内。
61.一些实施场景中,时序主键生成器为目标应用生成时序主键后,还可以定时向所述时序注册装置发送心跳信息,以使所述时序注册装置根据所述心跳信息刷新应用运行实例标识的更新时间。其中,所述应用运行实例标识与应用实例注册号对应。
62.例如一些实施场景中,时序主键生成器可以每10分钟向时序注册装置发起一次心跳请求。其中,心跳请求可以向时序注册装置说明时序主键生成器工作状态。
63.一些实施场景中,时序注册装置可以包括心跳信息处理单元和存储单元。其中,心跳信息处理单元可以用于处理时序主键生成器发送的心跳信息,每接收一次心跳信息,可以刷新一次存储单元中应用运行实例标识的更新时间。存储单元,可以用于存储元数据注册数据、应用运行实例标识、应用实例注册号和心跳记录等。
64.一些实施场景中,分布式主机中还可以部署有过滤拦截器,用于拦截前端请求,确保服务正常运行。例如一些实施场景中,分布式应用在启动后,时序主键生成器可以向时序注册装置申请注册,注册成功后,可以获得应用实例注册号,时序主键生成器正常工作,过滤拦截器放行,分布式应用正常对外提供服务。若注册不成功,未获得应用实例注册号,时序主键生成器就无法正常工作,此时,过滤拦截器介入,返回代表服务器内部错误的500异常,供负载均衡器等设备识别,负载均衡器会将应用下线,这样应用就无法对外提供服务。
65.一些实施场景中,可以采用应用启动拦截器。具体的,在应用启动过程中,时序主键生成器可以向时序注册装置申请注册,注册成功后,可以获得应用实例注册号,应用正常启动;注册不成功,未获得应用实例注册号时,拦截器介入,抛出启动异常,此时,应用无法正常启动。
66.本说明书实施例中,采用时序主键生成器向时序注册装置申请注册,可以实现每一个时序主键生成器不重复。由于时序注册装置可以运行于某一台主机上,也可以分布式部署,从而可以实现跨地域、跨中心注册,不需要缓存中间件进行大量的数据同步。
67.本说明书实施例中,由于全局计数器在单应用实例范围内工作,从而可以确保某个时间粒度范围内计数值不重复。由于全局计数器以应用服务器的最大计算能力为基础,在单位时间粒度范围内无法计算出最大计数值,也就无法将计数器重置为0,产生新一轮迭代,这样因主机时间同步造成的时间回拨,也不会造成主键重复,从而可以实现最大限度的容错。
68.本说明书实施例中,因为时序主键是基于单应用实例生成,单个运行实例每秒就
可以产生多个主键(如1000万),这样通过应用分布式部署,可以实现横向扩展,最大上线可达到上亿个(如23832亿)主键,从而可以满足极端的高并发情况下时序主键的生成要求,且做到时序主键全局唯一。
69.本说明书实施例,通过应用注册、单点生成,可以在多地域、多中心、多集群实现部署,满足在超高并发下时序主键生成需求。
70.本说明书实施例,依次将主键时间标识、主键计数值、应用实例注册号通过六十二进制转换压缩后,连接成16位的固定长度的时序主键,整体有序、全局唯一,从而解决了传统方法低效和现存主流方案的高成本问题,提升了分布式集群的吞吐能力。
71.本说明书实施例,不仅可以解决分布式缓存存在主机之间数据同步等问题,而且随着qps增长,可以解决跨地域时延、高带宽成本、时间回拨等问题。
72.当然,上述只是进行示例性说明,本说明书实施例不限于上述举例,所属领域技术人员在本技术技术精髓的启示下,还可能做出其它变更,但只要其实现的功能和效果与本技术相同或相似,均应涵盖于本技术保护范围内。
73.从以上的描述中,可以看出,本技术实施例可以在目标应用启动时,向时序注册装置发送包括注册元数据的注册请求,以便时序注册装置根据注册元数据生成目标应用对应的应用实例注册号返回给时序主键生成器。还可以获取全局计数器的数值作为主键计数值,获取目标应用启动时对应的时间作为主键时间标识,根据主键时间标识、主键计数值以及应用实例注册号,为目标应用生成时序主键。由于时序主键是通过应用注册、单点生成,从而可以在多地域、多中心、多集群实现部署,满足在超高并发下时序主键生成需求。
74.本说明书中上述方法的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参照即可,每个实施例重点说明的都是与其他实施例的不同之处。相关之处参见方法实施例的部分说明即可。
75.基于上述所述一种生成时序主键的方法,本说明书一个或多个实施例还提供一种生成时序主键的装置。所述的装置可以包括使用了本说明书实施例所述方法的系统(包括分布式系统)、软件(应用)、模块、组件、服务器、客户端等并结合必要的实施硬件的装置。基于同一创新构思,本说明书实施例提供的一个或多个实施例中的装置如下面的实施例所述。由于装置解决问题的实现方案与方法相似,因此本说明书实施例具体的装置的实施可以参见前述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
76.具体地,图2是本说明书提供的一种生成时序主键的装置的一个实施例的模块结构示意图,如图2所示,本说明书提供的一种生成时序主键的装置可以包括:发送模块120,接收模块122,第一获取模块124,第二获取模块126,生成模块128。
77.发送模块120,可以用于在目标应用启动时,向时序注册装置发送注册请求;其中,所述注册请求中包括注册元数据;所述时序注册装置用于根据注册元数据生成目标应用对应的应用实例注册号;
78.接收模块122,可以用于接收所述时序注册装置发送的应用实例注册号;
79.第一获取模块124,可以用于获取全局计数器的数值作为主键计数值;
80.第二获取模块126,可以用于获取所述目标应用启动时对应的时间作为主键时间
标识;
81.生成模块128,可以用于根据所述主键时间标识、所述主键计数值以及所述应用实例注册号,为所述目标应用生成时序主键。
82.其中,上述注册元数据可以包括目标应用部署的分布式主机名称、目标应用名称、目标应用外呼对应的网卡物理地址、ip地址、目标应用对外服务端口号。
83.一些实施场景中,所述时序注册装置接收到注册请求后,可以包括:
84.处理单元,可以用于对所述注册元数据进行哈希处理,获得第一应用实例注册标识;
85.获得单元,可以用于根据所述第一应用实例注册标识,获得目标应用对应的应用实例注册号。
86.一些实施场景中,所述获得单元,可以包括:
87.比对单元,可以用于将第一应用实例注册标识与数据库中已存储的应用实例注册标识进行比对;
88.第一生成单元,可以用于在已存储的应用实例注册标识中不存在所述第一应用实例注册标识的情况下,根据所述第一应用实例注册标识为目标应用生成对应的应用实例注册号。
89.一些实施场景中,所述获得单元,还可以包括:
90.第一获取单元,可以用于在已存储的应用实例注册标识中存在所述第一应用实例注册标识的情况下,获取与所述第一应用实例注册标识相同的第二应用实例注册标识;
91.第二生成单元,可以用于将所述第二应用实例注册标识对应的应用实例注册号作为目标应用对应的应用实例注册号。
92.一些实施场景中,在将所述第二应用实例注册标识对应的应用实例注册号作为目标应用对应的应用实例注册号后,还可以包括:
93.更新单元,可以用于更新所述第二应用实例注册标识对应的应用实例注册号的注册时间。
94.一些实施场景中,所述获取全局计数器的数值作为主键计数值前,可以包括:
95.建立单元,可以用于在目标应用实例范围内建立一个全局计数器;其中,所述全局计数器用于累计目标应用实例范围内预设时间粒度的时序主键生成数量。
96.一些实施场景中,所述应用实例注册号可以为第一预设位数的十进制数值;所述主键计数值可以为第二预设位数的十进制数值;其中,所述第一预设位数最大可以为6,第二预设位数最大可以为10。
97.一些实施场景中,所述第二获取模块126,可以包括:
98.转化单元,可以用于将获取的时间转化为第三预设位数的十进制数值;
99.第二获取单元,可以用于将第三预设位数的十进制数值作为主键时间标识。
100.一些实施场景中,所述生成模块128,可以包括:
101.第一拼接单元,可以用于将所述主键时间标识、所述主键计数值以及所述应用实例注册号进行拼接,获得目标应用对应的时序主键。
102.一些实施场景中,所述将所述主键时间标识、所述主键计数值以及所述应用实例注册号进行拼接前,还可以包括:
103.连接单元,可以用于将数字、大写母、小字母按预设顺序连接,获得第一字符串;
104.转化单元,可以用于基于所述第一字符串分别对所述主键时间标识、所述主键计数值以及所述应用实例注册号进行转化,获得目标主键时间标识、目标主键计数值以及目标应用实例注册号;
105.第二拼接单元,可以用于将所述目标主键时间标识、所述目标主键计数值以及所述目标应用实例注册号进行拼接,获得目标应用对应的时序主键。
106.一些实施场景中,所述目标主键时间标识的长度可以为7;所述目标主键计数值的长度可以为6;所述目标应用实例注册号的长度可以为3。
107.一些实施场景中,还可以包括:
108.发送单元,可以用于定时向所述时序注册装置发送心跳信息,以使所述时序注册装置根据所述心跳信息刷新应用运行实例标识的更新时间;其中,所述应用运行实例标识与应用实例注册号对应。
109.需要说明的,上述所述的装置根据方法实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
110.本说明书还提供一种生成时序主键的设备的实施例,包括处理器及用于存储处理器可执行指令的存储器,所述指令被所述处理器执行时实现包括以下步骤:在目标应用启动时,向时序注册装置发送注册请求;其中,所述注册请求中包括注册元数据;所述时序注册装置用于根据注册元数据生成目标应用对应的应用实例注册号;接收所述时序注册装置发送的应用实例注册号;获取全局计数器的数值作为主键计数值;获取所述目标应用启动时对应的时间作为主键时间标识;根据所述主键时间标识、所述主键计数值以及所述应用实例注册号,为所述目标应用生成时序主键。
111.需要说明的,上述所述的设备根据方法或装置实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
112.本说明书所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图3是本说明书提供的一种生成时序主键的服务器的一个实施例的硬件结构框图,该服务器可以是上述实施例中的生成时序主键的装置或生成时序主键的设备。如图3所示,服务器10可以包括一个或多个(图中仅示出一个)处理器100(处理器100可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器200、以及用于通信功能的传输模块300。本领域普通技术人员可以理解,图3所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器10还可包括比图3中所示更多或者更少的组件,例如还可以包括其他的处理硬件,如数据库或多级缓存、gpu,或者具有与图3所示不同的配置。
113.存储器200可用于存储应用软件的软件程序以及模块,如本说明书实施例中的生成时序主键的方法对应的程序指令/模块,处理器100通过运行存储在存储器200内的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器200可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器200可进一步包括相对于处理器100远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
114.传输模块300用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输模块300包括一个网络适配器(network interface controller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块300可以为射频(radio frequency,rf)模块,其用于通过无线方式与互联网进行通讯。
115.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
116.本说明书提供的上述实施例所述的方法或装置可以通过计算机程序实现业务逻辑并记录在存储介质上,所述的存储介质可以计算机读取并执行,实现本说明书实施例所描述方案的效果。所述存储介质可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方式的媒体加以存储。所述存储介质可以包括:利用电能方式存储信息的装置如,各式存储器,如ram、rom等;利用磁能方式存储信息的装置如,硬盘、软盘、磁带、磁芯存储器、磁泡存储器、u盘;利用光学方式存储信息的装置如,cd或dvd。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。
117.本说明书提供的上述生成时序主键的方法或装置实施例可以在计算机中由处理器执行相应的程序指令来实现,如使用windows操作系统的c 语言在pc端实现、linux系统实现,或其他例如使用android、ios系统程序设计语言在智能终端实现,以及基于量子计算机的处理逻辑实现等。
118.需要说明的是说明书上述所述的装置、设备、系统根据相关方法实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照对应方法实施例的描述,在此不作一一赘述。
119.本技术中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参照即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件 程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
120.为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把部分模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。
121.本发明是参照根据本发明实施例的方法、装置、设备、系统的流程图和/或方框图来描述的。应理解可由计算机程序指令实现,可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
122.本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。
123.以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
转载请注明原文地址:https://win.8miu.com/read-26087.html