一种全局序号分配方法、系统及终端设备技术方案

技术编号:38990385 阅读:14 留言:0更新日期:2023-10-07 10:20
本申请涉及计算机技术领域,尤其涉及一种全局序号分配方法、系统及终端设备,该方法包括:接收客户端发送的序号请求指令后,检测本地缓存中存储的第一序号分配信息是否有效;若序号分配信息有效,则依据第一序号分配信息进行序号分配处理,得到唯一序号值;若序号分配信息无效,则获取本地存储中存储的第二序号分配信息,并依据第二序号分配信息对第一序号分配信息进行更新处理;再依据更新后的第一序号分配信息进行序号分配处理,得到唯一序号值;将唯一序号值发送至客户端。由此,本申请可以有效解决现有技术中生成唯一序号时存在的产生重复序号、非严格递增以及高并发下请求阻塞的问题等,提高了金融科技领域中数据的准确性和安全性。和安全性。和安全性。

【技术实现步骤摘要】
一种全局序号分配方法、系统及终端设备


[0001]本申请涉及计算机
,尤其涉及一种全局序号分配方法、系统及终端设备。

技术介绍

[0002]序号在软件开发过程中使用非常普遍,使用场景也非常丰富,尤其是金融科技领域。例如,银行系统中数据表的唯一主键、请求流水号、交易订单号、商品编号等。不过通常序号有两种形式,第一种,纯序号,如1、2、3,等等。第二种,序号加前缀、后缀组合式,如COQE2022001、COQE2022002和COQE2022003SUB等等。两种形式无论采用哪一种形式,它们都具有唯一性的特点。
[0003]现有技术中,主要采用以下几种方式生成序号:
[0004]1)数据库方式:如Oracle的sequence,MySQL的自增字段等,但是这些都依赖数据库厂商;一旦和数据库解耦或者需要数据迁移时,就需要花费大量的人力物力进行改造。
[0005]2)雪花算法(snowflake):1bit固定值0+41bit时间戳+10bit机器码+12bit序列号;雪花算法优点是分布式,速度快;但是存在需维护机器码,以及时钟回拨产生重复序号的问题。
[0006]3)UUID:Universally Unique Identifier,通用唯一识别码,通过特定的规则生成128bit数值;该方法生成的序号全局唯一,产生重复的几率可以忽略不计;UUID一般以字符串的形式保存,而且无序,会引发数据库索引重排;同时又因为需要占用至少32Bytes的存储空间,处理效率上比8Bytes长整型字段索引低。
[0007]4)集中预分配方式:利用集中存储(通常为数据库或者缓存系统)保存当前分配序号的上限值currentMaxValue。客户端请求时,将currentMaxValue加上预分配大小,比如20,则将currentMaxValue+20的结果返回客户端,这样客户端就可以自行分配currentMaxValue到currentMaxValue+20之前的序号,而不会和其它客户端产生重复。这种方式解决了数据库方式中对数据库的强依赖,但是存在以下几个问题:
[0008]第一,高度依赖集中存储,一旦存储失效会导致产生重复序号;这对于金融系统是十分不安全的,容易造成数据混乱。
[0009]第二,由于采用预分配制,产生的序号为趋势递增,非严格递增。比如客户端A预分配1

20,客户端B预分配21

40,客户端B在使用序号25的同时,客户端A有可能在使用序号3。
[0010]第三,虽然可以通过将预分配取值改为1,这样会导致每次获取序号时都需要请求集中存储获取,但是本地存储的IO接口读写性能比较差,高并发下访问本地存储会导致请求阻塞。

技术实现思路

[0011]有鉴于此,本申请实施例提供一种全局序号分配方法、系统及终端设备,可以有效解决现有技术中生成唯一序号时存在的产生重复序号、非严格递增以及高并发下请求阻塞的问题等。
[0012]第一方面,本申请实施例提供一种全局序号分配方法,包括:
[0013]接收客户端发送的序号请求指令后,检测本地缓存中存储的第一序号分配信息是否有效;
[0014]若所述序号分配信息有效,则依据所述第一序号分配信息进行序号分配处理,得到唯一序号值;
[0015]若所述序号分配信息无效,则获取本地存储中存储的第二序号分配信息,并依据所述第二序号分配信息对所述第一序号分配信息进行更新处理;再依据更新后的第一序号分配信息进行序号分配处理,得到唯一序号值;
[0016]将所述唯一序号值发送至所述客户端。
[0017]在一些实施例中,所述第一序号分配信息包括:本阶段序号上限值和当前分配序号值;
[0018]所述检测本地缓存中存储的第一序号分配信息是否有效,包括:
[0019]判断所述当前分配序号值是否小于所述本阶段序号上限值,若所述当前分配序号值小于所述本阶段序号上限值,则确定所述第一序号分配信息有效,否则确定所述第一序号分配信息无效。
[0020]在一些实施例中,所述第一序号分配信息无效包括以下情况:
[0021]所述当前分配序号值为非正整数,则确认所述第一序号分配信息无效;
[0022]和\或,所述当前分配序号值大于等于所述本阶段序号上限值,则确认所述第一序号分配信息无效。
[0023]在一些实施例中,所述第二序号分配信息包括:阶段给定序号总量和当前序号记录值;
[0024]所述依据所述第二序号分配信息对所述第一序号分配信息进行更新处理,包括:
[0025]依据所述当前序号记录值更新所述当前分配序号值;将所述当前序号记录值与所述阶段给定序号总量进行求和,得到和值,将所述和值作为所述本阶段序号上限值;
[0026]所述依据所述第二序号分配信息对所述第一序号分配信息进行更新处理之后,还包括:
[0027]依据所述和值更新所述当前序号记录值,并存储回所述本地存储中。
[0028]在一些实施例中,依据所述第一序号分配信息进行序号分配处理,得到唯一序号值,包括:
[0029]依据所述当前分配序号值和预设的步进值分发唯一序号值,依据所述唯一序号值更新所述当前分配序号值,并存储回所述本地缓存。
[0030]在一些实施例中,该方法还包括:
[0031]设置监听线程,利用所述监听线程监听所述本阶段序号上限值与所述当前分配序号值的差值,若所述差值小于设定阈值,则读取所述本地存储中存储的当前序号记录值,将所述当前序号记录值与阶段给定序号总量进行求和,得到和值,将所述和值作为预设本阶段序号上限值,并依据所述和值更新所述当前序号记录值,并存储回所述本地存储中;
[0032]在所述当前分配序号值等于所述本阶段序号上限值后,将依据所述预设本阶段序号上限值更新所述本阶段序号上限值。
[0033]在一些实施例中,该方法还包括:
[0034]根据序号分配速度正比例动态调整所述阶段给定序号总量的大小,所述序号分配速度为单位时间内分配序号的总数量。
[0035]在一些实施例中,所述本地缓存和本地存储位于服务器,且所述服务器支持集群配置;
[0036]通过集群服务将所述第二序号分配信息存储于所述集群配置中剩余的服务器的本地存储中,在检测到当前服务器故障时,切换至集群服务中其他服务器中进行工作。
[0037]第二方面,本申请实施例提供一种全局序号分配系统,所述系统包括服务器,所述服务器采用集群配置,所述服务器用于实现如本申请第一方面提供的一种全局序号分配方法。
[0038]第三方面,本申请实施例提供一种终端设备,所述终端设备包括处理器和存储器,所述存储器存储有计算机程序,所述处理器用于执行所述计算机程序以实施本申请第一方面提供的一种全局序号分配方法。
[0039]本申请的实施例具有如下有益效果:
[0040]本申请包括本地缓存中的第一序号分配信息和本地存储本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种全局序号分配方法,其特征在于,包括:接收客户端发送的序号请求指令后,检测本地缓存中存储的第一序号分配信息是否有效;若所述序号分配信息有效,则依据所述第一序号分配信息进行序号分配处理,得到唯一序号值;若所述序号分配信息无效,则获取本地存储中存储的第二序号分配信息,并依据所述第二序号分配信息对所述第一序号分配信息进行更新处理;再依据更新后的第一序号分配信息进行序号分配处理,得到唯一序号值;将所述唯一序号值发送至所述客户端。2.根据权利要求1所述的全局序号分配方法,其特征在于,所述第一序号分配信息包括:本阶段序号上限值和当前分配序号值;所述检测本地缓存中存储的第一序号分配信息是否有效,包括:判断所述当前分配序号值是否小于所述本阶段序号上限值,若所述当前分配序号值小于所述本阶段序号上限值,则确定所述第一序号分配信息有效,否则确定所述第一序号分配信息无效。3.根据权利要求2所述的全局序号分配方法,其特征在于,所述第一序号分配信息无效包括以下情况:所述当前分配序号值为非正整数,则确认所述第一序号分配信息无效;和\或,所述当前分配序号值大于等于所述本阶段序号上限值,则确认所述第一序号分配信息无效。4.根据权利要求2所述的全局序号分配方法,其特征在于,所述第二序号分配信息包括:阶段给定序号总量和当前序号记录值;所述依据所述第二序号分配信息对所述第一序号分配信息进行更新处理,包括:依据所述当前序号记录值更新所述当前分配序号值;将所述当前序号记录值与所述阶段给定序号总量进行求和,得到和值,将所述和值作为所述本阶段序号上限值;所述依据所述第二序号分配信息对所述第一序号分配信息进行更新处理之后,还包括:依据所述和值更新所述当前序号记录值,并存储回所述本地存储中。5.根据权利要求2至4任一项所述的全局序号分配方法,其...

【专利技术属性】
技术研发人员:彭振友万丹
申请(专利权)人:平安银行股份有限公司
类型:发明
国别省市:

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

1