一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

卡号生成方法、装置、计算机设备和存储介质与流程

2022-09-15 06:47:43 来源:中国专利 TAG:


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.图1为一个实施例中卡号生成方法的应用环境图;
47.图2为一个实施例中卡号生成方法的流程示意图;
48.图3为一个实施例中卡号生成服务器的结构示意图;
49.图4为一个实施例中在卡号生成服务器的本地存储中不存在与卡号获取请求对应的目标序列号的情况下步骤的流程示意图;
50.图5为一个实施例中底层服务器或者上层服务器的结构示意图;
51.图6为另一个实施例中卡号生成方法的流程示意图;
52.图7为一个实施例中卡号生成装置的结构框图;
53.图8为一个实施例中计算机设备的内部结构图。
具体实施方式
54.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
55.需要说明的是,本技术提供的卡号生成方法、装置可用于大数据领域,以提升在大容量高并发情况下的卡号生成能力,也可以用于除大数据领域之外的任意领域在卡号生成方面的应用,例如金融领域,本技术的卡号生成方法、装置的应用领域不做限定。
56.在一个实施例中,如图1所示,提供了一种卡号生成方法,本实施例以该方法应用于服务器进行举例说明,其中,服务器包括卡号生成服务器101、底层服务器102和至少一个上层服务器103,上层服务器103之上还可以设置更上层服务器,同理更上层服务器之上还可以无限制的设置多层服务器等;需要说明的是,卡号生成服务器与底层服务器之间预先配置了服务器架构,例如,如图1所示,在服务器架构时,预先将卡号生成服务器1至卡号生成服务器n连接到底层服务器1,进而卡号生成服务器从关联的底层服务器中获取与卡号获取请求对应的目标序列号时,卡号生成服务器1至卡号生成服务器n会向底层服务器1请求目标序列号。同理,底层服务器与上层服务器之间也预先配置了服务器架构的连接关系,上层服务器与其它上层服务器之间同样也预先配置了服务器架构的连接关系。
57.可以理解的是,该方法可以应用于卡号生成服务器,也可以应用于包括卡号生成服务器、底层服务器和至少一个上层服务器的系统,并通过卡号生成服务器、底层服务器和至少一个上层服务器的交互实现。如图2所示,本实施例中,该方法包括以下步骤:
58.步骤s201,接收携带有业务标识信息的卡号获取请求。
59.其中,业务标识信息指的是与卡号业务关联的标识信息;业务标识信息包括但不限于是标识代码、地区号信息,以及校验码。标识代码包括但不限于是需要获取卡号的银行的银行标识代码(bank identification number,bin)。
60.具体地,当银行需要新的卡号时,通过终端或者服务器生成并发送携带有业务标识信息的卡号获取请求到卡号生成服务器,卡号生成服务器接收携带有业务标识信息的卡号获取请求。
61.步骤s202,在卡号生成服务器的本地存储中不存在与卡号获取请求对应的目标序列号的情况下,根据业务标识信息,从卡号生成服务器关联的底层服务器中,获取与卡号获
取请求对应的目标序列号;目标序列号通过底层服务器从与底层服务器关联的上层服务器中请求得到。
62.其中,本地存储可以是卡号生成服务器的本地缓存。
63.具体地,图3为卡号生成服务器的内部结构示意图,如图3所示,卡号生成服务器主要由多个进程301和本地存储302组成;卡号生成服务器调用进程查询本地存储中是否存在与卡号获取请求对应的目标序列号。在进程查询得到本地存储中不存在与卡号获取请求对应的目标序列号的情况下,卡号生成服务器从关联的底层服务器中,获取与卡号获取请求对应的目标序列号并存储在本地存储中,以供进程从本地存储中获取与卡号获取请求对应的目标序列号。其中,底层服务器也可以从与底层服务器关联的上层服务器中请求得到目标序列号。其中,进程用于处理生成卡号。
64.步骤s203,根据目标序列号和业务标识信息,生成卡号获取请求对应的目标卡号信息。
65.具体地,获取业务标识信息中的标识代码、地区号信息;根据校验和算法,计算得到卡号获取请求对应的校验码。根据预设的卡号生成指令,对目标序列号、标识代码、地区号信息和校验码进行处理,得到卡号获取请求对应的目标卡号信息;例如,对目标序列号、标识代码、地区号信息和校验码进行排列组合,得到卡号获取请求对应的目标卡号信息。
66.上述卡号生成方法中,接收携带有业务标识信息的卡号获取请求;在卡号生成服务器的本地存储中不存在与卡号获取请求对应的目标序列号的情况下,根据业务标识信息,从卡号生成服务器关联的底层服务器中,获取与卡号获取请求对应的目标序列号;目标序列号通过底层服务器从与底层服务器关联的上层服务器中请求得到;根据目标序列号和业务标识信息,生成卡号获取请求对应的目标卡号信息。采用本方法,通过本地服务器、底层服务器和上层服务器的分级的策略来获取目标序列号,能够有效降低序列号集中读写的频率,并结合业务标识信息和目标序列号来生成卡号,提高了在高并发情况下的卡号生成能力。
67.在一个实施例中,如图4所示,上述步骤s202,在卡号生成服务器的本地存储中不存在与卡号获取请求对应的目标序列号的情况下,根据业务标识信息,从卡号生成服务器关联的底层服务器中,获取与卡号获取请求对应的目标序列号,具体包括如下内容:
68.步骤s401,在卡号生成服务器的本地存储中不存在与卡号获取请求对应的目标序列号的情况下,发送携带有第一序列号段的步长的序列号段请求至卡号生成服务器关联的底层服务器。
69.步骤s402,根据业务标识信息,查询卡号生成服务器关联的底层服务器中的第二业务信息表,得到第二业务信息表中的第二当前序列号、第二历史序列号和第二步长。
70.其中,底层服务器中存储有多个第二业务信息表,第二业务信息表中存储有多个序列号,并标记了该第二业务信息表中的第二当前序列号、第二历史序列号和第二步长。第二业务信息表与标识代码和地区号信息之间存在关联关系,以供关联的卡号生成服务器从底层服务器中获取到与地区号信息和标识代码相对应的第二序列号段。需要说明的是,本实施例中的第二业务信息表、第一业务信息表或者其他业务信息表指的是存储与标识代码和地区号信息对应的多个序列号的数据文件,数据文件的形式包括但不限于是.xlsx,xls,.csv,.xml和.json。
71.其中,第二历史序列号指的是底层服务器上一次从上层服务器中获取的第二序列号段中的首个序列号。例如,底层服务器上一次从上层服务器中获取的第二序列号段为200至209,则第二历史序列号为200。
72.其中,第二当前序列号指的是底层服务器的第二业务信息表中存储的序列号中当前可以使用的首个序列号。例如,第二业务信息表中存储有序列号200至209,而序列号200至205均已被使用过或者被卡号生成服务器获取了,则第二当前序列号为206。
73.其中,第二步长指的是底层服务器上一次从上层服务器中获取的第二序列号段的步长。例如,底层服务器上一次从上层服务器中获取的序列号段为200至209,则第二步长为10。
74.其中,第一序列号段指的是卡号生成服务器向与其关联的底层服务器申请的一段序列号。
75.其中,第一序列号段的步长为大于1的整数,第一序列号段的步长用于控制从底层服务器中获取多少个序列号。
76.具体地,图5为底层服务器或者上层服务器或者比上层服务器更上层的服务器的内部结构示意图,如图5所示,除卡号生成服务器以外的服务器主要由序列号存储单元501和处理进程502组成,其中,序列号存储单元用于存储业务信息表。在本地存储中不存在与卡号获取请求对应的目标序列号的情况下,卡号生成服务器发送携带有第一序列号段的步长的序列号段请求至与其关联的底层服务器,其中,序列号段请求还携带有业务标识信息。底层服务器的进程接收该序列号段请求,将业务标识信息或者业务标识信息中的标识代码和地区号信息作为索引,调用进程查询得到与索引对应的第二业务信息表;从该第二业务信息表中,得到第二当前序列号、第二历史序列号和第二步长。
77.步骤s403,在检测到第二当前序列号与第一序列号段的步长之和小于或者等于第二历史序列号与第二步长之和的情况下,基于分布式锁对底层服务器进行加锁处理,并接收底层服务器基于第二当前序列号和第一序列号段的步长返回的第一序列号段。
78.具体地,判断第二当前序列号与第一序列号段的步长之和是否小于第二历史序列号与第二步长之和;在检测到第二当前序列号与第一序列号段的步长之和小于或者等于第二历史序列号与第二步长之和的情况下,先对该第二业务信息表中的第二当前序列号至第二当前序列号与第一序列号段的步长之和对应的序列号进行加分布式锁处理或者加行级锁处理,底层服务器再根据第二当前序列号至与第一序列号段的步长生成第一序列号段,将第一序列号段发送到卡号生成服务器中。分布式锁或行级锁可以确保在高并发情况下该第一序列号段相关的序列号的正确性,还不会影响第二业务信息表中其它序列号的使用。
79.举例说明,在底层服务器中,假设与业务标识信息或者业务标识信息中的标识代码和地区号信息对应的第二业务信息表中,第二当前序列号是105,第二历史序列号是100,第二步长是50,则第二业务信息表中上一次获取的序列号是100至149,而100至104的序列号已被使用,当前可以使用的序列号是105。若卡号生成服务器发送到底层服务器中的第一序列号段的步长为10,则105 10小于100 50,认为卡号生成服务器所需的第一序列号段是在底层服务器的可用序列号段范围之内,则将序列号105至114作为第一序列号段并发送到卡号生成服务器,卡号生成服务器接收第一序列号段105至114。
80.步骤s404,根据第一序列号段的步长,更新第二业务信息表中的第二当前序列号,
并对底层服务器进行解锁处理。
81.卡号生成服务器接收到第一序列号段后,根据传输的第一序列号段的步长,卡号生成服务器或者底层服务器对第二业务信息表中的第二当前序列号进行更新。确认第二当前序列号更新完成之后,对第二当前序列号至第二当前序列号与第一序列号段的步长之和对应的序列号进行解锁处理,需要说明的是,每次卡号生成服务器从底层服务器的第二业务信息表中获取到第一序列号段之后,都需要对底层服务器中的第二当前序列号进行更新,以便下次卡号生成服务器从底层服务器中获取到最新的第二当前序列号。例如,假设底层服务器的第二业务信息表中的第二当前序列号是105,卡号生成服务器从底层服务器中获取到的第一序列号段是105至114,则第一序列号段的步长为114-105 1=10,将底层服务器中的第二当前序列号从105更新为115,进而下一个卡号生成服务器从底层服务器中获取到的第一序列号段是从115开始。
82.步骤s405,根据第一序列号段,更新本地存储中的第一当前序列号,将第一当前序列号,作为与卡号获取请求对应的目标序列号。
83.由于需要通过卡号生成服务器完成卡号生成,所以卡号生成服务器最终还是需要从本地存储中获取目标序列号来生成卡号,因此,卡号生成服务器根据接收到的第一序列号段中的首位序列号和第一序列号段的步长,对本地存储中的第一业务信息表中的第一当前序列号、第一历史序列号和第一步长进行更新,然后将更新后的第一当前序列号,作为与卡号获取请求对应的目标序列号。例如,假设本地存储中的第一业务信息表中的第一当前序列号为90、第一历史序列号为80和第一步长为10,则第一业务信息表中上一次获取的序列号是80至89,而且80至89的序列号已被使用,当前没有可以使用的序列号;然后卡号生成服务器从与其关联的底层服务器中得到的第一序列号段为105至114,说明该关联的底层服务器中的序列号90至104已被其他卡号生成服务器使用了;卡号生成服务器将第一历史序列号从80更新为105,第一步长从10更新为10(不变),第一当前序列号从90更新为105。
84.本实施例中,通过卡号生成服务器和底层服务器分级存储序列号,能够避免集中在单点的服务器上频繁读写数据,降低了互斥锁产生的风险;卡号生成服务器从关联的底层服务器中,查询得到与业务标识信息或者业务标识信息中的标识代码和地区号信息对应的第二业务信息表;在检测到第二业务信息表中的第二当前序列号与第一序列号段的步长之和小于或者等于第二历史序列号与第二步长之和的情况下,对第二业务信息表中与第一序列号段相关的序列号进行加分布式锁处理,以防其它卡号生成服务器同时从第二业务信息表中获取到相同的第一序列号段,避免了第一序列号段的重复使用;更新第二当前序列号之后对第二业务信息表中的序列号进行解锁处理,以便于下一个卡号生成服务器获取更新的第二当前序列号,在保证了目标序列号全服务器唯一的同时,还能提高目标序列号的获取效率,进而提高了卡号的生成效率。
85.在一个实施例中,在检测到第二当前序列号与第一序列号段的步长之和小于或者等于第二历史序列号与第二步长之和的情况下之前,还包括:在检测到第二当前序列号与第一序列号段的步长之和大于第二历史序列号与第二步长之和的情况下,通过底层服务器从与底层服务器关联的上层服务器中请求得到第二序列号段;根据第二序列号段,更新第二业务信息表中的第二历史序列号和第二步长;根据第二历史序列号更新第二当前序列号。
86.其中,上层服务器中存储有多个第三业务信息表,第三业务信息表中存储有多个序列号。第三业务信息表与标识代码和地区号信息之间存在关联关系,以供底层服务器从关联的上层服务器中获取到与地区号信息和标识代码相对应的第二序列号段,或者供上层服务器从关联的更上层服务器获取到与地区号信息和标识代码相对应的序列号段。
87.其中,第三历史序列号指的是上层服务器上一次从更上层服务器中获取的第三序列号段中的首个序列号。例如,上层服务器上一次从更上层服务器中获取的序列号段为300至309,则第二历史序列号为300。
88.其中,第三当前序列号指的是上层服务器的第三业务信息表中存储的序列号中当前可以使用的首个序列号。例如,第三业务信息表中存储有序列号300至309,而序列号300至305均已被使用过或者被底层服务器获取了,则第三当前序列号为306。
89.其中,第三步长指的是上层服务器上一次从更上层服务器中获取的第三序列号段的步长。例如,上层服务器上一次从更上层服务器中获取的序列号段为300至309,则第二步长为10。
90.其中,第二序列号段指的是底层服务器向与其关联的上层服务器申请的一段序列号;第三序列号段指的是上层服务器向与其关联的更上层服务器申请的一段序列号;同理可得第四序列号段、第五序列号段等等。
91.其中,第二序列号段的步长为大于1的整数,第二序列号段的步长用于控制从上层服务器中获取多少个序列号。
92.具体地,在检测到第二当前序列号与第一序列号段的步长之和大于第二历史序列号与第二步长之和的情况下,通过底层服务器向与底层服务器关联的上层服务器发送第二序列号段请求;其中,第二序列号段请求携带有标识代码、地区号信息和第二序列号段的步长;关联的上层服务器接收该第二序列号段请求,将第二序列号段请求中的标识代码和地区号信息作为索引,查询得到与索引对应的第三业务信息表;从该第三业务信息表中,得到第三当前序列号、第三历史序列号和第三步长。在第三当前序列号与第二序列号段的步长之和小于或者等于第三历史序列号与第三步长之和的情况下,先对第三业务信息表中的第三当前序列号至第三当前序列号与第二序列号段的步长之和对应的序列号进行加分布式锁处理或者加行级锁处理,再根据第三当前序列号和第二序列号段的步长,得到第二序列号段请求对应的第二序列号段并发送到底层服务器中。
93.底层服务器确认接收到第二序列号段后,根据传输的第二序列号段的步长,底层服务器或者上层对第三业务信息表中的第三当前序列号进行更新,以便下一个底层服务器从上层服务器中获取到最新的第三当前序列号。确认第三当前序列号更新完成之后,对第三业务信息表中的第三当前序列号至第三当前序列号与第二序列号段的步长之和对应的序列号进行解锁处理。底层服务器根据接收到的第二序列号段中的首位序列号和第二序列号段的步长,对第二业务信息表中的第二历史序列号和第二步长进行更新,然后将更新后的第二历史序列号作为第二当前序列号。判断第二当前序列号与第一序列号段的步长之和是否小于第二历史序列号与第二步长之和,若是则执行上述步骤s403至s405,否则,再次执行本实施例的技术方案。
94.需要说明的是,在第三当前序列号与第二序列号段的步长之和大于第三历史序列号与第三步长之和的情况下,先通过上层服务器从与上层服务器关联的更上层服务器中请
求得到第三序列号段并存储在第三业务信息表中,然后底层服务器从与底层服务器关联的上层服务器的第三业务信息表中请求得到第二序列号段并存储在第二业务信息表中,卡号生成服务器再从与卡号生成服务器关联的底层服务器中请求得到第一序列号段并存储在本地存储的第一业务信息表中,最后卡号生成服务器使用本地存储中的第一当前序列号生成卡号。
95.本实施例中,在检测到第二当前序列号与第一序列号段的步长之和大于第二历史序列号与第二步长之和的情况下,通过底层服务器从与底层服务器关联的上层服务器中请求得到第二序列号段;根据第二序列号段,更新第二业务信息表中的第二历史序列号和第二步长;进而根据第二历史序列号更新第二当前序列号,实现了卡号生成服务器、底层服务器和上层服务器之间的序列号分层存储,能够避免集中在单点的服务器上频繁读写数据,降低了互斥锁产生的风险,提高了卡号生成效率;此外,根据序列号的需求变换,还可以灵活增加或者减少各层级联服务器的数量和级联服务器的层数,从而保证无穷大并发情况下卡号生成服务器获取到唯一的目标序列号。
96.在一个实施例中,在卡号生成服务器的本地存储中不存在与卡号获取请求对应的目标序列号的情况下之前,还包括:根据业务标识信息查询本地存储中的第一业务信息表,得到第一业务信息表中的第一当前序列号、第一历史序列号和第一步长;在检测到第一当前序列号大于或者等于第一历史序列号与第一步长之和的情况下,确认本地存储中不存在与卡号获取请求对应的目标序列号;在检测到第一当前序列号小于第一历史序列号与第一步长之和的情况下,确认本地存储中存在与卡号获取请求对应的目标序列号。
97.其中,本地存储中存储有多个第一业务信息表,第一业务信息表中存储有多个序列号,并标记了该第一业务信息表中的第一当前序列号、第一历史序列号和第一步长。第一业务信息表与标识代码和地区号信息之间存在关联关系,以供对应地区或对应银行使用匹配的第一业务信息表中的序列号。
98.其中,第一当前序列号指的是本地存储的第一业务信息表中存储的序列号中当前可以使用的首个序列号。
99.其中,第一历史序列号指的是本地存储上一次从底层服务器中获取的第一序列号段中的首个序列号。例如,本地存储上一次从底层服务器中获取的第一序列号段为100至109,则第一历史序列号为100。
100.其中,第一步长指的是本地存储上一次从底层服务器中获取的第一序列号段的步长。例如,本地存储上一次从底层服务器中获取的第一序列号段为100至109,则第一步长为10。
101.需要说明的是,不存在与卡号获取请求对应的目标序列号表示本地存储中没有可以使用的序列号;举例说明,假设第一历史序列号是100,第二步长是50,说明该第一业务信息表中的序列号为100至149,而第一当前序列号是150,则150等于100 50,即表示本地存储中没有可以使用的序列号。
102.在本实施例中,通过第一当前序列号与第一历史序列号与第一步长之和之间比较,能够确认本地存储中是否存在与卡号获取请求对应的目标序列号,以便于卡号生成服务器获取目标序列号执行卡号生成步骤。
103.在一个实施例中,在接收携带有业务标识信息的卡号获取请求之后,还包括:在本
地存储中存在与卡号获取请求对应的目标序列号的情况下,基于分布式锁对本地存储进行加锁处理,并将本地存储中的第一业务信息表中的第一当前序列号,作为与卡号获取请求对应的目标序列号;根据目标序列号更新第一业务信息表中的第一当前序列号,并对本地存储进行解锁处理。
104.具体地,在本地存储中存在与卡号获取请求对应的目标序列号的情况下,基于分布式锁对本地存储中的第一业务信息表中的第一当前序列号进行加分布式锁处理或者加行级锁处理,将第一业务信息表中的第一当前序列号,作为与卡号获取请求对应的目标序列号;由于目标序列号的数量为1,所以对第一业务信息表中的第一当前序列号进行加一,得到更新后的第一当前序列号,并对第一业务信息表中的更新后的第一当前序列号进行解锁处理。
105.其中,卡号生成服务器是多层级联服务器中的最底层,卡号生成服务器从本地存储中获取目标序列号,单次只能获取一个序列号,而卡号生成服务器以及卡号生成服务器以上的各层服务器,向与其关联的上一层服务器请求的均是序列号段。例如,卡号生成服务器从底层服务器中获取第一序列号段,再例如,底层服务器从上层服务器中获取第二序列号段。
106.本实施例中,卡号生成服务器从本地存储中单次仅能获取一个目标序列号的方式,能够避免卡号生成服务器被单个卡号获取请求消耗了较多的序列号,使得卡号生成服务器需要频繁的向底层服务器请求第一序列号段,甚至等待底层服务器向上层服务器中请求第二序列号段,在高并发情况下,能够有效降低并发请求的等待时间,从而提高了卡号的生成效率。
107.在一个实施例中,在根据目标序列号和业务标识信息,生成卡号获取请求对应的目标卡号信息之后,还包括:根据历史目标卡号信息,对目标卡号信息进行查重处理,得到目标卡号信息的查重结果;在目标卡号信息的查重结果为卡号重复的情况下,跳转到在本地存储中不存在与卡号获取请求对应的目标序列号的情况下,根据业务标识信息,从卡号生成服务器关联的底层服务器中,获取与卡号获取请求对应的更新序列号的步骤,直到目标卡号信息的查重结果为卡号不重复。
108.其中,历史目标卡号信息指的是所有卡号生成服务器已生成的目标卡号。
109.需要说明的是,通常卡号生成服务器会按照一定的规律生成目标卡号信息,使得目标卡号信息发生重复的概率较低,但是目标卡号信息也有已经预先被生成使用的情况,例如自选卡号、幸运卡号等,因此,需要将目标卡号信息进行查重处理。
110.具体地,卡号生成服务器查询历史目标卡号信息中是否存在于当前生成的目标卡号信息相同的历史目标卡号信息,得到当前生成的目标卡号信息的查重结果。在目标卡号信息的查重结果为卡号不重复的情况下,将目标卡号信息返回。在目标卡号信息的查重结果为卡号重复的情况下,跳转到上述步骤s202,直到当前生成的目标卡号信息的查重结果为卡号不重复为止。
111.本实施例中,在生成卡号获取请求对应的目标卡号信息后,根据历史目标卡号信息,对目标卡号信息进行查重处理,能够确保目标卡号信息在全局级联服务器中的唯一性。
112.在一个实施例中,如图6所示,提供了另一种卡号生成方法,以该方法应用于卡号生成服务器为例进行说明,包括以下步骤:
113.步骤s601,接收携带有业务标识信息的卡号获取请求。
114.步骤s602,根据业务标识信息查询本地存储中的第一业务信息表,得到第一业务信息表中的第一当前序列号、第一历史序列号和第一步长。
115.步骤s603,在检测到第一当前序列号小于第一历史序列号与第一步长之和的情况下,确认本地存储中存在与卡号获取请求对应的目标序列号。
116.步骤s604,在本地存储中存在与卡号获取请求对应的目标序列号的情况下,基于分布式锁对本地存储进行加锁处理,并将本地存储中的第一业务信息表中的第一当前序列号,作为与卡号获取请求对应的目标序列号;根据目标序列号更新第一业务信息表中的第一当前序列号,并对本地存储进行解锁处理。
117.步骤s605,在检测到第一当前序列号大于或者等于第一历史序列号与第一步长之和的情况下,确认本地存储中不存在与卡号获取请求对应的目标序列号。
118.步骤s606,在卡号生成服务器的本地存储中不存在与卡号获取请求对应的目标序列号的情况下,发送携带有第一序列号段的步长的序列号段请求至卡号生成服务器关联的底层服务器;根据业务标识信息,查询卡号生成服务器关联的底层服务器中的第二业务信息表,得到第二业务信息表中的第二当前序列号、第二历史序列号和第二步长。
119.步骤s607,在检测到第二当前序列号与第一序列号段的步长之和大于第二历史序列号与第二步长之和的情况下,通过底层服务器从与底层服务器关联的上层服务器中请求得到第二序列号段;根据第二序列号段,更新第二业务信息表中的第二历史序列号和第二步长;根据第二历史序列号更新第二当前序列号。
120.步骤s608,在检测到第二当前序列号与第一序列号段的步长之和小于或者等于第二历史序列号与第二步长之和的情况下,基于分布式锁对底层服务器进行加锁处理,并接收底层服务器基于第二当前序列号和第一序列号段的步长返回的第一序列号段。
121.步骤s609,根据第一序列号段的步长,更新第二业务信息表中的第二当前序列号,并对底层服务器进行解锁处理。
122.步骤s610,根据第一序列号段,更新本地存储中的第一当前序列号,将第一当前序列号,作为与卡号获取请求对应的目标序列号。
123.步骤s611,根据目标序列号和业务标识信息,生成卡号获取请求对应的目标卡号信息。
124.上述卡号生成方法,具有以下有益效果:
125.(1)通过本地服务器、底层服务器和上层服务器的分级的策略来获取目标序列号,能够有效降低序列号集中读写的频率,根据序列号的需求变换,还可以灵活增加或者减少各层级联服务器的数量和级联服务器的层数,理论上可支持无穷大并发情况下获取到唯一的目标序列号,并结合业务标识信息和目标序列号来生成卡号,提高了在高并发情况下的卡号生成能力。
126.(2)通过对要获取的序列号或者序列号段进行加分布式锁处理,以防其它服务器对同一序列号或者序列号段的重复使用;更新当前序列号之后进行解锁处理,以便于服务器获取更新的当前序列号,在保证了目标序列号全服务器唯一的同时,还能提高目标序列号的获取效率,大大提高了卡号的生成效率。
127.(3)针对卡号生成服务器的本地存储采用单次获取单个目标序列号的方式,能够
避免卡号生成服务器被单个卡号获取请求消耗了较多的序列号,使得卡号生成服务器需要频繁的向底层服务器请求第一序列号段,甚至等待底层服务器向上层服务器中请求第二序列号段,在高并发情况下,能够有效降低并发请求的等待时间,而卡号生成服务器与底层服务器、以及底层服务器与上层服务器之间均是采用单次获取序列号段的方式,降低了服务器之间的序列号请求频率,提高了卡号的生成效率。
128.应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
129.基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的卡号生成方法的卡号生成装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个卡号生成装置实施例中的具体限定可以参见上文中对于卡号生成方法的限定,在此不再赘述。
130.在一个实施例中,如图7所示,提供了一种卡号生成装置700,包括:请求获取模块701、序列号获取模块702和卡号生成模块703,其中:
131.请求获取模块701,用于接收携带有业务标识信息的卡号获取请求。
132.序列号获取模块702,用于在卡号生成服务器的本地存储中不存在与卡号获取请求对应的目标序列号的情况下,根据业务标识信息,从卡号生成服务器关联的底层服务器中,获取与卡号获取请求对应的目标序列号;目标序列号通过底层服务器从与底层服务器关联的上层服务器中请求得到。
133.卡号生成模块703,用于根据目标序列号和业务标识信息,生成卡号获取请求对应的目标卡号信息。
134.在一个实施例中,序列号获取模块702,还用于在卡号生成服务器的本地存储中不存在与卡号获取请求对应的目标序列号的情况下,发送携带有第一序列号段的步长的序列号段请求至卡号生成服务器关联的底层服务器;根据业务标识信息,查询卡号生成服务器关联的底层服务器中的第二业务信息表,得到第二业务信息表中的第二当前序列号、第二历史序列号和第二步长;在检测到第二当前序列号与第一序列号段的步长之和小于或者等于第二历史序列号与第二步长之和的情况下,基于分布式锁对底层服务器进行加锁处理,并接收底层服务器基于第二当前序列号和第一序列号段的步长返回的第一序列号段;根据第一序列号段的步长,更新第二业务信息表中的第二当前序列号,并对底层服务器进行解锁处理;根据第一序列号段,更新本地存储中的第一当前序列号,将第一当前序列号,作为与卡号获取请求对应的目标序列号。
135.在一个实施例中,卡号生成装置700还包括第二序列号段获取模块,用于在检测到第二当前序列号与第一序列号段的步长之和大于第二历史序列号与第二步长之和的情况下,通过底层服务器从与底层服务器关联的上层服务器中请求得到第二序列号段;根据第二序列号段,更新第二业务信息表中的第二历史序列号和第二步长;根据第二历史序列号
更新第二当前序列号。
136.在一个实施例中,卡号生成装置700还包括序列号判断模块,用于根据业务标识信息查询本地存储中的第一业务信息表,得到第一业务信息表中的第一当前序列号、第一历史序列号和第一步长;在检测到第一当前序列号大于或者等于第一历史序列号与第一步长之和的情况下,确认本地存储中不存在与卡号获取请求对应的目标序列号;在检测到第一当前序列号小于第一历史序列号与第一步长之和的情况下,确认本地存储中存在与卡号获取请求对应的目标序列号。
137.在一个实施例中,卡号生成装置700还包括本地序列号获取模块,用于在本地存储中存在与卡号获取请求对应的目标序列号的情况下,基于分布式锁对本地存储进行加锁处理,并将本地存储中的第一业务信息表中的第一当前序列号,作为与卡号获取请求对应的目标序列号;根据目标序列号更新第一业务信息表中的第一当前序列号,并对本地存储进行解锁处理。
138.在一个实施例中,卡号生成装置700还包括卡号查重模块,用于根据历史目标卡号信息,对目标卡号信息进行查重处理,得到目标卡号信息的查重结果;在目标卡号信息的查重结果为卡号重复的情况下,跳转到在卡号生成服务器的本地存储中不存在与卡号获取请求对应的目标序列号的情况下,根据业务标识信息,从卡号生成服务器关联的底层服务器中,获取与卡号获取请求对应的目标序列号的步骤,直到目标卡号信息的查重结果为卡号不重复。
139.上述卡号生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
140.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储第二当前序列号、第二业务信息表、第二历史序列号和第二步长等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种卡号生成方法。
141.本领域技术人员可以理解,图8中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
142.在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
143.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
144.在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
145.需要说明的是,本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人
信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
146.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
147.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
148.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献