System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于应用节点的序号生成方法及其装置、电子设备制造方法及图纸_技高网

基于应用节点的序号生成方法及其装置、电子设备制造方法及图纸

技术编号:40598445 阅读:2 留言:0更新日期:2024-03-12 22:02
本发明专利技术公开了一种基于应用节点的序号生成方法及其装置、电子设备,涉及金融科技领域或其他相关领域,其中,该序号生成方法包括:响应节点编码请求,获取目标容器的容器序号,其中,节点编码请求是指目标应用节点申请新的编码序号时发起的请求;获取中心数据库的数据库标识,其中,中心数据库是指目标容器正常运行状态下待调用的数据库;基于容器序号和数据库标识生成目标容器的容器编码;基于目标容器的容器编码、目标应用节点的序列号和当前时间戳,生成目标应用节点待使用的编码序号。本发明专利技术解决了相关技术中容器编码重复导致应用节点的编码序号重复,进而引发系统调用异常的技术问题。

【技术实现步骤摘要】

本专利技术涉及金融科技领域,具体而言,涉及一种基于应用节点的序号生成方法及其装置、电子设备


技术介绍

1、雪花算法是一种分布式序列号生成算法,用于在不同的应用节点上生成唯一的id,原理是将机器id+时间戳+递增序列号等拼接生成一个64位二进制long类型数字,进而转换成十进制数字保存。例如,应用节点的分布式序列号结构(如图2所示):在相同机器上,通过41-bit时间戳(毫秒级)+12-bit序列号确保不重复,时间戳相同的情况下,序列号递增;不同的机器之间通过机器号(即10bit-机器id)不同来确保机器之间序列号不重复。

2、相关技术中,雪花算法的时间戳部分和序列号部分是基本固定的,针对中间10bit-机器id部分,通常采用以下两种方法来确保唯一性:1,使用zookeeper中间件通过创建临时性节点、运用分布式锁机制禁止机器id重复注册;2,使用基于数据库的机器号分配方式,利用数据库表中主键不能冲突来确保注册的机器id不会重复。

3、但是,以上方法存在明显的弊端:1,使用zookeeper中间件的方式对于本身没有引入zookeeper中间件的非分布式应用来说,单为了生成雪花算法序列号而引入中间件会带来更大的运维成本和负担。2,基于数据库的机器号分配方式在中心数据库扩展多个分库时,会出现分库之间的机器id(容器编码)重复,导致在高频调用的过程中容易产生相同的应用节点编码序号,导致系统调用异常。

4、针对上述的问题,目前尚未提出有效的解决方案。


技术实现思路</p>

1、本专利技术实施例提供了一种基于应用节点的序号生成方法及其装置、电子设备,以至少解决相关技术中容器编码重复导致应用节点的编码序号重复,进而引发系统调用异常的技术问题。

2、根据本专利技术实施例的一个方面,提供了一种基于应用节点的序号生成方法,包括:响应节点编码请求,获取目标容器的容器序号,其中,所述节点编码请求是指目标应用节点申请新的编码序号时发起的请求;获取中心数据库的数据库标识,其中,所述中心数据库是指所述目标容器正常运行状态下待调用的数据库;基于所述容器序号和所述数据库标识生成所述目标容器的容器编码;基于所述目标容器的容器编码、所述目标应用节点的序列号和当前时间戳,生成所述目标应用节点待使用的编码序号。

3、可选地,获取目标容器的容器序号的步骤,包括:获取数据中心的容器注册表,其中,所述容器注册表中包括n个历史容器编码以及每个历史容器编码对应的容器更新时间戳,历史容器是指所述数据中心下已注册的容器,所述历史容器编码至少包括:历史容器序号,n为正整数;在所述容器注册表中查询最大历史容器序号,得到查询结果;基于容器序号分配策略和所述查询结果,对所述目标容器进行序号分配,得到所述目标容器的所述容器序号。

4、可选地,基于容器序号分配策略和所述查询结果,对所述目标容器进行序号分配,得到所述目标容器的所述容器序号的步骤,包括:在所述查询结果满足第一分配条件的情况下,将所述目标容器的所述容器序号声明为0,其中,所述容器序号声明为0表征所述目标容器为所述数据中心下首个成功注册的容器;或者,在所述查询结果满足第二分配条件的情况下,提取所述查询结果中的所述最大历史容器序号,并将该最大历史容器序号记为m,其中,m为非负整数;将所述目标容器的所述容器序号声明为m+1。

5、可选地,基于容器序号分配策略和所述查询结果,对所述目标容器进行序号分配,得到所述目标容器的所述容器序号的步骤,还包括:在所述查询结果满足第三分配条件的情况下,进入容器序号抢占模式;在进入所述容器序号抢占模式的情况下,在所述容器注册表中查询最早容器更新时间戳,其中,所述最早容器更新时间戳对应的历史容器序号为已废弃的容器序号;提取所述最早容器更新时间戳对应的历史容器序号,并将该历史容器序号记为r,其中,r为非负整数;将所述目标容器的所述容器序号声明为r,并将所述容器注册表中容器序号为r对应的所述最早容器更新时间戳更新为当前时间点对应的时间戳。

6、可选地,在生成所述目标容器的容器编码之后,还包括:将所述目标容器的容器编码写入容器注册表;按照预设心跳时长对所述目标容器进行心跳检测,得到检测结果;在所述检测结果指示所述目标容器处于正常运行状态的情况下,在所述容器注册表中提取该目标容器的容器编码;按照当前时间点,实时更新所述容器编码对应的容器更新时间戳;在所述检测结果指示所述目标容器停止运行的情况下,保持所述容器编码不变。

7、可选地,按照预设心跳时长对所述目标容器进行心跳检测,得到检测结果的步骤,包括:以所述预设心跳时长为周期,向所述目标容器发送周期性探活信号,并设置超时时长;在所述超时时长内接收到所述目标容器返回的存活信号的情况下,将检测结果设置为该目标容器处于正常运行状态;在所述超时时长内未接收到所述目标容器返回的存活信号的情况下,将检测结果设置为该目标容器停止运行。

8、可选地,将所述目标容器的容器编码写入容器注册表的步骤,包括:在所述目标容器的容器编码不能正常写入所述容器注册表的情况下,废弃该容器编码;重新响应新的节点编码请求,生成新的容器编码,并将重新生成的容器编码写入所述容器注册表。

9、可选地,在检测结果设置为目标容器停止运行之后,包括:在所述目标容器停止运行达到指定停止时长的情况下,将所述目标容器对应的容器序号标识为已废弃。

10、根据本专利技术实施例的另一方面,还提供了一种基于应用节点的序号生成装置,包括:响应单元,用于响应节点编码请求,获取目标容器的容器序号,其中,所述节点编码请求是指目标应用节点申请新的编码序号时发起的请求;获取单元,用于获取中心数据库的数据库标识,其中,所述中心数据库是指所述目标容器正常运行状态下待调用的数据库;第一生成单元,用于基于所述容器序号和所述数据库标识生成所述目标容器的容器编码;第二生成单元,用于基于所述目标容器的容器编码、所述目标应用节点的序列号和当前时间戳,生成所述目标应用节点待使用的编码序号。

11、可选地,所述响应单元包括:获取模块,用于获取数据中心的容器注册表,其中,所述容器注册表中包括n个历史容器编码以及每个历史容器编码对应的容器更新时间戳,历史容器是指所述数据中心下已注册的容器,所述历史容器编码至少包括:历史容器序号,n为正整数;查询模块,用于在所述容器注册表中查询最大历史容器序号,得到查询结果;分配模块,用于基于容器序号分配策略和所述查询结果,对所述目标容器进行序号分配,得到所述目标容器的所述容器序号。

12、可选地,所述分配模块包括:第一声明子模块,用于在所述查询结果满足第一分配条件的情况下,将所述目标容器的所述容器序号声明为0,其中,所述容器序号声明为0表征所述目标容器为所述数据中心下首个成功注册的容器;第一提取子模块,用于在所述查询结果满足第二分配条件的情况下,提取所述查询结果中的所述最大历史容器序号,并将该最大历史容器序号记为m,其中,m为非负整数;第二声明子模块,用于将所述目标容器的所本文档来自技高网...

【技术保护点】

1.一种基于应用节点的序号生成方法,其特征在于,包括:

2.根据权利要求1所述的序号生成方法,其特征在于,获取目标容器的容器序号的步骤,包括:

3.根据权利要求2所述的序号生成方法,其特征在于,基于容器序号分配策略和所述查询结果,对所述目标容器进行序号分配,得到所述目标容器的所述容器序号的步骤,包括:

4.根据权利要求2所述的序号生成方法,其特征在于,基于容器序号分配策略和所述查询结果,对所述目标容器进行序号分配,得到所述目标容器的所述容器序号的步骤,还包括:

5.根据权利要求1所述的序号生成方法,其特征在于,在生成所述目标容器的容器编码之后,还包括:

6.根据权利要求5所述的序号生成方法,其特征在于,按照预设心跳时长对所述目标容器进行心跳检测,得到检测结果的步骤,包括:

7.根据权利要求5所述的序号生成方法,其特征在于,将所述目标容器的容器编码写入容器注册表的步骤,包括:

8.根据权利要求6所述的序号生成方法,其特征在于,在检测结果设置为目标容器停止运行之后,包括:

9.一种基于应用节点的序号生成装置,其特征在于,包括:

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行权利要求1至8中任意一项所述的基于应用节点的序号生成方法。

11.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至8中任意一项所述的基于应用节点的序号生成方法。

...

【技术特征摘要】

1.一种基于应用节点的序号生成方法,其特征在于,包括:

2.根据权利要求1所述的序号生成方法,其特征在于,获取目标容器的容器序号的步骤,包括:

3.根据权利要求2所述的序号生成方法,其特征在于,基于容器序号分配策略和所述查询结果,对所述目标容器进行序号分配,得到所述目标容器的所述容器序号的步骤,包括:

4.根据权利要求2所述的序号生成方法,其特征在于,基于容器序号分配策略和所述查询结果,对所述目标容器进行序号分配,得到所述目标容器的所述容器序号的步骤,还包括:

5.根据权利要求1所述的序号生成方法,其特征在于,在生成所述目标容器的容器编码之后,还包括:

6.根据权利要求5所述的序号生成方法,其特征在于,按照预设心跳时长对所述目标容器进行心跳检测,得到检测结果的步骤,包括:

...

【专利技术属性】
技术研发人员:刘伯涛赖建云李健凯
申请(专利权)人:中国工商银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1