G06F16/22 G06F9/455
1.一种序列号处理方法,其特征在于,所述方法包括:
接收序列号申请请求;
根据所述序列号申请请求在序列号池中选取序列号;
将所述序列号的占用位设置为占用,并返回所述序列号;
其中,所述序列号由统一预先配置后存储于所述序列号池中。
2.如权利要求1所述的方法,其特征在于,
所述预先配置包括:序列号长度配置、起始序列号配置、结束序列号配置和序列号个数配置。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
监控集中的事件的运行情况;
若所述事件运行结束,根据所述事件的标识在所述序列号池中查出相对应的序列号,并将所述序列号的占用位设置为未占用。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:
扫描集中的所有事件,获取所述事件的健康状态列表;
对比所述序列号池中序列号的状态,若所述序列号的占用位为占用,且其对应的事件不在所述健康状态列表中,则将所述序列号的占用位设置为未占用。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述序列号池中占用位标记为未占用的序列号的个数小于预设的阈值,按照所述预先配置生成新的序列号并存放于所述序列号池中。
6.一种序列号处理系统,其特征在于,所述系统包括:
序列号池,用于存储统一预先配置后的序列号;
序列号管理模块,用于接收序列号申请请求,根据所述序列号申请请求在序列号池中选取序列号,将所述序列号的占用位设置为占用,并返回所述序列号。
7.如权利要求6所述的系统,其特征在于,
所述预先配置包括:序列号长度配置、起始序列号配置、结束序列号配置和序列号个数配置。
8.如权利要求6所述的系统,其特征在于,所述系统还包括:
事件监控模块,用于监控集中的事件的运行情况;
若所述事件运行结束,根据所述事件的标识在所述序列号池中查出相对应的序列号,并将所述序列号的占用位设置为未占用。
9.如权利要求6所述的系统,其特征在于,所述系统还包括:
扫描模块,用于扫描集中的所有事件,获取所述事件的健康状态列表;
对比所述序列号池中序列号的状态,若所述序列号的占用位为占用,且其对应的事件不在所述健康状态列表中,则将所述序列号的占用位设置为未占用。
10.如权利要求6所述的系统,其特征在于,所述序列号管理模块还用于:
若所述序列号池中占用位标记为未占用的序列号的个数小于预设的阈值,按照所述预先配置生成新的序列号并存放于所述序列号池中。
11.一种序列号处理装置,包括存储器和处理器,其特征在于,
所述存储器用于存储一条或多条计算机指令;
所述处理器用于调用所述一条或多条计算机指令从而执行如权利要求1-5中任一项所述的序列号处理方法。
12.一种计算机存储介质,存储有一条或多条计算机程序,其特征在于,所述一条或多条计算机程序在调用时执行如权利要求1-5中任一项所述的序列号处理方法。
本发明涉及信息技术领域,更为具体而言,涉及一种序列号处理方法及系统、设备和存储介质。
在分布式环境特别是容器场景下,例如采用Kubernetes进行集管理的Docker容器集,Kubernetes为容器化的应用提供了资源调度、部署运行、服务发现、扩容、缩容等一套功能。应用程序及相关依赖被打包成容器镜像,Pod(Plain Old Documentation,标记型语言)则通常包含一个或多个紧密相关的容器,并且寄生于集的Node节点中,Node节点可以为物理机,也可以是虚拟机。容器镜像在Pod中被Kubernetes调度运行单个或多个副本,相关的服务进程共同形成Service,Pod随着Service而创建和销毁,并且由于集策略可能游离于不同Node节点中。
容器化将服务最大化的分离,通过网络进行交互,解除了耦合,提高了可靠性和高效性。然而,对于某些应用场景中,集中的服务进程往往有着获取特定序列号的需求,并且对与序列号可能还存在着如全局唯一、定长等特殊限制。特别是在对稳定性、可靠性、一致性有着极高要求的银行业信息系统中,各系统往往对对每一事件分配一个例如全局事件跟踪号的全局唯一序列号进行流水记录,以保证在系统出现异常时追溯到异常及影响范围,并且该序列号限定在固定长度内。
目前,对于全局唯一序列号典型的解决方案通常有以下两种:1、通过应用数据库提供的自增长序列字段;2、通过算法生成如GUID型字段。但是,方案1当应用数据库不同时需要考虑不同的语法和实现,分库分表时无法保证唯一性,且序列号一直增长是非定长的;而方案2无法适用于序列号限制在较短长度的场景。同时传统的全局唯一序列号生成的解决方案也很难适用于容器集的环境下的需求,应用程序的镜像包含基本的操作系统依赖,对应用程序来说Pod就相当于其寄生的机器环境,依据Pod为单位分配序列号时,随着容器集中频繁的创建销毁Pod,传统方案中分配过的序列号而不会随着Pod的销毁而被释放,并不适用于限定长度的场景。
为了解决现有技术中存在的上述问题,本发明提供了一种序列号处理方法及系统、设备和存储介质,不仅能有效保证序列号的全局唯一性,更能满足序列号长度受限的特殊需求。
根据本发明的实施方式,提供了一种序列号处理方法,所述方法包括:接收序列号申请请求;根据所述序列号申请请求在序列号池中选取序列号;将所述序列号的占用位设置为占用,并返回所述序列号;其中,所述序列号由统一预先配置后存储于所述序列号池中。
在本发明的一些实施方式中,所述预先配置包括:序列号长度配置、起始序列号配置、结束序列号配置和序列号个数配置。
在本发明的一些实施方式中,所述方法还包括:监控集中的事件的运行情况;若所述事件运行结束,根据所述事件的标识在所述序列号池中查出相对应的序列号,并将所述序列号的占用位设置为未占用。
在本发明的一些实施方式中,所述方法还包括:扫描集中的所有事件,获取所述事件的健康状态列表;对比所述序列号池中序列号的状态,若所述序列号的占用位为占用,且其对应的事件不在所述健康状态列表中,则将所述序列号的占用位设置为未占用。
在本发明的一些实施方式中,所述方法还包括:若所述序列号池中占用位标记为未占用的序列号的个数小于预设的阈值,按照所述预先配置生成新的序列号并存放于所述序列号池中。
根据本发明的实施方式,提供了一种序列号处理系统,所述系统包括:序列号池,用于存储统一预先配置后的序列号;序列号管理模块,用于接收序列号申请请求,根据所述序列号申请请求在序列号池中选取序列号,将所述序列号的占用位设置为占用,并返回所述序列号。
在本发明的一些实施方式中,所述预先配置包括:序列号长度配置、起始序列号配置、结束序列号配置和序列号个数配置。
在本发明的一些实施方式中,所述系统还包括:事件监控模块,用于监控集中的事件的运行情况;若所述事件运行结束,根据所述事件的标识在所述序列号池中查出相对应的序列号,并将所述序列号的占用位设置为未占用。
在本发明的一些实施方式中,所述系统还包括:扫描模块,用于扫描集中的所有事件,获取所述事件的健康状态列表;对比所述序列号池中序列号的状态,若所述序列号的占用位为占用,且其对应的事件不在所述健康状态列表中,则将所述序列号的占用位设置为未占用。
在本发明的一些实施方式中,所述序列号管理模块还用于:若所述序列号池中占用位标记为未占用的序列号的个数小于预设的阈值,按照所述预先配置生成新的序列号并存放于所述序列号池中。
同时,本发明提供了一种序列号处理装置,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令;所述处理器用于调用所述一条或多条计算机指令从而执行前述任一项的序列号处理方法。
本发明还提供了一种计算机存储介质,存储有一条或多条计算机程序,所述一条或多条计算机程序在调用时实现前述任一项的序列号处理方法。
本发明的方法通过将序列号预先配置后统一存储于序列号池中,使得唯一序列号的生成更加灵活动态可配置,结合事件驱动和扫描的机制使得序列号可重复再利用得到了保障,不仅能有效保证序列号的全局唯一性,更能满足序列号长度受限的特殊需求。
为了便于理解本发明,以下通过具体实施方式并结合附图对本发明进行具体说明。
图1是根据本发明实施方式的一种序列号处理方法的流程示意图;
图2是根据本发明实施方式的一种序列号处理系统的框图。
以下结合附图和具体实施方式对本发明的各个方面进行详细阐述。其中,众所周知的模块、单元及其相互之间的连接、链接、通信或操作没有示出或未作详细说明。并且,所描述的特征、架构或功能可在一个或一个以上实施方式中以任何方式组合。本领域技术人员应当理解,下述的各种实施方式只用于举例说明,而非用于限制本发明的保护范围。还可以容易理解,本文所述和附图所示的各实施方式中的模块或单元或处理方式可以按各种不同配置进行组合和设计。
首先,对本发明涉及的名词进行解释:
Kubernetes:简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署,规划,更新,维护的一种机制。
Docker:是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Pod:全称Plain Old Documentation,是一种用于记录Perl编程语言的轻量级标记语言。
图1是根据本发明实施方式的一种序列号处理方法的流程示意图,在本发明的实施方式中,参照图1,该方法具体包括:
100:接收序列号申请请求;
101:根据该序列号申请请求在序列号池中选取序列号;
102:将序列号的占用位设置为占用,并返回该序列号。
其中,序列号由统一预先配置后存储于序列号池中。
在本发明的实施方式中,可配置的序列号池是全局序列号分配的来源,通过对其进行初始化,序列号分配,序列号释放等操作。对序列号池加入的序列号保持相互唯一,特别当加入的序列号保持在固定长度内时,即能达到全局序列号长度受限的要求。
在本发明的实施方式中,序列号池既可在内存中实现,此情况下适用于无需持久化的场景,拥有速度快等优点;也可在持久化数据库中实现,提升可靠性。例如,在可选的实施方式中采取后者的实现方式,基于ORACLE 12C数据库实现的序列号池数据表结构如下表。
表1:
字段名 字段类型 是否可为空 字段含义 1 UNO char(3) NOT NULL 全局唯一的序列号 2 USED char(1) NULL 是否被占用标志位 3 OWENER VARchar2(50) NULL 占用者 4 TMS TIMESTAMP(3) NULL 时间戳 5 RMRK VARchar2(50) NULL 预留备注
在本发明的实施方式中,预先配置包括:序列号长度配置、起始序列号配置、结束序列号配置和序列号个数配置。通过该预先配置能有效保证序列号的全局唯一性,同时满足序列号长度受限的特殊需求。
为了保证无效序号的回收再利用,在本发明的实施方式中,可以通过以下处理方式实现:
监控集中的事件的运行情况;
若事件运行结束,根据该事件的标识在序列号池中查出相对应的序列号,并将该序列号的占用位设置为未占用。
具体的,以Kubernetes管理的Docker分布式容器集为例进行说明。在本发明的实施方式中,事件监控可以基于事件驱动的方式进行,结合Kubernetes架构提供的事件监听接口,事件监控模块对容器集中Pod资源的Pod销毁事件和Pod异常退出事件进行监听。
当监控到某个Pod正常运行结束,触发产生销毁事件,则以该Pod标识作为占用者名申请释放其占用的序号。接收到释放申请后,通过到可配置的序列号池中为占用者名且占用标志位为已占用的序列号,将其占用位设置为未占用以进行释放。当监控到某个Pod出现异常退出,触发产生异常退出事件,则以该Pod标识作为占用者名申请释放其占用的序号。接收到释放申请后,通过到可配置的序列号池中为占用者名且占用标志位为已占用的序列号,将其占用位设置为未占用以进行释放。
同时,在本发明的实施方式中,为了保证失效序号的释放,在事件监控的基础上还可以结合扫描机制,以提高回收效率。可选的,可以通过以下处理方式实现:
扫描集中的所有事件,获取事件的健康状态列表;
对比序列号池中序列号的状态,若序列号的占用位为占用,且其对应的事件不在健康状态列表中,则将该序列号的占用位设置为未占用。
具体的,可以按照据具体情况而配置的扫描周期参数,定时启动对容器集中的Pod进行全局扫描,获取当前集中所有状态健康Pod的列表,进而对可配置的序列号池当前状态作对比,对于序列号池中占用位为已占用的序列号占用者,而又不在状态健康Pod列表中的,申请对其对应的序列号进行释放。
在本发明的实施方式中,为了保证可配置的序列号池中可用的序列号的个数,在序列号池中占用位标记为未占用的序列号的个数小于预设的阈值时,按照预先配置生成新的序列号并存放于序列号池中。
本发明的实施方式通过将序列号预先配置后统一存储于序列号池中,使得唯一序列号的生成更加灵活动态可配置,结合事件驱动和扫描的机制使得序列号可重复再利用得到了保障,不仅能有效保证序列号的全局唯一性,更能满足序列号长度受限的特殊需求。
图2是根据本发明实施方式的一种序列号处理系统1的框图,参照图2,该数据存储系统1包括:序列号池11,用于存储统一预先配置后的序列号;序列号管理模块12,用于接收序列号申请请求,根据序列号申请请求在序列号池11中选取序列号,将序列号的占用位设置为占用,并返回序列号。
在本发明的实施方式中,预先配置包括:序列号长度配置、起始序列号配置、结束序列号配置和序列号个数配置。
在本发明的实施方式中,该数据存储系统1还包括:事件监控模块13,用于监控集中的事件的运行情况;若事件运行结束,根据该事件的标识在序列号池11中查出相对应的序列号,并将序列号的占用位设置为未占用。
在本发明的实施方式中,该数据存储系统1还包括:扫描模块14,用于扫描集中的所有事件,获取事件的健康状态列表;并对比序列号池11中序列号的状态,若序列号的占用位为占用,且其对应的事件不在健康状态列表中,则将该序列号的占用位设置为未占用。
在本发明的实施方式中,序列号管理模块12还用于:若序列号池11中占用位标记为未占用的序列号的个数小于预设的阈值,按照预先配置生成新的序列号并存放于序列号池11中。
可选的,本发明实施方式提供了一种序列号处理装置,该数据存储装置包括存储器,用于存储一条或多条计算机指令;处理器,用于调用一条或多条计算机指令从而执行本发明前述实施方式或实现方式所提供的序列号处理方法。可选地,在本发明实施方式的一种实现方式中,序列号处理装置还可以包括用于进行数据通信的输入输出接口。例如,处理装置可以是智能终端、服务器等。
本发明实施方式还提供了一种计算机存储介质,存储有一条或多条计算机指令,用于在调用时实现本发明前述实施方式或实现方式提供的序列号处理方法。例如,存储介质可以包括硬盘、软盘、光盘等。
虽然本文举例描述了一些实施方式,但是,在不脱离本发明实质的前提下,可以对这些实施方式进行各种变形,所有这些变形仍属于本发明的构思,并且落入本发明权利要求所限定的保护范围。
本文所公开的具体实施方式仅用于举例说明本发明,对于本领域技术人员而言,显然可以根据本文的教导进行各种修改,可以采用各种等同的方式实施本发明,因此,本发明上述公开的特定的实施方式仅仅是示例性的,其保护范围不受在此公开的结构或设计的细节所限,除非在权利要求中另有说明。因此,上述公开的特定的示例性的实施方式可进行各种替换、组合或修改,其所有的变形都落入本文公开的范围内。在缺少本文没有具体公开的任何元件或缺少本文公开的任选的部件的情况下,本文示例性公开的序列号处理方法及系统、装置和存储介质仍可适当地实施。上述公开的所有的数值和范围也可进行一定变化。每当公开了具有下限和上限的数值范围,落入此范围内的任何数值及任何被包含的范围都被具体地公开了。具体而言,本文公开的数值的任一范围均可理解为列举了包含在较宽数值范围内的任一数值和范围。同样,除非申请人明确且清楚地另有定义,权利要求中的术语具有它们的清楚、通常的含义。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施方式或者实施方式的某些部分的方法。
此外,权利要求书中的部件的数量包括一个或至少一个,除非另有说明。如果本发明中的用词或术语与其它文献中的用法或含义存在不一致,则应当以与本发明所定义的为准。
本文发布于:2023-04-15 08:13:34,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/4/87040.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |