掌桥专利:专业的专利平台
掌桥专利
首页

多模式的业务处理方法、装置及设备

文献发布时间:2023-06-19 11:42:32


多模式的业务处理方法、装置及设备

技术领域

本发明涉及计算机技术,尤其涉及一种多模式的业务处理方法、装置及设备。

背景技术

分布式业务系统可以对分布式业务进行处理,分布式业务系统中包括多个子业务系统,分布式业务中包括多个子业务,一个子业务系统通常用于对一个子业务进行处理。

目前,子业务系统可以为用于处理长活事务的SAGA模式或者尝试-确认-取消(Try-Confirm-Cancel,TCC)模式。分布式业务处理系统在处理分布式业务时,需要保证对分布式业务中各个子业务的处理结果一致,即,要么对各个子业务均处理成功,要么对各个子业务均处理失败。在相关技术中,为了保证对分布式业务中各个子业务的处理结果一致,需要将分布式业务系统中的各个子业务系统的模式设置为相同模式,若业务系统中各子业务系统的模式不同,则无法保证对分布式业务中各个子业务的处理结果一致,进而导致业务处理的可靠性较差。

发明内容

本申请实施例提供一种多模式的业务处理方法、装置及设备。提高了而业务处理的可靠性。

第一方面,本申请实施例提供一种多模式的业务处理方法,包括:

获取业务处理请求,所述业务处理请求用于请求对第一业务进行处理,所述第一业务包括至少一个第一子业务和至少一个第二子业务,所述第一子业务和所述第二子业务的模式不同;

分别对每个第一子业务进行预处理,所述预处理用于使得对所述第一子业务进行执行处理的结果为执行成功;

若对所述至少一个第一子业务进行预处理成功,则对所述至少一个第二子业务进行业务处理,得到所述至少一个第二子业务对应的第二执行结果;

根据所述第二执行结果,分别对每个第一子业务进行执行处理或者回退处理,得到每个第一子业务对应到第一执行结果,所述第一执行结果与所述第二执行结果相同。

在一种可能的实施方式中,根据所述第二执行结果,分别对每个第一子业务进行执行处理或者回退处理,得到每个第一子业务对应到第一执行结果,包括:

若所述第二执行结果为执行成功,则分别对每个第一子业务进行执行处理,得到每个第一子业务对应的第一执行结果,每个第一子业务对应的第一执行结果为执行成功;

若所述第二执行结果为执行失败,则分别对每个第一子业务进行回退处理,得到每个第一子业务对应的第一执行结果,每个第一子业务对应的第一执行结果为执行失败。

在一种可能的实施方式中,针对任意一个第一子业务;对所述第一子业务进行回退处理,得到所述第一子业务对应的第一执行结果,包括:

对所述第一子业务的预处理进行回退处理,得到所述第一子业务对应的第一执行结果,进行回退处理后的所述第一子业务的状态与进行所述预处理前的所述第一子业务的状态相同。

在一种可能的实施方式中,若所述第二执行结果为执行失败,所述方法还包括:

在所述至少一个第二子业务中确定已进行业务处理的第二子业务;

对已进行业务处理的第二子业务进行反业务处理。

在一种可能的实施方式中,对所述至少一个第二子业务进行业务,得到所述至少一个第二子业务对应的第二执行结果,包括:

确定所述至少一个第二子业务的执行顺序;

按照所述执行顺序对所述至少一个第二子业务进行业务处理,直至对每个第二子业务均执行成功时,确定所述第二执行结果为执行成功,或者,直至确定对所述至少一个第二子业务中的任意第二子业务执行失败时,确定所述第二执行结果为执行失败。

在一种可能的实施方式中,针对任意一个第二子业务,所述第二子业务在进行所述反业务处理后的状态,与所述第二子业务进行所述业务处理前的状态相同。

在一种可能的实施方式中,针对任意一个第一子业务;对所述第一子业务进行预处理,包括:

在所述业务处理请求中获取所述第一子业务对应的业务参数;

判断所述业务参数是否满足所述第一子业务对应的业务需求;

在确定所述业务参数满足所述第一子业务对应的业务需求时,为所述第一子业务分配业务资源,所述业务资源为对所述第一子业务进行所述执行处理所需的资源。

在一种可能的实施方式中,若对所述至少一个第一子业务中的任意一个第一子业务预处理失败,所述方法还包括:

对已经进行所述预处理的第一子业务进行回退处理;其中,进行回退处理后的所述第一子业务的状态与进行所述预处理前的所述第一子业务的状态相同。

在一种可能的实施方式中,所述第一子业务的模式为尝试-确认-取消TCC模式,所述第二子业务的模式为SAGA模式。

第二方面,本申请实施例提供一种多模式的业务处理装置,包括:获取模块、第一处理模块和第二处理模块,其中,

所述获取模块用于,获取业务处理请求,所述业务处理请求用于请求对第一业务进行处理,所述第一业务包括至少一个第一子业务和至少一个第二子业务,所述第一子业务和所述第二子业务的模式不同;

所述第一处理模块用于,分别对每个第一子业务进行预处理,所述预处理用于使得对所述第一子业务进行执行处理的结果为执行成功;

所述第二处理模块用于,若所述第一处理模块对所述至少一个第一子业务进行预处理成功,则对所述至少一个第二子业务进行业务处理,得到所述至少一个第二子业务对应的第二执行结果;

所述第一处理模块还用于,根据所述第二执行结果,分别对每个第一子业务进行执行处理或者回退处理,得到每个第一子业务对应到第一执行结果,所述第一执行结果与所述第二执行结果相同。

在一种可能的实施方式中,所述第一处理模块具体用于:

若所述第二执行结果为执行成功,则分别对每个第一子业务进行执行处理,得到每个第一子业务对应的第一执行结果,每个第一子业务对应的第一执行结果为执行成功;

若所述第二执行结果为执行失败,则分别对每个第一子业务进行回退处理,得到每个第一子业务对应的第一执行结果,每个第一子业务对应的第一执行结果为执行失败。

在一种可能的实施方式中,针对任意一个第一子业务;所述第一处理模块具体用于:

对所述第一子业务的预处理进行回退处理,得到所述第一子业务对应的第一执行结果,进行回退处理后的所述第一子业务的状态与进行所述预处理前的所述第一子业务的状态相同。

在一种可能的实施方式中,若所述第二执行结果为执行失败,所述第二处理模块还用于:

在所述至少一个第二子业务中确定已进行业务处理的第二子业务;

对已进行业务处理的第二子业务进行反业务处理。

在一种可能的实施方式中,所述第二处理模块具体用于:

确定所述至少一个第二子业务的执行顺序;

按照所述执行顺序对所述至少一个第二子业务进行业务处理,直至对每个第二子业务均执行成功时,确定所述第二执行结果为执行成功,或者,直至确定对所述至少一个第二子业务中的任意第二子业务执行失败时,确定所述第二执行结果为执行失败。

在一种可能的实施方式中,针对任意一个第二子业务,所述第二子业务在进行所述反业务处理后的状态,与所述第二子业务进行所述业务处理前的状态相同。

在一种可能的实施方式中,针对任意一个第一子业务;所述第一处理模块具体用于:

在所述业务处理请求中获取所述第一子业务对应的业务参数;

判断所述业务参数是否满足所述第一子业务对应的业务需求;

在确定所述业务参数满足所述第一子业务对应的业务需求时,为所述第一子业务分配业务资源,所述业务资源为对所述第一子业务进行所述执行处理所需的资源。

在一种可能的实施方式中,所述第一处理模块还用于,若所述第一处理模块对所述至少一个第一子业务中的任意一个第一子业务预处理失败,对已经进行所述预处理的第一子业务进行回退处理;其中,进行回退处理后的所述第一子业务的状态与进行所述预处理前的所述第一子业务的状态相同。

在一种可能的实施方式中,所述第一子业务的模式为尝试-确认-取消TCC模式,所述第二子业务的模式为SAGA模式。

第三方面,本申请实施例提供一种多模式的业务处理设备,包括:处理器和存储器;

所述存储器存储计算机执行指令;

所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执8

行如第一方面任一项所述的多模式的业务处理方法。

第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当所述计算机执行指令被处理器执行时用于实现第一方面任一项所述的多模式的业务处理方法。

第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面任一项所示的多模式的业务处理方法。

本申请实施例提供的多模式的业务处理方法、装置及设备,若分布式业务中包括TCC模式的子业务和SAGA模式的子业务,则可以先对TCC模式的子业务进行预处理,再对TCC模式的子业务预处理成功之后,再处理SAGA模式的子业务。若对SAGA模式的子业务的执行结果为执行成功,则对TCC模式的子业务进行执行处理,由于对TCC模式的子业务已进行了预处理,因此,对TCC模式的子业务的执行处理一定会执行成功,进而保证了业务处理的一致性。若对SAGA模式的子业务的执行结果为执行失败,则对TCC模式的子业务进行回退处理,以将TCC模式的子业务回退至初始状态,因此,对TCC模式的子业务的执行业务也为执行失败,进而保证了业务处理的一致性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的分布式业务系统的架构图;

图2为本申请实施例提供的多模式的业务处理方法的流程示意图;

图3为本申请实施例提供的多模式业务处理方法的流程示意图;

图4为本申请实施例提供的分布式业务的架构图;

图5为本申请实施例提供的一种处理过程的示意图;

图6为本申请实施例提供的一种处理过程的示意图;

图7为本申请实施例提供的一种多模式的业务处理装置的结构示意图;

图8为本申请实施例提供一种多模式的业务处理设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为了便于理解,首先对本申请实施例所涉及的概念进行详细说明。

TCC模式:TCC模式中包括三种处理,分别为预处理、执行处理和回退处理。其中,预处理是指尝试操作(try操作),执行处理是指确认操作(Confirm操作),回退处理是指取消操作(Cancel操作)。下面,分别对TCC模式中的三种处理进行说明。

预处理:预处理通常可以包括检查处理和业务资源的分配处理。检查处理用于检查业务请求是否满足子业务系统对应的业务需求,例如,假设业务请求为请求在账户1中扣除金额1,则检查处理可以包括:判断账户1是否存在,判断用户输入的账户1的密码是否正确,账户1中的当前余额是否大于金额1。业务资源的分配处理用于为子业务系统分配进行执行处理所需的资源,以确保执行处理的结果为执行成功。例如,假设业务请求为请求在账户1中扣除金额1,则业务资源的分配处理可以包括:在账户1中冻结金额1,以确保可以在后续的执行处理中可以成功的在账户1中扣除金额1。

执行处理:执行处理用于完成业务逻辑处理。例如,假设业务请求为请求在账户1中扣除金额1,则执行处理可以实现在账户1中扣除金额1。在TCC模式中,若预处理成功,则执行处理一定成功。

回退处理:用于在预处理或者执行处理失败时,对已经执行的处理进行回退操作(回滚操作),以实现取消已进行的操作,并且释放在预处理阶段分配的业务资源。

SAGA模式:SAGA模式是一种基于补偿交易的分布式事务实现模式,在SAGA模式下,分布式业务中包括若干个子业务,其中每个子业务都对应有业务处理和反业务处理,其中,业务处理还可以成为正向业务处理,反业务处理还可以成为反向的补偿处理。SAGA模式的分布式业务执行时,依次执行对各子业务进行正向的业务处理,若所有子业务的正向的业务处理均执行成功,则分布式业务执行完成。若任何一个子业务的正向的业务处理执行失败,则对已经进行了正向的业务处理的子业务进行反业务处理(反向的补偿处理),以使已经进行正向的业务处理的子业务回到初始状态。

分布式业务的业务一致性:分布式业务中包括多个子业务,业务一致性是指每个子业务的处理结果是相同的,该多个子业务的处理结果要么全部都是执行成功,要么全部都是执行失败。

下面,结合图1,对本申请实施例所涉及的分布式业务系统进行说明。

图1为本申请实施例提供的分布式业务系统的架构图。请参见图1,分布式业务系统包括业务管理器、多个子业务系统。分布式业务中包括多个子业务,一个子业务系统可以用于对一个子业务进行处理。业务管理器用于对子业务系统进行调用以及管理,以保证各子业务系统对各自对应的子业务的处理结果为一致的。一个子业务系统可以部署在一个虚拟机中,不同的虚拟机可以部署在相同的物理设备上,也可以部署在不同的物理设备上。业务管理器可以与子业务系统部署在相同的物理设备上,业务管理器也可以与子业务系统部署在不同的物理设备上。

可选的,若子业务系统为TCC模式,则该子业务系统中可以包括三个接口:进行预处理的接口、进行执行处理的接口以及进行回退处理的接口。相应的,业务管理器可以调用子业务系统的接口,以使子业务系统进行预处理、执行处理或者回退处理。

可选的,若子业务系统为SAGA模式,则该子业务系统中可以包括两个接口:进行业务处理的接口和进行反业务处理的接口。相应的,业务管理器可以调用子业务系统的接口,以使子业务系统进行业务处理或者反业务处理。

在相关技术中,若业务系统中各子业务系统的模式不同,即,分布式业务中包括的子业务的模式不同,则无法保证对分布式业务中各个子业务的处理结果一致,即,无法保证分布式业务的业务一致性,进而导致业务处理的可靠性较差。

为了解决上述技术问题,在本公开实施例中,若分布式业务中包括TCC模式的子业务和SAGA模式的子业务,则可以先对TCC模式的子业务进行预处理,再对TCC模式的子业务预处理成功之后,再处理SAGA模式的子业务。若对SAGA模式的子业务的执行结果为执行成功,则对TCC模式的子业务进行执行处理,由于对TCC模式的子业务已进行了预处理,因此,对TCC模式的子业务的执行处理一定会执行成功,进而保证了业务处理的一致性。若对SAGA模式的子业务的执行结果为执行失败,则对TCC模式的子业务进行回退处理,以将TCC模式的子业务回退至初始状态,因此,对TCC模式的子业务的执行业务也为执行失败,进而保证了业务处理的一致性。

下面,通过具体实施例对本申请所示的技术方案进行详细说明。下面几个实施例可以独立存在,也可以相互结合,对于相同或相似的内容,在不同的实施例中不再重复说明。

图2为本申请实施例提供的多模式的业务处理方法的流程示意图。请参见图2,该方法可以包括:

S201、获取业务处理请求。

本申请实施例的执行主体可以为分布式业务系统,本申请实施例中的部分步骤可以由分布式业务系统中的业务管理器执行,部分步骤可以是业务管理器调用子业务系统执行。

可选的,可以是分布式业务系统中的业务管理器获取业务处理请求。

业务处理请求用于请求对第一业务进行处理,第一业务包括至少一个第一子业务和至少一个第二子业务,第一子业务和第二子业务的模式不同。第一子业务的模式为TCC模式,第二子业务的模式为SAGA模式。

业务处理请求可以为来自于客户端的业务处理请求。例如,业务处理请求可以为请求将账户1中的预定金额转移至账户2,假设该业务处理请求对应第一业务,则第一业务中包括如下两个子业务,子业务1:在账户1中扣除预定金额,子业务2:在账户2中存入预定金额。

S202、分别对每个第一子业务进行预处理。

可选的,在业务管理器获取得到业务处理请求之后,业务管理器可以分别调用对应的子业务系统,以使子业务系统对对应的第一子业务进行处理。

预处理用于使得对第一子业务进行执行处理的结果为执行成功,即,若对第一子业务进行预处理成功,则对第一子业务进行执行处理也一定成功。

预处理可以包括检查处理和业务资源的分配处理,检查处理用于检测业务处理请求中的业务参数是否满足第一子业务对应的业务需求。业务资源的分配处理用于分为对第一子业务进行执行处理时所需的业务资源。若对第一子业务进行检查处理成功、以及分配处理成功,则对第一子业务进行预处理成功。在对第一子业务进行预处理成功之后,第一子业务已满足执行处理成功的必要条件,因此,在对第一子业务进行预处理成功之后,默认对第一子业务进行执行处理也一定成功。

对每一个第一子业务进行预处理的过程相同,下面,以对任意一个第一子业务进行预处理的过程进行说明:在业务处理请求中获取第一子业务对应的业务参数,判断业务参数是否满足第一子业务对应的业务需求(检查处理),在确定业务参数满足第一子业务对应的业务需求时,为第一子业务分配业务资源,业务资源为对第一子业务进行执行处理所需的资源(业务资源的分配处理)。

例如,假设第一子业务为:在账户1中扣除预设金额,则业务请求中可以包括账户1、账户1的密码、预设金额,则检查处理可以包括:检查账户1是否存在,检查账户1的密码是否正确,以及检查账户1中的金额是否大于或等于预设金额。业务资源的分配处理可以包括:在账户1中冻结预设金额。

可选的,可以并行对至少一个第一子业务进行预处理,也可以顺序对至少一个第一子业务进行预处理。例如,可以获取至少一个第一子业务的处理顺序,按照该处理顺序对该至少一个第一子业务进行预处理。

S203、若对至少一个第一子业务进行预处理成功,则对至少一个第二子业务进行业务处理,得到至少一个第二子业务对应的第二执行结果。

可以由业务管理器判断是否对第一子业务进行预处理成功。在业务管理器确定对至少一个第一子业务进行预处理成之后,可以有业务管理器调用对应的子业务系统,以使子业务系统对对应的第二子业务进行业务处理。

若对每一个第一子业务均预处理成功,则再对至少一个第二子业务进行业务处理。

可以通过如下方式对至少一个第二子业务进行业务处理,得到至少一个第二子业务对应的第二执行结果:确定至少一个第二子业务的执行顺序,并按照执行顺序对至少一个第二子业务进行业务处理,直至对每个第二子业务均执行成功时,确定第二执行结果为执行成功,或者,直至确定对至少一个第二子业务中的任意第二子业务执行失败时,确定第二执行结果为执行失败。

例如,假设至少一个第二子业务包括子业务1、子业务2、子业务3和子业务4,并且该4个子业务的执行顺序为:子业务1、子业务2、子业务3和子业务4,可以依次对该4个子业务进行业务处理。假设对该4个子业务均进行业务处理成功,则该4个子业务对应的第二执行结果为执行成功。假设对子业务1和子业务2进行业务处理成功,对子业务3进行业务处理失败,则不再继续对子业务4进行业务处理,并确定第二执行结果为执行失败。在确定对第二执行结果执行失败之后,可以对子业务1和子业务2进行反业务处理,以使子业务1和子业务2回退至初始状态(进行业务处理之前的状态),若对子业务3也进行了部分业务处理,则对业务3中已进行的部分业务处理也进行回退处理。

针对任意一个第二子业务,第二子业务在进行反业务处理后的状态,与第二子业务进行业务处理前的状态相同。

S204、根据第二执行结果,分别对每个第一子业务进行执行处理或者回退处理,得到每个第一子业务对应到第一执行结果。

其中,第一执行结果与第二执行结果相同。第一执行结果和第二执行结果均为执行成功,或者,第一执行结果和第二执行结果均为执行失败。

若第二执行结果为执行成功,则分别对每个第一子业务进行执行处理,得到每个第一子业务对应的第一执行结果,每个第一子业务对应的第一执行结果为执行成功。在该种情况下,第一执行结果和第二执行结果均为执行成功。

若第二执行结果为执行失败,则分别对每个第一子业务进行回退处理,得到每个第一子业务对应的第一执行结果,每个第一子业务对应的第一执行结果为执行失败。在该种情况下,第一执行结果和第二执行结果均为执行失败。

可以通过如下方式对第一子业务进行回退处理:对第一子业务的预处理进行回退处理,得到第一子业务对应的第一执行结果,进行回退处理后的第一子业务的状态与进行预处理前的第一子业务的状态相同。

在图2所示的实施例中,若分布式业务中包括TCC模式的子业务和SAGA模式的子业务,则可以先对TCC模式的子业务进行预处理,再对TCC模式的子业务预处理成功之后,再处理SAGA模式的子业务。若对SAGA模式的子业务的执行结果为执行成功,则对TCC模式的子业务进行执行处理,由于对TCC模式的子业务已进行了预处理,因此,对TCC模式的子业务的执行处理一定会执行成功,进而保证了业务处理的一致性。若对SAGA模式的子业务的执行结果为执行失败,则对TCC模式的子业务进行回退处理,以将TCC模式的子业务回退至初始状态,因此,对TCC模式的子业务的执行业务也为执行失败,进而保证了业务处理的一致性。

在上述任意一个实施例的基础上,下面,结合图3所示的实施例,对上述多模式业务处理的过程进行详细说明。

图3为本申请实施例提供的多模式业务处理方法的流程示意图。请参见图3,该方法可以包括:

S301、获取业务处理请求。

S302、分别对每个第一子业务进行预处理。

需要说明的是,S301-S302的执行过程可以参见S201-S202的执行过程,此处不再进行赘述。

S303、判断是否对每个第一子业务均预处理成功。

若是,则执行S305。

若否,则执行S304。

S304、对已进行预处理的第一子业务进行回退处理。

在对已进行预处理的第一子业务进行回退处理之后,不再继续对第二子业务进行业务处理,在该种情况下,对第一子业务的执行结果和对第二子业务的执行结果均为执行失败。

S305、对至少一个第二子业务进行业务处理,得到至少一个第二子业务对应的第二执行结果。

S306、判断至少一个第二子业务对应的第二执行结果是否为执行成功。

若是,则执行S307。

若否,则执行S308。

若对至少一个第二子业务中的每个第二子业务均执行成功,则确定第二执行结果为执行成功。若对至少一个第二子业务中的任意一个第二子业务执行失败,则确定第二执行结果为执行失败。

需要说明的是,S306的执行过程可以参见S203的执行过程,此处不再进行赘述。

S307、分别对每个第一子业务进行执行处理,得到每个第一子业务对应的第一执行结果。

若对每个第二子业务均执行成功,则对每个第一子业务进行执行处理,由于已经对第一子业务进行了预处理,因此,对第一子业务进行执行处理的第一执行结果为执行成功。即,第一子业务和第二子业务的执行结果均为执行成功,保证了对第一子业务和第二子业务的执行结果的一致性。

S308、在至少一个第二子业务中确定已进行业务处理的第二子业务。

已进行业务处理的第二子业务包括:已经完成业务处理并且执行结果为执行成功的第二子业务、以及已经完成部分业务处理并且执行结果为执行失败的第二子业务。

S309、对已进行业务处理的第二子业务进行反业务处理。

反业务处理是指对第二子业务已执行的处理进行撤销。对第二子业务进行反业务处理,可以使得第二子业务的状态回退至初始状态,初始状态为进行业务处理之前的状态。

例如,假设第二子业务进行的业务处理为:在账户1中存入预定金额,则对第二子业务进行反业务处理为:在账户1中扣除预定金额。

S310、分别对每个第一子业务进行回退处理,得到每个第一子业务对应的第一执行结果。

若对第二子业务处理失败,则分别对每个第一子业务进行回退处理,以使每个第一子业务的状态回退至初始状态。由于仅对第一子业务进行了预处理,因此,对第一子业务进行回退处理是指对第一子业务的预处理进行回退处理,即,撤销对第一子业务的预处理。

例如,对第一子业务进行的预处理包括:冻结账户1中的预定金额,则对第一子业务进行回退处理是指取消冻结账户1的预定金额。

在对第二子业务处理失败时,对第一子业务也进行了回退处理,使得第一子业务对应的第一执行结果业务执行失败。即,对第一子业务的执行结果和对第二子业务的执行结果均为执行失败,保证了对第一子业务和第二子业务的执行结果的一致性。

在图3所示的实施例中,若分布式业务中包括TCC模式的子业务和SAGA模式的子业务,则可以先对TCC模式的子业务进行预处理,再对TCC模式的子业务预处理成功之后,再处理SAGA模式的子业务。若对SAGA模式的子业务的执行结果为执行成功,则对TCC模式的子业务进行执行处理,由于对TCC模式的子业务已进行了预处理,因此,对TCC模式的子业务的执行处理一定会执行成功,进而保证了业务处理的一致性。若对SAGA模式的子业务的执行结果为执行失败,则对TCC模式的子业务进行回退处理,以将TCC模式的子业务回退至初始状态,因此,对TCC模式的子业务的执行业务也为执行失败,进而保证了业务处理的一致性。

在上述任意一个实施例的基础上,下面,结合图4-图6,通过具体示例,对上述多模式的业务处理方法进行说明。

图4为本申请实施例提供的分布式业务的架构图。请参见图4,假设分布式业务为用户通过账户1在第三方平台上购买理财产品,则分布式业务中包括5个子业务,该5个子业务分别为:在账户1扣除预定金额(子业务1)、将预定金额存入第三方账户(子业务2)、执行交易过程(子业务3)、在第三方账户扣除预定金额(子业务4)、在账户2存入预定金额(子业务5)。其中,子业务1、子业务2和子业务3分别为TCC模式,子业务4和子业务5为SAGA模式。

下面,结合图5-图6,对图4所示的分布式业务的处理过程进行说明。

图5为本申请实施例提供的一种处理过程的示意图。请参见图5,在对分布式业务进行处理时,先分别对子业务1、子业务2和子业务3进行预处理。假设对子业务1、子业务2和子业务3均预处理成功,则对子业务4和子业务5进行业务处理。若对子业务4和子业务5进行业务处理均成功,即,子业务4和子业务5对应的执行结果均为执行成功,则对子业务1、子业务2和子业务3分别进行执行处理,由于子业务1-子业务3已进行了预处理,因此,子业务1-子业务3进行执行处理的执行结果一定为执行成功。即,子业务1-子业务5的执行结果均为执行成功,保证了业务执行的一致性。

图6为本申请实施例提供的一种处理过程的示意图。请参见图6,在对分布式业务进行处理时,先分别对子业务1、子业务2和子业务3进行预处理。假设对子业务1、子业务2和子业务3均预处理成功,则对子业务4和子业务5进行业务处理。假设对子业务4进行业务处理成功,对子业务5进行业务处理失败,则继续对子业务4进行反业务处理,以使子业务4和子业务5的执行结果均为执行失败。在对子业务4和子业务5均执行失败之后,对子业务1-子业务3分别进行回退处理,以使对子业务1-子业务3的执行结果均为执行失败。即,子业务1-子业务5的执行结果均为执行成功,保证了业务执行的一致性。

图7为本申请实施例提供的一种多模式的业务处理装置的结构示意图。请参见图7,该多模式的业务处理装置10可以包括:获取模块11、第一处理模块12和第二处理模块13,其中,

所述获取模块11用于,获取业务处理请求,所述业务处理请求用于请求对第一业务进行处理,所述第一业务包括至少一个第一子业务和至少一个第二子业务,所述第一子业务和所述第二子业务的模式不同;

所述第一处理模块12用于,分别对每个第一子业务进行预处理,所述预处理用于使得对所述第一子业务进行执行处理的结果为执行成功;

所述第二处理模块13用于,若所述第一处理模块对所述至少一个第一子业务进行预处理成功,则对所述至少一个第二子业务进行业务处理,得到所述至少一个第二子业务对应的第二执行结果;

所述第一处理模块12还用于,根据所述第二执行结果,分别对每个第一子业务进行执行处理或者回退处理,得到每个第一子业务对应到第一执行结果,所述第一执行结果与所述第二执行结果相同。

本申请实施例提供的多模式的业务处理装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。

在一种可能的实施方式中,所述第一处理模块12具体用于:

若所述第二执行结果为执行成功,则分别对每个第一子业务进行执行处理,得到每个第一子业务对应的第一执行结果,每个第一子业务对应的第一执行结果为执行成功;

若所述第二执行结果为执行失败,则分别对每个第一子业务进行回退处理,得到每个第一子业务对应的第一执行结果,每个第一子业务对应的第一执行结果为执行失败。

在一种可能的实施方式中,针对任意一个第一子业务;所述第一处理模块12具体用于:

对所述第一子业务的预处理进行回退处理,得到所述第一子业务对应的第一执行结果,进行回退处理后的所述第一子业务的状态与进行所述预处理前的所述第一子业务的状态相同。

在一种可能的实施方式中,若所述第二执行结果为执行失败,所述第二处理模块12还用于:

在所述至少一个第二子业务中确定已进行业务处理的第二子业务;

对已进行业务处理的第二子业务进行反业务处理。

在一种可能的实施方式中,所述第二处理模块12具体用于:

确定所述至少一个第二子业务的执行顺序;

按照所述执行顺序对所述至少一个第二子业务进行业务处理,直至对每个第二子业务均执行成功时,确定所述第二执行结果为执行成功,或者,直至确定对所述至少一个第二子业务中的任意第二子业务执行失败时,确定所述第二执行结果为执行失败。

在一种可能的实施方式中,针对任意一个第二子业务,所述第二子业务在进行所述反业务处理后的状态,与所述第二子业务进行所述业务处理前的状态相同。

在一种可能的实施方式中,针对任意一个第一子业务;所述第一处理模块12具体用于:

在所述业务处理请求中获取所述第一子业务对应的业务参数;

判断所述业务参数是否满足所述第一子业务对应的业务需求;

在确定所述业务参数满足所述第一子业务对应的业务需求时,为所述第一子业务分配业务资源,所述业务资源为对所述第一子业务进行所述执行处理所需的资源。

在一种可能的实施方式中,所述第一处理模块12还用于,若所述第一处理模块12对所述至少一个第一子业务中的任意一个第一子业务预处理失败,对已经进行所述预处理的第一子业务进行回退处理;其中,进行回退处理后的所述第一子业务的状态与进行所述预处理前的所述第一子业务的状态相同。

在一种可能的实施方式中,所述第一子业务的模式为尝试-确认-取消TCC模式,所述第二子业务的模式为SAGA模式。

本申请实施例提供的多模式的业务处理装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。

图8为本申请实施例提供一种多模式的业务处理设备的结构示意图。请参见图8,该多模式的业务处理设备20可以包括处理器21和存储器22。示例性地,处理器21、存储器22,各部分之间通过总线23相互连接。

所述存储器21存储计算机执行指令;

所述处理器21执行所述存储器22存储的计算机执行指令,使得所述处理器21执行如第一方面任一项所述的多模式的业务处理方法。

图8实施例所示的多模式的业务处理设备可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。

本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当所述计算机执行指令被处理器执行时用于实现上述多模式的业务处理方法。

本申请实施例还可提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,可实现上述多模式的业务处理方法。

实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一可读取存储器中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储器(存储介质)包括:只读存储器(英文:read-only memory,缩写:ROM)、RAM、快闪存储器、硬盘、固态硬盘、磁带(英文:magnetic tape)、软盘(英文:floppydisk)、光盘(英文:optical disc)及其任意组合。

本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理单元以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理单元执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

在本申请中,术语“包括”及其变形可以指非限制性的包括;术语“或”及其变形可以指“和/或”。本本申请中术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。本申请中,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

相关技术
  • 多模式的业务处理方法、装置及设备
  • 基于区块链的业务处理方法、业务处理方法、装置及设备
技术分类

06120113022031