本公开涉及云计算,具体的涉及分布式,更具体地涉及一种分布式序号采集方法、装置、设备、存储介质和程序产品。
背景技术:
1、为了支持大规模并发,分布式系统一般采用双号段分片序号库做高可用部署。当序号库分段序号被消耗时,序号库会更新当前序号值,当序号库号段耗尽后会循环,且序号存储在多个业务集群内存内,多台服务器共用同一种序号类型,当某台服务器一直没有业务消耗本地序号时,当其它服务器并发量较大导致号段循环后,会导致不同业务集群内存在相同序列,导致生成的业务id相同。
2、需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
技术实现思路
1、鉴于上述问题,本公开提供了一种分布式序号获取方法、装置、设备、存储介质和程序产品。
2、根据本公开的第一个方面,提供了一种分布式序号获取方法,应用于业务节点,所述业务节点部署多个业务容器,所述方法包括:
3、接收序号库发送的新增序号信息,其中,所述新增序号信息包括新增号段和版本号;
4、根据所述版本号对所述新增号段和存量号段进行版本一致性检验,其中,所述存量号段存储于消息队列中,每一所述业务容器与所述消息队列的主题唯一对应;
5、若版本一致性检验通过,根据所述业务容器的标识将所述新增号段推送至消息队列中。
6、根据本公开的实施例,所述方法还包括:
7、当所述业务容器重启后,根据所述业务容器的标识消费消息队列的存量号段。
8、根据本公开的实施例,所述根据所述版本号对所述新增号段和存量号段进行版本一致性检验包括:
9、根据业务容器标识获取存量号段的版本号;
10、将所述存量号段的版本号与所述新增号段的版本号进行比对;以及
11、根据比对结果确定版本一致性检验结果。
12、根据本公开的实施例,所述方法还包括:
13、接收所述序号库返回的标识位;以及
14、根据所述标识位确定获取号段的序号库。
15、根据本公开的实施例,所述根据所述标识位确定获取号段的序号库包括:
16、根据所述标识位确定序号库号段剩余状态;
17、当确定所述序号库号段用尽后,向序号监听器发送一级监控报警;
18、从对端序号库获取号段直至消息队列补充至预设数量,其中,所述对端序号库为所述序号库的备用库;以及
19、当确定所述对端序号库号段达到预设阈值时,向序号监听器发送二级监控报警,其中所述二级监控报警用于指示序号库进行号段循环以生成新号段。
20、根据本公开的实施例,所述方法还包括:
21、当确定消息队列发生故障时,通过降级读取序号库获取预设数量的号段存储于本地内存。
22、根据本公开的实施例,所述方法还包括:
23、若版本一致性检验不通过,根据业务容器标识删除消息队列中的存量号段;以及
24、重新向序号库发送请求补充预设数量的号段至消息队列中。
25、本公开的第二方面提供了一种分布式序号获取方法,应用于序号监听器,所述方法包括:
26、响应于业务容器发送的报警信号,确定报警等级和报警序号类别;
27、根据所述报警等级触发序号库对所述报警序号类别进行号段循环,以生成新号段;
28、将当前时间戳作为所述新号段的版本号。
29、根据本公开的实施例,还包括:
30、定时扫描序号库每种序号的使用率;以及
31、根据所述每种序号的使用率对序号容量进行调整。
32、本公开的第三方面提供了一种分布式序号获取装置,应用于业务节点,所述业务节点部署多个业务容器,所述装置包括:
33、序号信息接收模块,用于接收序号库发送的新增序号信息,其中,所述新增序号信息包括新增号段和版本号;
34、版本检验模块,用于根据所述版本号对所述新增号段和存量号段进行版本一致性检验,其中,所述存量号段存储于消息队列中,每一所述业务容器与所述消息队列的主题唯一对应;以及
35、存储模块,用于若版本一致性检验通过,根据所述业务容器的标识将所述新增号段推送至消息队列中。
36、根据本公开的实施例,所述装置还包括:存量序号消费模块。
37、存量序号消费模块,用于当所述业务容器重启后,根据所述业务容器的标识消费消息队列的存量号段。
38、根据本公开的实施例,所述版本检验模块包括第一获取子模块、比对子模块和第一确定子模块。
39、第一获取子模块,用于根据业务容器标识获取存量号段的版本号;
40、比对子模块,用于将所述存量号段的版本号与所述新增号段的版本号进行比对;以及
41、第一确定子模块,用于根据比对结果确定版本一致性检验结果。
42、根据本公开的实施例,所述装置还包括:标识位接收模块和第一确定模块。
43、标识位接收模块,用于接收所述序号库返回的标识位;以及
44、第一确定模块,用于根据所述标识位确定获取号段的序号库。
45、根据本公开的实施例,所述第一确定模块包括:第一确定子模块、第一发送子模块、第二获取子模块和第二发送子模块。
46、第一确定子模块,用于根据所述标识位确定序号库号段剩余状态;
47、第一发送子模块,用于当确定所述序号库号段用尽后,向序号监听器发送一级监控报警;
48、第二获取子模块,用于从对端序号库获取号段直至消息队列补充至预设数量,其中,所述对端序号库为所述序号库的备用库;以及
49、第二发送子模块,用于当确定所述对端序号库号段达到预设阈值时,向序号监听器发送二级监控报警,其中所述二级监控报警用于指示序号库进行号段循环以生成新号段。
50、根据本公开的实施例,所述装置还包括:第二确定模块。
51、第二确定模块,用于当确定消息队列发生故障时,通过降级读取序号库获取预设数量的号段存储于本地内存。
52、根据本公开的实施例,所述装置还包括:删除模块和发送模块。
53、删除模块,用于若版本一致性检验不通过,根据业务容器标识删除消息队列中的存量号段;以及
54、发送模块,用于重新向序号库发送请求补充预设数量的号段至消息队列中。
55、本公开的第四方面提供了一种分布式序号获取装置,应用于序号监听器,所述装置包括:
56、确定模块,用于响应于业务容器发送的报警信号,确定报警等级和报警序号类别;
57、号段生成模块,用于根据所述报警等级触发序号库对所述报警序号类别进行号段循环,以生成新号段;
58、版本号生成模块,用于将当前时间戳作为所述新号段的版本号。
59、根据本公开的实施例,所述装置还包括:扫描模块和调整模块。
60、扫描模块,用于定时扫描序号库每种序号的使用率;
61、调整模块,用于根据所述每种序号的使用率对序号容量进行调整。
62、本公开的第五方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述分布式序号获取方法。
63、本公开的第六方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述分布式序号获取方法。
64、本公开的第七方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述分布式序号获取方法。
65、通过本公开的实施例提供的一种分布式序号获取方法,当接收序号库发送的新增序号信息时,根据所述版本号对新增号段和存量号段进行版本一致性检验;在确定版本一致性检验通过后,根据所述业务容器的标识将新增号段推送至消息队列中。由于每一业务容器对应消息队列中的主题,业务节点将从序号库获取到的序号存储至消息队列中,相较于相关技术,本公开实施例提供的分布式序号获取方法,能够避免号段资源的浪费,保证号段的唯一性,有效避免业务id不一致的问题。