业务数据处理方法和装置转让专利

申请号 : CN201710258872.1

文献号 : CN107239487B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄东庆郭润增唐川鹏苗俊磊

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本发明提供一种业务数据处理方法和装置,该方法包括:获取第一业务数据处理请求;根据第一业务数据处理请求,获取任一的数据库的标识;在记录的标识对应的数据库历史执行失败次数超过设定阈值时,返回根据第一业务数据处理请求,获取任一的数据库的标识的步骤以获取下一数据库的标识,直至获取的标识对应的数据库的历史执行失败次数小于设定阈值;向标识对应的数据库发送第一测试请求;在检测到第一测试请求执行成功后,将第一业务数据处理请求发送至标识对应的数据库。该方法分配的数据库并非固定的,从而能够提高数据成功处理的机率,进一步地提高业务处理的性能。

权利要求 :

1.一种业务数据处理方法,其特征在于,包括:

获取第一业务数据处理请求;

根据所述第一业务数据处理请求,获取任一的数据库的标识;

在记录的所述标识对应的数据库历史执行失败次数超过设定阈值时,返回所述根据所述第一业务数据处理请求,获取任一的数据库的标识的步骤以获取下一数据库的标识,直至获取的所述标识对应的数据库的历史执行失败次数小于设定阈值;

向所述标识对应的数据库发送第一测试请求;

在检测到所述第一测试请求执行成功后,将所述第一业务数据处理请求发送至所述标识对应的数据库。

2.根据权利要求1所述的方法,其特征在于,所述第一业务数据处理请求包括数据写入请求,所述数据写入请求包括第一业务编号;

所述在检测到所述第一测试请求执行成功后,将所述第一业务数据处理请求发送至所述标识对应的数据库的步骤包括:在检测到所述第一测试请求执行成功后,根据所述第一业务编号和所述标识生成第二业务编号;

将所述数据写入请求发送至所述标识对应的数据库,所述数据写入请求携带有所述第二业务编号,由所述数据库对所述第二业务编号进行写入处理。

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

在所述根据所述第一业务编号和所述标识生成第二业务编号的步骤之后,还包括:建立所述第一业务编号与第二业务编号的映射关系;

在将所述数据写入请求发送至所述标识对应的数据库的步骤之后,还包括:接收第二业务数据处理请求,所述第二业务数据处理请求携带有所述第一业务编号或第二业务编号;

当所述第二业务数据处理请求携带有所述第一业务编号时,根据所述映射关系查找所述第一业务编号对应的所述第二业务编号;

识别所述第二业务编号,得到存储有所述第二业务编号对应数据的数据库的标识;

将所述第二业务数据处理请求发送至所述标识对应的数据库,所述第二业务数据处理请求携带有所述第二业务编号,由所述数据库根据所述第二业务数据处理请求对所述第二业务编号对应的数据进行处理。

4.根据权利要求3所述的方法,其特征在于,在所述根据所述第一业务编号和所述标识生成第二业务编号的步骤之后,还包括:将所述数据写入请求发送至缓存数据库,所述数据写入请求携带有所述第二业务编号,由所述缓存数据库对所述第二业务编号进行写入处理;

当检测到所述第二业务数据处理请求执行失败时,向缓存数据库发送所述第二业务数据处理请求,由所述缓存数据库根据所述第二业务数据处理请求对所述第二业务编号对应的数据进行处理。

5.根据权利要求4所述的方法,其特征在于,所述第二业务处理请求包括数据更新请求,当所述第二业务数据处理请求包括所述数据更新请求时,在所述向缓存数据库发送所述第二业务数据处理请求的步骤之后,还包括:每间隔预设时间向所述标识对应的数据库发送第二测试请求;

当检测到所述第二测试请求执行成功后,将所述缓存数据库中更新的所述第二业务编号对应的数据同步至所述标识对应的数据库。

6.一种业务数据处理装置,其特征在于,包括:请求获取模块、选择模块、第一判断模块、测试发送模块和处理模块;

所述请求获取模块,用于获取第一业务数据处理请求;

所述选择模块,用于根据所述第一业务数据处理请求,获取任一的数据库的标识;

所述第一判断模块,用于判断记录的所述标识对应的数据库历史执行失败次数是否超过设定阈值;

所述选择模块,还用于在所述第一判断模块的判断结果为是时,获取下一数据库的标识;

所述测试发送模块,用于在所述第一判断模块的判断结果为否时,向所述标识对应的数据库发送第一测试请求;

所述处理模块,用于在检测到所述第一测试请求执行成功后,将所述第一业务数据处理请求发送至所述标识对应的数据库。

7.根据权利要求6的装置,其特征在于,第一业务数据处理请求包括数据写入请求,数据写入请求包括第一业务编号;

处理模块包括编号生成模块和写入模块;

编号生成模块,用于在检测到第一测试请求执行成功后,根据第一业务编号和标识生成第二业务编号;

写入模块,用于将数据写入请求发送至标识对应的数据库,数据写入请求携带有第二业务编号,由数据库对第二业务编号进行写入处理。

8.根据权利要求7的装置,其特征在于:所述处理模块还包括映射模块、查找模块和识别模块;

所述映射模块,用于建立第一业务编号与第二业务编号的映射关系;

所述请求获取模块,还用于接收第二业务数据处理请求,第二业务数据处理请求携带有第一业务编号或第二业务编号;

所述查找模块,用于当第二业务数据处理请求携带有第一业务编号时,根据映射关系查找第一业务编号对应的第二业务编号;

所述识别模块,用于识别第二业务编号,得到存储有第二业务编号对应数据的数据库的标识;

所述写入模块,还用于将第二业务数据处理请求发送至标识对应的数据库,第二业务数据处理请求携带有第二业务编号,由数据库根据第二业务数据处理请求对第二业务编号对应的数据进行处理。

9.根据权利要求8的装置,其特征在于:

所述写入模块,还用于将数据写入请求发送至缓存数据库,数据写入请求携带有第二业务编号,由缓存数据库对第二业务编号进行写入处理,并在当检测到第二业务数据处理请求执行失败时,向缓存数据库发送第二业务数据处理请求,由缓存数据库根据第二业务数据处理请求对第二业务编号对应的数据进行处理。

10.根据权利要求9的装置,其特征在于:

第二业务处理请求包括数据更新请求;

测试发送模块还用于当第二业务数据处理请求包括数据更新请求时,每间隔预设时间向标识对应的数据库发送第二测试请求;

处理模块,还用于当检测到第二测试请求执行成功后,将缓存数据库中更新的第二业务编号对应的数据同步至标识对应的数据库。

11.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至5中任一项所述方法的步骤。

12.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至5中任一项所述方法的步骤。

说明书 :

业务数据处理方法和装置

技术领域

[0001] 本发明涉及数据库处理领域,特别是涉及一种业务数据处理方法和装置。

背景技术

[0002] 随着电商平台和移动终端的快速发展,人们在日常生活中使用第三方支付平台对日常消费进行付款的频次也日益增加。第三方支付平台是指具备一定实力和信誉保障的独立机构,采用与各大银行签约的方式,提供与银行支付结算系统接口的交易支付平台的网络支付模式。
[0003] 使用第三方支付的用户日益增多,这就要求第三方支付平台有较高的数据处理能力以及容灾能力,能够及时响应用户的查询、支付等请求。为此,通常第三方支付平台部署有多个数据库,通过设计分库规则,根据数据的属性分配固定的数据库以在该数据库中写入数据,从而均衡各数据库的负载。
[0004] 然而在实际的应用中,由于分库规则是根据数据的属性分配固定的数据库,当数据库发生故障时,对应的数据库无法及时响应用户的查询、支付等请求,从而导致第三方支付平台的业务处理性能低。

发明内容

[0005] 基于此,有必要针对第三方支付平台分配的数据库固定导致业务处理性能低的问题,提供一种业务处理性能高的业务数据处理方法和装置。
[0006] 为达到上述目的,一个实施例中采用以下技术方案:
[0007] 一种业务数据处理方法,包括:
[0008] 获取第一业务数据处理请求;
[0009] 根据所述第一业务数据处理请求,获取任一的数据库的标识;
[0010] 在记录的所述标识对应的数据库历史执行失败次数超过设定阈值时,返回所述根据所述第一业务数据处理请求,获取任一的数据库的标识的步骤以获取下一数据库的标识,直至获取的所述标识对应的数据库的历史执行失败次数小于设定阈值;
[0011] 向所述标识对应的数据库发送第一测试请求;
[0012] 在检测到所述第一测试请求执行成功后,将所述第一业务数据处理请求发送至所述标识对应的数据库。
[0013] 一种业务数据处理装置,包括:请求获取模块、选择模块、第一判断模块、测试发送模块和处理模块;
[0014] 所述请求获取模块,用于获取第一业务数据处理请求;
[0015] 所述选择模块,用于根据所述第一业务数据处理请求,获取任一的数据库的标识;
[0016] 所述第一判断模块,用于判断记录的所述标识对应的数据库历史执行失败次数是否超过设定阈值;
[0017] 所述选择模块,还用于在所述第一判断模块的判断结果为否时,获取下一数据库的标识;
[0018] 所述测试发送模块,用于在所述第一判断模块的判断结果为是时,向所述标识对应的数据库发送第一测试请求;
[0019] 所述处理模块,用于在检测到所述第一测试请求执行成功后,将所述第一业务数据处理请求发送至所述标识对应的数据库。
[0020] 上述的业务数据处理方法和装置,在获取到第一业务处理请求时,获取任一数据库的标识,在该数据库的历史执行失败次数超过设定阈值时,获取下一数据库的标识,直到获取的标识对应的数据库的历史执行失败次数小于设定阈值,则向该标识对应的数据库发送第一测试请求,在检测到第一测试请求执行成功后,将第一业务数据处理请求发送至该标识对应的数据库。该方法通过根据数据库的历史执行失败次数选择数据库,分配的数据库并非固定的,并且向该数据库发送的测试请求成功之后将第一业务数据处理请求发送该标识对应的数据库,从而能够提高数据成功处理的机率,进一步地提高业务处理的性能。

附图说明

[0021] 图1为一个实施例的业务数据处理方法和装置的应用环境示意图;
[0022] 图2为一个实施例的服务器的内部结构示意图;
[0023] 图3为一个实施例的业务数据处理方法的流程图;
[0024] 图4为一个另一个实施例的业务数据处理方法的流程图;
[0025] 图5为再一个实施例的业务数据处理方法的流程图;
[0026] 图6为另一个实施例的业务数据处理方法的流程图;
[0027] 图7为又一个实施例的业务数据处理方法的流程图;
[0028] 图8为一个实施例的业务数据处理装置的结构框图;
[0029] 图9为又一个实施例的业务数据处理装置的结构框图。

具体实施方式

[0030] 为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。
[0031] 图1为一个实施例提供的业务数据处理方法和装置的应用环境示意图。如图1所示,该应用环境包括第一终端101、第二终端102和第三方支付平台,第一终端101和第二终端102分别与第三方支付平台的服务器104通信连接。其中第一终端101为商家终端,第二终端102为买家终端。买家通过第二终端进行购买后,通过第三方支付平台生成业务订单,由第三方支付平台的数据库操作层分配数据库104,将订单插入至对应的数据库中存储。商家通过第一终端101或买家通过第二终端102向第三方支付平台查询业务交易信息。
[0032] 图2为另一个实施例中的第三方支付平台的服务器的内部结构示意图。如图2所示,服务器包括通过系统总线连接的处理器、存储介质、内存和网络接口。其中,服务器的存储介质存储有操作系统以及一种业务数据处理装置,该业务数据处理装置用于实现一种业务数据处理方法。该处理器用于提供计算和控制能力,支撑整个服务器的运行。服务器中的内存为存储介质中的业务数据处理装置运行提供环境,网络接口用于与用户终端进行网络通信,接收商家终端或买家终端发送的业务数据处理请求,将订单数据写入第三方支付平台的数据库中,并调用支付接口进行支付。本领域技术人员可以理解,图2中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的服务器的限定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0033] 请参照图3,在一个实施例中,提供一种业务数据处理方法,该方法运行在如图1所示的第三方支付平台的数据库操作层,该方法包括以下步骤:
[0034] S302:获取第一业务数据处理请求。
[0035] 第一业务数据处理请求是通过在商家终端或买家终端操作产生的对第三方支付平台的订单信息进行处理的请求,包括订单查询、订单支付、退款等操作产生的处理请求。第三方支付平台根据数据特性将数据分为两类,一类是基础数据,一类是订单数据。基础数据包括与第三方支付平台合作的商户的信息,数据较少,读取频率高,写入频率低。订单数据包括通过第三方支付平台进行支付的订单数据,数据量大,读取和写入频率高。基础数据和订单数据分别采用不同的数据库进行存储。基础数据采用一组数据库,该数据库包括一个主数据库和至少一个从数据库。订单数据采用多组数据库进行存储,每组数据库包括一个主数据库和至少一个从数据库。本实施例的业务数据处理方法可用于第三方支付平台的基础数据处理和订单数据处理。
[0036] S304:根据业务数据处理请求,获取任一数据库的标识。
[0037] 标识是数据库的唯一识别标记。订单数据对应的数据库中一组数据库中的主数据库和各从数据库具有相同的标识,基础数据对应的数据库中主数据库和各从数据库分别具有不同的标识。当接收到业务处理请求时,随机选择任一数据库,获取选择的数据库的标识。
[0038] S306:判断记录的标识对应的数据库历史执行失败次数是否超过设定阈值。若否,则执行步骤S308,若是,则返回步骤S304,以获取下一数据库的标识,直至获取的标识对应的数据库的历史执行失败次数小于设定阈值。
[0039] 具体地,设定阈值是通过实际实验得出的最佳值。历史执行失败次数是指记录的一段时间内连接该标识对应的数据库的历史执行失败次数。例如,可通过计数器,分别对各标识对应的数据库的历史执行失败次数进行记录。而考虑到该标识对应的数据库故障恢复时,业务能够重新启用,可对计数器设置运行周期,例如,一个运行周期为一小时,在该运行周期结束后,将各标识对应的数据库历史执行失败次数初始化为零,从而确保数据库故障恢复时能够重新启用。
[0040] S308:向标识对应的数据库发送第一测试请求。
[0041] 具体地,向该标识对应的数据库发送update语句或select语句进行测试。例如,在需要对该标识对应的数据库进行写入操作时,可发送update语句进行测试,若update语句执行成功,说明该标识对应的数据库可进行写入操作或读取操作。又例如,在需要对该标识对应的数据库进行读取操作时,可发送select语句进行测试,若select语句执行成功,说明该标识对应的数据库可进行读取操作。
[0042] S310:检测第一测试请求是否执行成功。若是,则执行步骤S312。若否,则执行步骤S314。
[0043] S312:将第一业务数据处理请求发送至标识对应的数据库。
[0044] 将数据处理请求发送至标识对应的数据库,由该标识对应的数据库对数据处理请求进行处理。
[0045] 步骤S314:更新标识对应的数据库的历史执行失败次数,并在步骤S314之后返回步骤S304,以获取下一数据库的标识。
[0046] 若检测到第一测试请求未执行成功,则更新该标识对应的数据库的历史执行失败次数。具体地,在计算器中记录的该标识对应的数据库的历史执行失败次数的基础上加1,得到该标识对应的数据库的更新的历史执行失败次数。
[0047] 上述的业务数据处理方法,在获取到第一业务处理请求时,获取任一单位的数据库的标识,在该数据库的历史执行失败次数超过设定阈值时,获取下一数据库的标识,直到获取的标识对应的数据库的历史执行失败次数小于设定阈值,则向该标识对应的数据库发送第一测试请求,在检测到第一测试请求执行成功后,将第一业务数据处理请求发送至该标识对应的数据库。该方法通过根据数据库的历史执行失败次数选择数据库,分配的数据库并非固定的,并且向该数据库发送的测试请求成功之后将数据处理请求发送该标识对应的数据库,从而能够提高数据成功处理的机率,进一步地提高业务处理的性能。
[0048] 在另一个实施例中,一种业务数据处理方法应用于对第三方支付平台的订单数据进行处理。第三方支付平台通过接收付款请求创建订单数据,在数据库中存储订单。第三方平台的用于存储订单数据的数据库的部署如图1所示,包括多组数据库,每一组数据库包括一台主数据库和两台从数据库,主数据库和从数据库采用半同步模式,在数据写入时,根据各组数据库的历史执行失败次数和第一测试请求执行结果分配数据库进行写入。
[0049] 具体的,如图4所示,该方法包括:
[0050] S402:获取第一业务数据处理请求,第一业务数据处理请求包括数据写入请求,数据写入请求包括第一业务编号。
[0051] 本实施例中的数据写入请求可以为订单数据写入请求,当接收到买家终端发送的支付请求时,根据支付请求生成数据写入请求发送至数据库操作层,数据写入请求包括第一业务编号。第一业务编号即通过买家终端在商家购物产生的订单号。
[0052] S404:根据第一业务数据处理请求,获取任一数据库的标识。
[0053] 标识是数据库的唯一识别标记。一组数据库中的主数据库和各从数据库具有相同的标识。当接收到业务处理请求时,随机选择任一数据库,获取选择的数据库的标识。
[0054] S406:判断记录的标识对应的数据库历史执行失败次数是否超过设定阈值。若否,则执行步骤S408,若是,则返回步骤S404,以获取下一数据库的标识,直至获取的标识对应的数据库的历史执行失败次数小于设定阈值。
[0055] 具体地,设定阈值是通过实际实验得出的最佳值。历史执行失败次数是指记录的一段时间内连接该标识对应的数据库的执行失败次数。例如,可通过计数器,分别对各标识对应的数据库的历史执行失败次数进行记录。而考虑到该标识对应的数据库故障恢复时,业务能够重新启用,可对计数器设置运行周期,例如,一个运行周期为一小时,在该运行周期结束后,将各标识对应的数据库的历史执行失败次数初始化为零,从而确保数据库故障恢复时能够重新启用。
[0056] S408:向标识对应的数据库发送第一测试请求。
[0057] 具体地,向该标识对应的数据库发送update语句进行测试。例如,在需要对该标识对应的数据库进行写入操作时,可发送update语句进行测试,若update语句执行成功,说明该标识对应的数据库可进行写入操作或读取操作。
[0058] S410:检测第一测试请求是否执行成功。若是,则执行步骤S412。若否,则执行步骤S416。
[0059] S412:根据第一业务编号和标识生成第二业务编号。
[0060] 标识对应的数据库为订单数据写入的目标数据库,通过第一业务编号和标识生成第二业务编号,从而第二业务编号保存有分配的数据库的标识。例如,买家终端在商家购物产生的订单号即第一业务编号为201609121215432322199,分配的数据库的标识为2,则对应的第二业务编号为2016091212154323221992。
[0061] 第二业务编号为通过第三方支付平台进行支付的第一业务编号对应的订单在第三方支付平台的标识。
[0062] 步骤S416:更新标识对应的数据库的历史执行失败次数,并在步骤S416之后返回步骤S404,以获取下一数据库的标识。
[0063] 在步骤S412之后执行:
[0064] S414:将数据写入请求发送至标识对应的数据库,数据写入请求携带有第二业务编号,由数据库对第二业务编号进行写入处理。
[0065] 标识对应的数据库对第二业务编号进行处理,插入第二业务编号对应的订单数据。
[0066] 上述的业务数据处理方法,在第三方支付平台的数据写入时,根据数据库的历史执行失败次数和对第一测试的执行情况分配数据库,并根据第一业务编号和数据库的标识生成对应的第二业务编号,在该数据库中对第二业务编号进行写入处理,从而能够提高订单数据写入的成功机率,进一步地提高业务处理的性能。
[0067] 在实际应用中,第三方支付平台还接收买家终端或商家终端对订单数据进行更新,例如,撤销支付,请求退款等。
[0068] 图5为另一个实施例的一种业务数据处理方法的流程图。具体地,如图5所示,该方法包括:
[0069] S502:获取第一业务数据处理请求,第一业务数据处理请求包括数据写入请求,数据写入请求包括第一业务编号。
[0070] 本实施例中的数据写入请求是指订单数据写入请求,当接收到买家终端发送的支付请求时,根据支付请求生成数据写入请求发送至数据库操作层,数据写入请求包括第一业务编号。第一业务编号即通过买家终端在商家购物产生的订单号。
[0071] S504:根据第一业务数据处理请求,获取任一数据库的标识。
[0072] 标识是数据库的唯一识别标记。一组数据库中的主数据库和各从数据库具有相同的标识。当接收到业务处理请求时,随机选择任一数据库,获取选择的数据库的标识。
[0073] S506:判断记录的标识对应的数据库历史执行失败次数是否超过设定阈值。若否,则执行步骤S508,若是,则返回步骤S504,以获取下一数据库的标识,直至获取的标识对应的数据库的历史执行失败次数小于设定阈值。
[0074] 具体地,设定阈值是通过实际实验得出的最佳值。历史执行失败次数是指记录的一段时间内连接该标识对应的数据库的执行失败次数。例如,可通过计数器,分别对各标识对应的数据库的历史执行失败次数进行记录。而考虑到该标识对应的数据库故障恢复时,业务能够重新启用,可对计数器设置运行周期,例如,一个运行周期为一小时,在该运行周期结束后,将各标识对应的数据库的历史执行失败次数初始化为零,从而确保数据库故障恢复时能够重新启用。
[0075] S508:向标识对应的数据库发送第一测试请求。
[0076] 具体地,向该标识对应的数据库发送update语句进行测试。例如,在需要对该标识对应的数据库进行写入操作时,可发送update语句进行测试,若update语句执行成功,说明该标识对应的数据库可进行写入操作或读取操作。
[0077] S510:检测第一测试请求是否执行成功。若是,则执行步骤S512。若否,则执行步骤S513。
[0078] S512:根据第一业务编号和标识生成第二业务编号。
[0079] 标识对应的数据库为订单数据写入的目标数据库,通过第一业务编号和标识生成第二业务编号,从而第二业务编号保存有分配的数据库的标识。例如,买家终端在商家购物产生的订单号即第一业务编号为201609121215432322199,分配的数据库的标识为2,则对应的第二业务编号为2016091212154323221992。
[0080] 第二业务编号为通过第三方支付平台进行支付的第一业务编号对应的订单在第三方支付平台的标识。
[0081] S513:更新标识对应的数据库的历史执行失败次数,并在步骤S513之后返回步骤S504,以获取下一数据库的标识。
[0082] S514:建立第一业务编号与第二业务编号的映射关系。
[0083] 具体地,建立第一业务编号与第二业务编号的映射关系。当接收到业务处理请求携带有在商家购物产生的订单号,即第一业务编号时,根据映射关系可获取其在第三方支付平台对应的订单号。
[0084] S516:将数据写入请求发送至标识对应的数据库,数据写入请求携带有第二业务编号,由数据库对第二业务编号进行写入处理。
[0085] 标识对应的数据库对第二业务编号进行处理,插入第二业务编号对应的订单数据。
[0086] S518:接收第二业务数据处理请求,第二业务数据处理请求携带有第一业务编号或第二业务编号。
[0087] 第二业务数据处理请求包括数据更新请求和数据读取请求。第二业务数据处理请求携带有第一业务编号或第二业务编号。当第二业务数据处理请求由买家或商家通过终端发起时,通常携带的为第一业务编号即购物产生的订单号。当第二业务处理请求由第三方支付平台自身发起时,第二业务数据处理请求携带有第二业务编号,例如,第三方支付平台更新支付状态。
[0088] S520:当第二业务数据处理请求携带有第一业务编号时,根据映射关系查找第一业务编号对应的第二业务编号。
[0089] 应当理解的是,当第二业务数据处理请求携带有第二业务编号时,不执行本步骤。
[0090] S522:识别第二业务编号,得到存储有第二业务编号对应数据的数据库的标识。
[0091] 具体地,通过对第二业务编号进行解析,第二业务编号的结构由第一业务编号和数据库的标识组成,通过预先设置的第二业务编号结构,解析得到存储第二业务编号对应的数据库的标识。例如,识别第二业务编号的最后两位表示数据库的标识。
[0092] S524:将第二业务数据处理请求发送至标识对应的数据库,第二业务数据处理请求携带有第二业务编号,由数据库根据第二业务数据处理请求对第二业务编号对应的数据进行处理。
[0093] 具体地,在识别到存储有第二业务编号对应数据的存储位置后,将第二业务数据处理请求发送至对应的数据库,由该数据库对第二业务数据处理请求进行处理,例如,读取第二业务编号对应的数据,更新第二业务编号对应的数据等。
[0094] 上述的业务数据处理方法,通过建立第一业务编号和第二业务编号的映射关系,在获取到第二业务数据处理请求时,通过第一业务编号根据映射关系查找到对应的第二业务编号,或直接对第二业务编号进行解析得到与存储有第二业务编号对应数据的数据库,能够快速地响应第二业务数据处理请求,实现对第二业务编号对应的数据的读取和更新操作。
[0095] 在实际处理中,由于更新和查询操作是在第二业务数据处理请求对应的数据库进行,在数据库出现故障时,可能会出现第二业务数据处理请求执行失败的情况。为此,在再一个实施例中,提供一种业务数据处理方法,如图6所,包括以下步骤:
[0096] S602:获取第一业务数据处理请求,第一业务数据处理请求包括数据写入请求,数据写入请求包括第一业务编号。
[0097] 本实施例中的数据写入请求是指订单数据写入请求。
[0098] S604:根据第一业务数据处理请求,获取任一数据库的标识。
[0099] S606:判断记录的标识对应的数据库历史执行失败次数是否超过设定阈值。若否,则执行步骤S608,若是,则返回步骤S604,以获取下一数据库的标识,直至获取的标识对应的数据库的历史执行失败次数小于设定阈值。
[0100] 具体地,设定阈值是通过实际实验得出的最佳值。历史执行失败次数是指记录的一段时间内连接该标识对应的数据库执行失败次数。例如,可通过计数器,分别对各标识对应的数据库的历史执行失败次数进行记录。而考虑到该标识对应的数据库故障恢复时,业务能够重新启用,可对计数器设置运行周期,例如,一个运行周期为一小时,在该运行周期结束后,将各标识对应的数据库历史执行失败次数初始化为零,从而确保数据库故障恢复时能够重新启用。
[0101] S608:向标识对应的数据库发送第一测试请求。
[0102] 具体地,向该标识对应的数据库发送update语句进行测试。例如,在需要对该标识对应的数据库进行写入操作时,可发送update语句进行测试,若update语句执行成功,说明该标识对应的数据库可进行写入操作或读取操作。
[0103] S610:检测测试请求是否执行成功。若是,则执行步骤S612。若否,则执行步骤S613。
[0104] S612:根据第一业务编号和标识生成第二业务编号。
[0105] 标识对应的数据库为订单数据写入的目标数据库,通过第一业务编号和标识生成第二业务编号,从而第二业务编号保存有分配的数据库的标识。第二业务编号为通过第三方支付平台进行支付的第一业务编号对应的订单在第三方支付平台的标识。
[0106] S613:更新标识对应的数据库的历史执行失败次数,并在步骤S613之后返回步骤S604,以获取下一数据库的标识。
[0107] S614:建立第一业务编号与第二业务编号的映射关系。
[0108] 具体地,建立第一业务编号与第二业务编号的映射关系。当接收到业务处理请求携带有在商家购物产生的订单号,即第一业务编号时,根据映射关系可获取其在第三方支付平台对应的订单号。
[0109] S616:将数据写入请求发送至标识对应的数据库,数据写入请求携带有第二业务编号,由数据库对第二业务编号进行写入处理。
[0110] 标识对应的数据库对第二业务编号进行处理,插入第二业务编号对应的订单数据。
[0111] S618:将数据写入请求发送至缓存数据库,数据写入请求携带有第二业务编号,由缓存数据库对第二业务编号进行写入处理。
[0112] 即第三方支付平台还设置有缓存数据库,在将订单数据写入数据时的同时,还将订单数据存储至缓存数据库。可以理解的是,本步骤可以在步骤S612之后执行,即可以不限定步骤S618与步骤S614和S616的执行顺序。
[0113] S620:接收第二业务数据处理请求,第二业务数据处理请求携带有第一业务编号或第二业务编号。
[0114] 第二业务数据处理请求包括数据更新请求和数据读取请求。第二业务数据处理请求携带有第一业务编号或第二业务编号。当第二业务数据处理请求由买家或商家通过终端发起时,通常携带的为第一业务编号即购物产生的订单号。当第二业务处理请求由第三方支付平台自身发起时,第二业务数据处理请求携带有第二业务编号,例如,第三方支付平台更新支付状态。
[0115] S622:当第二业务数据处理请求携带有第一业务编号时,根据映射关系查找第一业务编号对应的第二业务编号。
[0116] 应当理解的是,当第二业务数据处理请求携带有第二业务编号时,不执行本步骤。
[0117] S624:识别第二业务编号,得到存储有第二业务编号对应数据的数据库的标识。
[0118] 具体地,通过对第二业务编号进行解析,第二业务编号的结构由第一业务编号和数据库的标识组成,通过预先设置的第二业务编号结构,解析得到存储第二业务编号对应的数据库的标识。例如,识别第二业务编号的最后两位表示数据库的标识。
[0119] S626:将第二业务数据处理请求发送至标识对应的数据库,第二业务数据处理请求携带有第二业务编号,由数据库根据第二业务数据处理请求对第二业务编号对应的数据进行处理。
[0120] 具体地,在识别到存储有第二业务编号对应数据的存储位置后,将第二业务数据处理请求发送至对应的数据库,由该数据库对第二业务数据处理请求进行处理,例如,读取第二业务编号对应的数据,更新第二业务编号对应的数据等。
[0121] S628:当检测到第二业务数据处理请求执行失败时,向缓存数据库发送第二业务数据处理请求,由缓存数据库根据第二业务数据处理请求对第二业务编号对应的数据进行处理。
[0122] 上述的业务数据处理方法,通过设置缓存数据库,在数据写入的同时还将存储在缓存数据库中,通过建立第一业务编号和第二业务编号的映射关系,在获取到第二业务数据处理请求时,通过第一业务编号根据映射关系查找到对应的第二业务编号,或直接对第二业务编号进行解析得到与存储有第二业务编号对应数据的数据库,能够快速地响应第二业务数据处理请求,实现对第二业务编号对应的数据的读取和更新操作,而若检测到第二业务数据处理请求失败,则向缓存数据库发送该请求,从而在对应的数据库发生故障时,仍能实现对数据的查新和更新操作。
[0123] 上述的业务数据处理方法可用于实现对数据的更新。具体的,第二业务处理请求包括数据更新请求,当第二业务数据处理请求包括数据更新请求时,在步骤S628之后,还包括:
[0124] S630:每间隔预设时间向标识对应的数据库发送第二测试请求。
[0125] S632:检测第二测试请求是否执行成功,若是,则执行步骤S634,若否,则返回步骤S630。
[0126] S634:将缓存数据库中更新的第二业务编号对应的数据同步至标识对应的数据库。
[0127] 通过定时向标识对应的数据库发送第二测试请求,在第二测试请求执行成功后,将缓存数据库中的第二业务编号对应的数据同步至标识对应的数据库中,从而实现该标识对应的数据库的数据更新。
[0128] 可以理解的是,在步骤S634之后,或检测第二业务数据处理请求执行成功时,可删除缓存数据库中第二业务编号对应的数据,以释放缓存数据库的存储空间。
[0129] 考虑到所有的写入数据全部写入缓存数据库,将增加第三方支付平台的成本。而订单数据的更新和查询在实际应用中的频率不高。在为插入第二业务编号对应的订单数据成功后,调用支付接口发起支付,并获取业务支付反馈。支付反馈包括第二业务编号和业务支付状态。业务支付状态包括业务支付成功和业务支付失败。业务支付失败的原因可能包括余额不足,网络连接失败等等。第三方支付平台还需更新订单的支付反馈。为了尽可能地更新数据库中业务支付状态,优选地采用上述的业务数据处理方法。
[0130] 具体地,如图7所示,包括以下步骤:
[0131] S1:获取第一业务数据处理请求,第一业务数据处理请求包括数据写入请求,数据写入请求包括第一业务编号。
[0132] S2:根据第一业务数据处理请求,获取任一数据库的标识。
[0133] S3:判断记录的标识对应的数据库历史执行失败次数是否超过设定阈值。若否,则执行步骤S4,若是,则返回步骤S2,以获取下一数据库的标识,直至获取的标识对应的数据库的历史执行失败次数小于设定阈值。
[0134] 而考虑到该标识对应的数据库故障恢复时,业务能够重新启用,可对计数器设置运行周期,例如,一个运行周期为一小时,在该运行周期结束后,将各标识对应的数据库历史执行失败次数初始化为零,从而确保数据库故障恢复时能够重新启用。
[0135] S4:向标识对应的数据库发送第一测试请求。
[0136] 具体地,向该标识对应的数据库发送update语句进行测试。例如,在需要对该标识对应的数据库进行写入操作时,可发送update语句进行测试,若update语句执行成功,说明该标识对应的数据库可进行写入操作或读取操作。
[0137] S5:检测第一测试请求是否执行成功。若是,则执行步骤S6。若否,则返回执行步骤S2。
[0138] S6:根据第一业务编号和标识生成第二业务编号。
[0139] S7:建立第一业务编号与第二业务编号的映射关系。
[0140] S8:将数据写入请求发送至标识对应的数据库,数据写入请求携带有第二业务编号,由数据库对第二业务编号进行写入处理。
[0141] S9:将数据写入请求发送至缓存数据库,数据写入请求携带有第二业务编号,由缓存数据库对第二业务编号进行写入处理。
[0142] S10:接收第二业务数据处理请求,第二业务数据处理请求携带有第二业务编号。第二业务数据处理请求为插入第二业务编号对应的订单数据成功后,调用支付接口发起支付,根据业务支付反馈对第二业务编号对应的订单数据进行支付状态更新。第二业务处理请求还携带有业务反馈状态,业务反馈状态包括业务支付成功和业务支付失败。
[0143] S11:识别第二业务编号,得到存储有第二业务编号对应数据的数据库的标识。
[0144] S12:将第二业务数据处理请求发送至标识对应的数据库,第二业务数据处理请求携带有第二业务编号,由数据库根据第二业务数据处理请求对第二业务编号对应的数据进行处理。
[0145] S13:当检测到第二业务数据处理请求执行失败时,向缓存数据库发送第二业务数据处理请求,由缓存数据库根据第二业务数据处理请求对第二业务编号对应的数据进行处理。即在检测到第二业务处理请求执行失败时,在缓存数据库中更新第二业务编号的支付状态。
[0146] 在检测到第二业务数据处理请求执行成功时,执行步骤S17。
[0147] S14:每间隔预设时间向标识对应的数据库发送第二测试请求。
[0148] S15:检测第二测试请求是否执行成功,若是,则执行步骤S16,若否,则返回步骤S14。
[0149] S16:将缓存数据库中更新的第二业务编号对应的数据同步至标识对应的数据库。
[0150] S17:向缓存数据库发送删除指令,删除指令携带有第二业务编号,由缓存数据库删除第二业务编号对应的数据。
[0151] 即该标识对应的数据库的第二业务编号的支付状态更新成功后,删除第二业务编号在缓存数据库中的订单数据,及时释放存储空间,确保提高数据更新成功机率的同时不提高第三方支付平台的运营成本。
[0152] 图8为一个实施例的一种业务数据处理装置的结构示意图,如图8所示,一种业务数据处理装置包括:请求获取模块801、选择模块802、第一判断模块803、测试发送模块804和处理模块805。
[0153] 请求获取模块801,用于获取第一业务数据处理请求。
[0154] 选择模块802,用于根据第一业务数据处理请求,获取任一的数据库的标识。
[0155] 第一判断模块803,用于判断记录的标识对应的数据库历史执行失败次数是否超过设定阈值。
[0156] 选择模块802,还用于在第一判断模块的判断结果为否时,获取下一数据库的标识。
[0157] 测试发送模块804,用于在第一判断模块的判断结果为是时,向标识对应的数据库发送第一测试请求。
[0158] 处理模块805,用于在检测到第一测试请求执行成功后,将第一业务数据处理请求发送至标识对应的数据库。
[0159] 上述的业务数据处理装置,在获取到第一业务处理请求时,获取任一数据库的标识,在该数据库的历史执行失败次数超过设定阈值时,获取下一数据库的标识,直到获取的标识对应的数据库的历史执行失败次数小于设定阈值,则向该标识对应的数据库发送第一测试请求,在检测到第一测试请求执行成功后,将第一业务数据处理请求发送至该标识对应的数据库。该装置通过根据数据库的历史执行失败次数选择数据库,分配的数据库并非固定的,并且向该数据库发送的测试请求成功之后将第一业务数据处理请求发送该标识对应的数据库,从而能够提高数据成功处理的机率,进一步地提高业务处理的性能。
[0160] 在另一个实施例中,如图9所示,处理模块包括编号生成模块8051和写入模块8052。
[0161] 本实施例中,第一业务数据处理请求包括数据写入请求,数据写入请求包括第一业务编号。
[0162] 编号生成模块8051,用于在检测到第一测试请求执行成功后,根据第一业务编号和标识生成第二业务编号。
[0163] 写入模块8052,用于将数据写入请求发送至标识对应的数据库,数据写入请求携带有第二业务编号,由数据库对第二业务编号进行写入处理。
[0164] 在另一个实施例中,处理模块还包括映射模块8053、查找模块8054和识别模块8055。
[0165] 映射模块8053,用于建立第一业务编号与第二业务编号的映射关系。
[0166] 请求获取模块801,还用于接收第二业务数据处理请求,第二业务数据处理请求携带有第一业务编号或第二业务编号。
[0167] 查找模块8054用于当第二业务数据处理请求携带有第一业务编号时,根据映射关系查找第一业务编号对应的第二业务编号。
[0168] 识别模块8055,用于识别第二业务编号,得到存储有第二业务编号对应数据的数据库的标识。
[0169] 写入模块8052,还用于将第二业务数据处理请求发送至标识对应的数据库,第二业务数据处理请求携带有第二业务编号,由数据库根据第二业务数据处理请求对第二业务编号对应的数据进行处理。
[0170] 在再一个实施例中,写入模块8052,还用于将数据写入请求发送至缓存数据库,数据写入请求携带有第二业务编号,由缓存数据库对第二业务编号进行写入处理,并在当检测到第二业务数据处理请求执行失败时,向缓存数据库发送第二业务数据处理请求,由缓存数据库根据第二业务数据处理请求对第二业务编号对应的数据进行处理。
[0171] 在另一个实施例中,第二业务处理请求包括数据更新请求,测试发送模块804还用于当第二业务数据处理请求包括数据更新请求时,每间隔预设时间向标识对应的数据库发送第二测试请求;处理模块805,还用于当检测到第二测试请求执行成功后,将缓存数据库中更新的第二业务编号对应的数据同步至标识对应的数据库。
[0172] 上述的业务数据处理装置,通过定时向标识对应的数据库发送第二测试请求,在第二测试请求执行成功后,将缓存数据库中的第二业务编号对应的数据同步至标识对应的数据库中,从而实现该标识对应的数据库的数据更新。
[0173] 本发明还提供一种计算机设备,包括:存储器,处理器、内存和网络接口;处理器执行程序时实现以下步骤:
[0174] 获取第一业务数据处理请求;
[0175] 根据第一业务数据处理请求,获取任一的数据库的标识;
[0176] 在记录的标识对应的数据库历史执行失败次数超过设定阈值时,返回根据第一业务数据处理请求,获取任一的数据库的标识的步骤以获取下一数据库的标识,直至获取的标识对应的数据库的历史执行失败次数小于设定阈值;
[0177] 向标识对应的数据库发送第一测试请求;
[0178] 在检测到第一测试请求执行成功后,将第一业务数据处理请求发送至标识对应的数据库。
[0179] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性的计算机可读取存储介质中,如本发明实施例中,该程序可存储于计算机系统的存储介质中,并被该计算机系统中的至少一个处理器执行,以实现包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
[0180] 以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0181] 以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。