一种数据处理方法、装置、电子设备及存储介质转让专利

申请号 : CN202211118415.X

文献号 : CN115205046B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 冯世伟闵刚

申请人 : 北京锐融天下科技股份有限公司

摘要 :

本申请提供了一种数据处理方法、装置、电子设备及存储介质,通过数据库路由器对交易请求分配到不同的目标数据中心进行处理,提高了处理效率;在目标数据中心处理交易请求之前对该目标数据中心的数据进行检测,只有在目标数据中心里的数据已处于同步状态时,才对交易请求进行处理;在对交易请求进行处理时根据分配业务锁进行处理,避免了交易账户的数据不同步。

权利要求 :

1.一种数据处理方法,其特征在于,应用于数据库路由器,所述数据库路由器通信连接有多个数据中心,不同的数据中心之间具有预设距离的间隔;所述方法包括:针对用户发起的交易请求,根据预设的用户与数据中心的匹配关系,为所述交易请求匹配对应的目标数据中心,并将所述交易请求发送到所述目标数据中心;所述交易请求包含有目标交易账户;

对各个数据中心进行数据检测,得到所述目标数据中心关于所述目标交易账户的已存储业务数据和其他目标数据中心关于所述目标交易账户的历史业务数据,并将所述已存储业务数据与所述历史业务数据进行对比;

若所述已存储业务数据与所述历史业务数据相同,根据所述交易请求发起的业务时间和所述目标交易账户,为各个所述交易请求分配业务锁,以使所述目标数据中心根据所述业务锁依次对所述交易请求进行处理,得到所述交易请求对应的当前业务数据;并在记录所述当前业务数据之后,将所述当前业务数据同步到其他数据中心,进而保持所有的数据中心的数据处于同步状态。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

监测各个数据中心的工作状态;

若所述目标数据中心处于异常工作状态,将所述交易请求发送到预设的备用数据中心;

对各个数据中心进行数据检测,得到所述备用数据中心关于所述目标交易账户的已存储业务数据和其他目标数据中心关于所述目标交易账户的历史业务数据,并将所述已存储业务数据与所述历史业务数据进行对比;

若所述已存储业务数据与所述历史业务数据相同,根据所述交易请求发起的业务时间和所述目标交易账户,为各个所述交易请求分配业务锁,以使所述备用数据中心根据所述业务锁依次对所述交易请求进行处理,得到所述交易请求对应的当前业务数据;并在记录所述当前业务数据之后,将所述当前业务数据同步到其他数据中心,进而保持所有的数据中心的数据处于同步状态。

3.根据权利要求2所述的方法,其特征在于,所述方法还包括:

所述数据库路由器从所述备用数据中心获取所述当前业务数据并进行存储,以保持与各个数据中心的数据处于同步状态;

在所述目标数据中心的工作状态再次恢复正常的时候,所述数据库路由器根据自身存储的业务数据对所述目标数据中心进行数据同步,以使所述目标数据中心与其他数据中心保持数据同步。

4.根据权利要求1所述的方法,其特征在于,所述方法还包括:

若所述已存储业务数据与所述历史业务数据不同,向用户反馈等待信息;

在预设等待时长之后,再次对各个数据中心进行数据检测,得到所述目标数据中心关于所述目标交易账户的已存储业务数据和其他目标数据中心关于所述目标交易账户的历史业务数据,并将所述已存储业务数据与所述历史业务数据进行对比;

若所述已存储业务数据与所述历史业务数据相同,根据所述交易请求发起的业务时间和所述目标交易账户,为各个所述交易请求分配业务锁;

若所述已存储业务数据与所述历史业务数据不同,向用户反馈交易失败信息。

5.根据权利要求1所述的方法,其特征在于,所述交易请求包括独立交易请求,所述独立交易请求为与其他交易请求不存在共同交易账户的请求;所述业务锁包括分布式锁;

所述方法通过以下方式为所述交易请求分配业务锁:

根据所述独立交易请求发起的业务时间,为各个所述独立交易请求分配第一分布式锁。

6.根据权利要求1所述的方法,其特征在于,所述交易请求包括关联交易请求,所述关联交易请求为与其他交易请求存在共同交易账户的请求;所述业务锁包括联合锁;

所述方法通过以下方式为所述交易请求分配业务锁:

为所述关联交易请求分配联合锁;

根据所述关联交易请求包含的各个交易请求发起的业务时间,为各个所述交易请求分配第二分布式锁。

7.根据权利要求6所述的方法,其特征在于,所述方法还包括:

若所述共同交易账户对应的多个所述关联交易请求匹配到不同的目标数据中心,根据所述共同交易账户的账户属性信息,对所述关联交易请求的目标数据中心进行调整,以使同一所述共同交易账户的所有关联交易请求在同一所述目标数据中心下进行处理。

8.一种数据处理装置,其特征在于,驻留于数据库路由器,所述数据库路由器通信连接有多个数据中心,不同的数据中心之间具有预设距离的间隔;所述装置包括:匹配模块,用于针对用户发起的交易请求,根据预设的用户与数据中心的匹配关系,为所述交易请求匹配对应的目标数据中心,并将所述交易请求发送到所述目标数据中心;所述交易请求包含有目标交易账户;

检测模块,用于对各个数据中心进行数据检测,得到所述目标数据中心关于所述目标交易账户的已存储业务数据和其他目标数据中心关于所述目标交易账户的历史业务数据,并将所述已存储业务数据与所述历史业务数据进行对比;

分配模块,用于若所述已存储业务数据与所述历史业务数据相同,根据所述交易请求发起的业务时间和所述目标交易账户,为各个所述交易请求分配业务锁,以使所述目标数据中心根据所述业务锁依次对所述交易请求进行处理,得到所述交易请求对应的当前业务数据;并在记录所述当前业务数据之后,将所述当前业务数据同步到其他数据中心,进而保持所有的数据中心的数据处于同步状态。

9.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至7任一所述的数据处理方法的步骤。

10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7任一所述的数据处理方法的步骤。

说明书 :

一种数据处理方法、装置、电子设备及存储介质

技术领域

[0001] 本申请涉及金融交易技术领域,具体而言,涉及一种数据处理方法、装置、电子设备及存储介质。

背景技术

[0002] 随着近年大范围自然灾害对数据系统带来的危害,特别是由于自然因素对金融交易业务系统带来的影响,人们逐渐意识到数据集中带来的业务连续性问题,因此开启了以同城或异地灾备、多活为核心内容的阶段建设。
[0003] 现有技术中,为了避免故障宕机导致不能够进行正常业务,一般都会建设两个或者多个数据中心,一个主数据中心用于承担用户的业务,一个是备份数据中心用于备份主数据中心的数据、配置和业务等,主备数据中心之间一般有热备、冷备、双(多)活三种备份方式。其中,双(多)活的备份方式同时承担用户的业务,双(多)活数据中心是两个数据中心的应用都处于活动状态,都有业务对外提供服务且互为备份。但是由于双(多)数据中心距离较远,传输时间的限制,对于金融领域时间要求较为苛刻的交易来说,会造成数据不能同步的问题。

发明内容

[0004] 有鉴于此,本申请的目的在于提供一种数据处理方法、装置、电子设备及存储介质,以克服上述的技术问题。
[0005] 第一方面,本申请实施例提供了一种数据处理方法,应用于数据库路由器,所述数据库路由器通信连接有多个数据中心,不同的数据中心之间具有预设距离的间隔;所述方法包括:
[0006] 针对用户发起的交易请求,根据预设的用户与数据中心的匹配关系,为所述交易请求匹配对应的目标数据中心,并将所述交易请求发送到所述目标数据中心;所述交易请求包含有目标交易账户;
[0007] 对各个数据中心进行数据检测,得到所述目标数据中心关于所述目标交易账户的已存储业务数据和其他目标数据中心关于所述目标交易账户的历史业务数据,并将所述已存储业务数据与所述历史业务数据进行对比;
[0008] 若所述已存储业务数据与所述历史业务数据相同,根据所述交易请求发起的业务时间和所述目标交易账户,为各个所述交易请求分配业务锁,以使所述目标数据中心根据所述业务锁依次对所述交易请求进行处理,得到所述交易请求对应的当前业务数据;并在记录所述当前业务数据之后,将所述当前业务数据同步到其他数据中心,进而保持所有的数据中心的数据处于同步状态。
[0009] 在本申请一些技术方案中,上述方法还包括:
[0010] 监测各个数据中心的工作状态;
[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] 为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍, 应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0041] 图1示出了本申请实施例所提供的一种数据处理方法的流程示意图;
[0042] 图2示出了本申请实施例所提供的一种应用场景示意图;
[0043] 图3示出了本申请实施例所提供的一种数据处理装置示意图;
[0044] 图4为本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

[0045] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。 应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。 此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
[0046] 另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0047] 需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
[0048] 随着近年大范围自然灾害对数据系统带来的危害,特别是由于自然因素对金融交易业务系统带来的影响,人们逐渐意识到数据集中带来的业务连续性问题,因此开启了以同城或异地灾备、多活为核心内容的阶段建设。
[0049] 现有技术中,为了避免故障宕机导致不能够进行正常业务,一般都会建设两个或者多个数据中心,一个主数据中心用于承担用户的业务,一个是备份数据中心用于备份主数据中心的数据、配置和业务等,主备数据中心之间一般有热备、冷备、双(多)活三种备份方式。其中,双(多)活的备份方式同时承担用户的业务,双(多)活数据中心是两个数据中心的应用都处于活动状态,都有业务对外提供服务且互为备份。基于Oracle RAC在OGG作为数据同步完成数据库双活的设计方案中,由于数据复制有时间差,业务交易时,在交易过程中对于账户余额等实时处理要求高的场景,业务上无法接受同步等待的处理的方式。
[0050] 基于此,本申请实施例提供了一种数据处理方法、装置、电子设备及存储介质,避免跨数据中心读写的交易处理流程,所以方案要求对应用服务进行配置标记,交易请求转发到应用服务器集群A的数据存储到数据中心A,应用服务器集群B的数据存储到数据中心B,交易有逻辑关联的要保持关联性和语义一致。下面通过实施例进行描述。
[0051] 图1示出了本申请实施例所提供的一种数据处理方法的流程示意图,其中,该方法包括步骤S101‑S103;具体的:
[0052] S101、针对用户发起的交易请求,根据预设的用户与数据中心的匹配关系,为所述交易请求匹配对应的目标数据中心,并将所述交易请求发送到所述目标数据中心;所述交易请求包含有目标交易账户;
[0053] S102、对各个数据中心进行数据检测,得到所述目标数据中心关于所述目标交易账户的已存储业务数据和其他目标数据中心关于所述目标交易账户的历史业务数据,并将所述已存储业务数据与所述历史业务数据进行对比;
[0054] S103、若所述已存储业务数据与所述历史业务数据相同,根据所述交易请求发起的业务时间和所述目标交易账户,为各个所述交易请求分配业务锁,以使所述目标数据中心根据所述业务锁依次对所述交易请求进行处理,得到所述交易请求对应的当前业务数据;并在记录所述当前业务数据之后,将所述当前业务数据同步到其他数据中心,进而保持所有的数据中心的数据处于同步状态。
[0055] 本申请通过数据库路由器对交易请求分配到不同的目标数据中心进行处理,提高了处理效率;在目标数据中心处理交易请求之前对该目标数据中心的数据进行检测,只有在目标数据中心里的数据已处于同步状态时,才对交易请求进行处理;在对交易请求进行处理时根据分配业务锁进行处理,避免了交易账户的数据不同步。
[0056] 下面对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
[0057] S101、针对用户发起的交易请求,根据预设的用户与数据中心的匹配关系,为所述交易请求匹配对应的目标数据中心,并将所述交易请求发送到所述目标数据中心;所述交易请求包含有目标交易账户。
[0058] 本申请的方法应用于数据库路由器,如图2为本申请方法的应用环境。用户通过用户端发起交易业务(支付、充值、退款、提现、转账等)的交易请求,这里的用户端包括手机、电脑(pc机、pad等)。这里的交易请求包含有一个或者两个目标交易账户,本申请中的目标交易账户为已注册的个人账户,而非公司级账户(本申请认为交易平台、银行等机构会对公司级账户进行统一管理与个人账户的个人处理方式不同)。例如,个人发起向商家支付的交易请求,本申请认为该交易请求中包含了一个目标交易账户(该个人账户为目标交易账户);再例如,李四发起了向王五的转账的交易请求,本申请认为该交易请求中包含了两个目标交易账户(即李四的个人账户和王五的个人账户)。
[0059] 本申请中的数据库路由器接收交易请求,并将交易请求发送给数据中心进行处理。数据中心是特定设备网络,用来在Internet网络基础设施上传递、加速、展示、计算、存储数据信息。本申请中的数据中心之间具有一定的距离,这里的距离不对区域进行限定。例如,某城市的两个间隔二百千米的数据中心;或者,位于北京市边界的一个数据中心与位于河北的一个数据中心之间间隔也是二百千米,上述两种情景都符合本申请中对数据中心的要求。
[0060] 本申请数据库路由器中预先存储有用户与数据中心的匹配关系,这里的匹配关系表征预先设置的该用户发起的交易请求在哪个数据中心进行处理。所述匹配关系包括用户发起交易请求的位置与数据中心的位置的匹配关系、个人标识与数据中心的匹配关系等。例如,本申请设置数据中心优先处理较近范围内的交易请求,张三发起的交易请求距离数据中心1的距离为五十米,距离数据中心2的距离为三千米,则本申请将张三发起的此次交易请求分配给数据中心1进行处理。再例如,本申请数据库路由器为不同的用户设置有不同的编号,在数据中心为两个的时候,根据编号的奇偶进行分配;在数据中心为三个的时候,则根据除三的余数来作为数据中心的筛选条件。
[0061] 数据库路由器在接收到用户发起的交易请求之后,通过上述的匹配关系,将各个交易请求分配到各个数据中心进行处理。
[0062] 本申请实施例中,作为一可选实施例,本申请中的数据库路由器还对各个数据中心工作状态进行实时检测,如果存在工作状态异常的数据中心的话,该数据中心不能进行正常的交易请求处理工作,所以该异常的数据中心需要处理的交易请求就需要分配给其他的数据中心进行处理。本申请将再次分配的数据中心成为备用数据中心,本申请中的各个数据中心可以互为备用数据中心。在分配备用数据中心的时候,根据与目标数据中心的距离、处理效率等因素进行分配。在分配好备用数据中心之后,备用数据中心将顶替原来的目标数据中心进行后续的工作,后续的备用数据中心的处理过程与目标数据中心的处理过程相同,后续不在赘述。在原来的目标数据中心的工作状态恢复正常之后,备用数据中心不再顶替该目标数据中心的工作。
[0063] S102、对各个数据中心进行数据检测,得到所述目标数据中心关于所述目标交易账户的已存储业务数据和其他目标数据中心关于所述目标交易账户的历史业务数据,并将所述已存储业务数据与所述历史业务数据进行对比。
[0064] 为了保证数据同步,本申请在将交易请求发送给目标数据中心之后,并未直接使用目标数据中心对交易请求进行处理,而是首先对各个数据中的数据进行了检测。在对各个数据中心进行数据检测的时候是根据该交易请求中包含的目标交易账户进行检测的。通过对目标数据中心进行数据检测,得到目标数据中心关于目标交易账户的已存储业务数据,通过其他目标数据中心进行数据检测得到其他数据中心关于目标交易账户的历史业务数据,通过将目标数据中心的已存储业务数据与其他数据中心的历史业务数据进行对比,进而确定目标数据中心是否能直接对交易请求进行处理。
[0065] 例如,用户A使用账户A发起的支付请求,则在目标数据中心检测得到账户A的已存储业务数据,在其他数据中心检测账户A的历史业务数据。
[0066] 用户A使用账户A向用户B的账户B发起了转账请求,则在目标数据中心检测得到账户A的已存储业务数据和账户B的已存储业务数据,在其他数据中心检测账户A的历史业务数据和账户B的历史业务数据。
[0067] 再例如,用户A使用用户B的手机(绑定了用户B的账户)发起了支付请求,则在目标数据中心检测得到账户B的已存储业务数据,在其他数据中心检测账户B的历史业务数据。
[0068] S103、若所述已存储业务数据与所述历史业务数据相同,根据所述交易请求发起的业务时间和所述目标交易账户,为各个所述交易请求分配业务锁,以使所述目标数据中心根据所述业务锁依次对所述交易请求进行处理,得到所述交易请求对应的当前业务数据;并在记录所述当前业务数据之后,将所述当前业务数据同步到其他数据中心,进而保持所有的数据中心的数据处于同步状态。
[0069] 通过将目标数据中心的已存储业务数据与其他数据中心的历史业务数据进行对比,能够确定目标数据中心关于目标交易账户的业务数据是否与其他数据中心保持同步。若目标数据中心的已存储业务数据与其他数据中心的历史业务数据中心相同,表征该目标数据中心关于目标交易账户的业务数据已全部进行处理,能够正常处理下次关于目标交易账户的交易请求。
[0070] 为了保证各个交易请求能够正常有序的处理,本申请还为各个交易请求分配了业务锁,以使目标数据中心按照业务锁依次对各个交易请求进行处理。
[0071] 本申请中的业务锁包括分布式锁和联合锁,在对交易请求分配业务锁的时候,为了提高处理效率,本申请有将交易请求分为了独立交易请求和关联交易请求。所述独立交易请求为与其他交易请求不存在共同交易账户的请求;所述关联交易请求为与其他交易请求存在共同交易账户的请求。不同类型的交易请求分配的业务锁的类型也是不同的,具体分配如下:针对独立交易请求:根据所述独立交易请求发起的业务时间,为各个所述独立交易请求分配第一分布式锁。针对关联交易请求:为所述关联交易请求分配联合锁;根据所述关联交易请求包含的各个交易请求发起的业务时间,为各个所述交易请求分配第二分布式锁。
[0072] 例如,用户A使用账户A分其的支付请求与用户B使用账户B向用户A的账户A转账的请求,两个交易请求中同时包含了账户A,则这两个交易请求为关联交易请求。则为这两个交易请求分配一个关联锁,按照两个交易请求的时间,为这两个请求分配分布式锁,即这两个交易请求整体上为一个联合锁,联合锁的内部又包含有分布式锁。具体的,本申请同时将账户A和账户B进行锁定,按照交上述两个请求的发起时间依次进行处理。
[0073] 用户A使用账户A分其的支付请求与用户B使用账户B向用户C的账户C转账的请求,这两个交易请求中不存在相同的交易账户,则这两个交易请求为独立交易请求,为这两个交易请求分配分布式锁。
[0074] 本申请实施例中,作为一可选实施例,针对上述的关联交易请求,为了进一步提高数据同步的效率,本申请对关联交易请求中的每个交易请求分配到的目标数据中心进行了检测,确定关联交易请求中每个交易请求分配到了哪个数据中心。如果关联交易请求中的所有交易请求都分到了同一个数据中心的话,就直接使用这个目标数据中心对关联交易请求中的所有交易请求进行处理即可。若所述共同交易账户对应的多个所述关联交易请求匹配到不同的目标数据中心,根据所述共同交易账户的账户属性信息,对所述关联交易请求的目标数据中心进行调整,以使同一所述共同交易账户的所有关联交易请求在同一所述目标数据中心下进行处理。
[0075] 例如,关联交易请求:十点十分,用户A使用账户A分其的支付请求和十点十一分,用户B使用账户B向用户A的账户A转账的请求。根据用户编号匹配,将支付请求分配到了数据中心1进行处理,将转账请求分配到了数据中心2进行处理。如果按照该数据中心的分配方式进行处理的话,数据中心1在处理完支付请求之后,还没来得及将数据同步到数据中心2的时候,数据中心2的交易已经发送,会造成共同账户的交易数据是错误的。为了避免上述情况,本申请将转账请求的目标数据中心由原来的数据中心2改变为数据中心1,让数据中心1同时处理上述两个请求。
[0076] 通过上述过程之后,目标数据中心对交易请求进行处理,得到该交易请求的当前业务数据,并在记录所述当前业务数据之后,将所述当前业务数据同步到其他数据中心,进而保持所有的数据中心的数据处于同步状态。
[0077] 本申请实施例中,作为一可选实施例,若所述已存储业务数据与所述历史业务数据不同,向用户反馈等待信息;
[0078] 在预设等待时长之后,再次对各个数据中心进行数据检测,得到所述目标数据中心关于所述目标交易账户的已存储业务数据和其他目标数据中心关于所述目标交易账户的历史业务数据,并将所述已存储业务数据与所述历史业务数据进行对比;
[0079] 若所述已存储业务数据与所述历史业务数据相同,根据所述交易请求发起的业务时间和所述目标交易账户,为各个所述交易请求分配业务锁;
[0080] 若所述已存储业务数据与所述历史业务数据不同,向用户反馈交易失败信息。
[0081] 通过对比,如果目标数据中心的已存储业务数据与历史业务数据不同的话,表征了目标数据中心还存在未同步的历史业务数据。此时,如果进行后续的业务处理的话,就会造成数据错乱。为了避免这种情况,本申请向用户反馈等待信息,同时进入预设时长的等待,之后重复上述的数据检测、对比过程。若再次对比之后,所述已存储业务数据与所述历史业务数据相同的话,则正常进行后续的处理操作,否则提示用户交易失败信息。
[0082] 本申请实施例中,作为一可选实施例,所述数据库路由器从所述备用数据中心获取所述当前业务数据并进行存储,以保持与各个数据中心的数据处于同步状态;
[0083] 在所述目标数据中心的工作状态再次恢复正常的时候,所述数据库路由器根据自身存储的业务数据对所述目标数据中心进行数据同步,以使所述目标数据中心与其他数据中心保持数据同步。
[0084] 本申请中的数据库路由器还存储了各个数据中心产生的业务数据,这里数据库路由器存储业务数据有两个作用,第一个作用是用来给工作异常的数据中心进行数据同步,补充该数据中心异常工作时丢失的数据。第二个作用是为了验证上述从其他数据中心获取的历史业务数据,也就是说,上述方法还包括:从其他数据中心获取了历史业务数据之后要先与数据库路由器中的历史业务数据进行校验之后,才与目标数据中心的已存储业务数据进行对比,保证了数据的准确性。
[0085] 本申请实施例中,作为一可选实施例,用户U1在进行支付、充值、提现等交易过程中,数据库路由器预设根据付款方信息,在交易请求报文中获取系统为用户分配的唯一标识,获取对应编码后,拿到编码数字部分对数据中心做区域操作,如数据中心为2个,则编码根据奇偶进行数据源路由筛选,若数据中心为3,则根据除三的余数来作为数据中心编码的筛选条件;
[0086] 获取到目标数据源后,会针对本次交易付款方交易全局标志进行判断,若当前数据中心和缓存中记录一致,则采用分布式锁将当前交易主体进行锁定,进而在所选数据源中进行交易处理,在交易处理结束,改数据源对应数据库事务提交的同时会更新交易全局标志,且记录日志同步更新缓存,操作成功后释放对应分布式锁,此时锁为独占锁。
[0087] 还有一种场景为,用户U2在数据中心B向用户U1进行转账,由于交易双方均未实时清结算账户,且U1按照约定规则路由筛选为数据中心A,此时会采用联合锁,但在存在两种情况,U1本身先进行支付、充值、提现等交易,也就是U1的独占锁已经持有,若此时U2想U1进行转账,由于联合锁要同时对U2和U1进行加锁,加锁失败,此时数据库路由器开启重试和等待的处理,并且周期性的去重试,周期可以由业务调用方进行配置,并且重试次数同样也可以动态调节,若超过约定最大次数,仍未加锁成功,即U1的交易没有正确在数据中心B进行同步,则会在终端提示U2系统处理异常请稍后重试,将选择权交由用户;若重试成功,则两笔交易都正确进行处理即可;另一种情况为U2给U1发送转账请求早于U1自己的交易请求,则转账正常处理,但U1本身的交易需要等待或者重试。
[0088] 其中,分布式锁采用Redis进行实现,并且数据库路由器全局注册了所有数据中心的健康检查监听器,内部会周期性的对Redis和Oracle两种数据持久化中间件进行可用性检查,有任何异常,在内部都会启动全局路由和协调的作用,若超过最大允许失败阈值,将启动风险通知到业务负责人进行人工干预排查。
[0089] 图3示出了本申请实施例所提供的一种数据处理装置的结构示意图,驻留于数据库路由器,所述数据库路由器通信连接有多个数据中心,不同的数据中心之间具有预设距离的间隔;所述装置包括:
[0090] 匹配模块,用于针对用户发起的交易请求,根据预设的用户与数据中心的匹配关系,为所述交易请求匹配对应的目标数据中心,并将所述交易请求发送到所述目标数据中心;所述交易请求包含有目标交易账户;
[0091] 检测模块,用于对各个数据中心进行数据检测,得到所述目标数据中心关于所述目标交易账户的已存储业务数据和其他目标数据中心关于所述目标交易账户的历史业务数据,并将所述已存储业务数据与所述历史业务数据进行对比;
[0092] 分配模块,用于若所述已存储业务数据与所述历史业务数据相同,根据所述交易请求发起的业务时间和所述目标交易账户,为各个所述交易请求分配业务锁,以使所述目标数据中心根据所述业务锁依次对所述交易请求进行处理,得到所述交易请求对应的当前业务数据;并在记录所述当前业务数据之后,将所述当前业务数据同步到其他数据中心,进而保持所有的数据中心的数据处于同步状态。
[0093] 所述装置还包括,监测模块,用于监测各个数据中心的工作状态;
[0094] 若所述目标数据中心处于异常工作状态,将所述交易请求发送到预设的备用数据中心;
[0095] 检测模块,还用于对各个数据中心进行数据检测,得到所述备用数据中心关于所述目标交易账户的已存储业务数据和其他目标数据中心关于所述目标交易账户的历史业务数据,并将所述已存储业务数据与所述历史业务数据进行对比;
[0096] 分配模块,还用于若所述已存储业务数据与所述历史业务数据相同,根据所述交易请求发起的业务时间和所述目标交易账户,为各个所述交易请求分配业务锁,以使所述备用数据中心根据所述业务锁依次对所述交易请求进行处理,得到所述交易请求对应的当前业务数据;并在记录所述当前业务数据之后,将所述当前业务数据同步到其他数据中心,进而保持所有的数据中心的数据处于同步状态。
[0097] 存储模块,用于所述数据库路由器从所述备用数据中心获取所述当前业务数据并进行存储,以保持与各个数据中心的数据处于同步状态;
[0098] 在所述目标数据中心的工作状态再次恢复正常的时候,所述数据库路由器根据自身存储的业务数据对所述目标数据中心进行数据同步,以使所述目标数据中心与其他数据中心保持数据同步。
[0099] 分配模块,还用于若所述已存储业务数据与所述历史业务数据不同,向用户反馈等待信息;
[0100] 在预设等待时长之后,再次对各个数据中心进行数据检测,得到所述目标数据中心关于所述目标交易账户的已存储业务数据和其他目标数据中心关于所述目标交易账户的历史业务数据,并将所述已存储业务数据与所述历史业务数据进行对比;
[0101] 若所述已存储业务数据与所述历史业务数据相同,根据所述交易请求发起的业务时间和所述目标交易账户,为各个所述交易请求分配业务锁;
[0102] 若所述已存储业务数据与所述历史业务数据不同,向用户反馈交易失败信息。
[0103] 所述交易请求包括独立交易请求,所述独立交易请求为与其他交易请求不存在共同交易账户的请求;所述业务锁包括分布式锁;
[0104] 所述方法通过以下方式为所述交易请求分配业务锁:
[0105] 根据所述独立交易请求发起的业务时间,为各个所述独立交易请求分配第一分布式锁。
[0106] 所述交易请求包括关联交易请求,所述关联交易请求为与其他交易请求存在共同交易账户的请求;所述业务锁包括联合锁;
[0107] 所述方法通过以下方式为所述交易请求分配业务锁:
[0108] 为所述关联交易请求分配联合锁;
[0109] 根据所述关联交易请求包含的各个交易请求发起的业务时间,为各个所述交易请求分配第二分布式锁。
[0110] 调整模块,用于若所述共同交易账户对应的多个所述关联交易请求匹配到不同的目标数据中心,根据所述共同交易账户的账户属性信息,对所述关联交易请求的目标数据中心进行调整,以使同一所述共同交易账户的所有关联交易请求在同一所述目标数据中心下进行处理。
[0111] 如图4所示,本申请实施例提供了一种电子设备,用于执行本申请中的数据处理方法,该设备包括存储器、处理器、总线及存储在该存储器上并可在该处理器上运行的计算机程序,其中,上述处理器执行上述计算机程序时实现上述的数据处理方法的步骤。
[0112] 具体地,上述存储器和处理器可以为通用的存储器和处理器,这里不做具体限定,当处理器运行存储器存储的计算机程序时,能够执行上述的数据处理方法。
[0113] 对应于本申请中的数据处理方法,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述的数据处理方法的步骤。
[0114] 具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述的数据处理方法。
[0115] 在本申请所提供的实施例中,应该理解到,所揭露系统和方法,可以通过其它的方式实现。以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0116] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0117] 另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0118] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read‑Only Memory, ROM)、随机存取存储器(Random Access Memory ,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0119] 应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0120] 最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。