一种分布式事务的控制方法及事务管理器与流程

文档序号:11323333阅读:241来源:国知局
一种分布式事务的控制方法及事务管理器与流程

本发明涉及分布式领域,尤指一种分布式事务的控制方法及事务管理器。



背景技术:

近年来,随着互联网行业的飞速发展,许多信息技术公司的架构从以往的集中式架构,纷纷转向至分布式架构,分布式架构无疑带来了数据库的拆分和应用的拆分,而数据库的拆分和应用的拆分导致了各分布式节点间事务控制的复杂化,因此如何在跨数据库、跨应用的分布式场景中保证数据操作和业务操作的一致性、原子性,是处理分布式事务的基本问题。

目前,分布式事务的处理通常是应用两阶段提交协议(two-phasecommit,2pc)方法,该方法由主业务提交事务请求到事务协调器(transactioncoordinator,tc)中,然后由tc来确认各个从业务是否都执行完毕,待全部从业务都执行成功后,将整个事务提交完成。

但是,2pc方法中各个从业务是同步执行的,因此无法应对高并发的事务请求。



技术实现要素:

为了解决上述技术问题,本发明提供了一种分布式事务的控制方法及事务控制器,能够更好地实现对高并发的事务请求的应对。

为了达到本发明目的,本发明提供了一种分布式事务的控制方法,包括:

解析待处理分布式事务,获取所述待处理分布式事务中包含的主业务、从业务以及所述从业务之间的调用关系;

根据所述从业务之间的调用关系设置每个从业务的优先级;

当执行所述主业务时,根据所述优先级从高到低依次执行所述从业务。

所述根据优先级从高到低依次执行所述从业务,包括:

在所述从业务的执行过程中,若当前从业务执行失败,根据执行情况日志判断所述当前从业务是否具备再次执行的条件;其中,所述执行情况日志存储有所述从业务的历史执行情况;

若具备再次执行的条件,再次执行所述当前从业务;

若所述当前从业务再次执行成功,继续执行下一级优先级的从业务,直到所有从业务都执行成功,或直到其中一个从业务执行失败并且不具备再次执行的条件,或直到其中一个从业务执行失败且具备再次执行的条件但再次执行失败。

所述根据执行情况日志判断所述当前从业务是否具备再次执行的条件,包括:

在所述执行情况日志中查找所述当前从业务的历史执行情况;

若所述当前从业务的历史执行情况显示是成功时,确定所述当前从业务具备再次执行的条件;

若所述当前从业务的历史执行情况显示是失败时,确定所述当前从业务不具备再次执行的条件。

所述所有从业务都执行成功的情况,包括:

所有所述从业务在初次执行时成功;或者,

所有所述从业务中的一部分从业务在初次执行时成功,所有所述从业务中的剩余部分从业务在初次执行时失败,但根据所述执行情况日志判断得出所述剩余部分从业务具备再次执行的条件并且再次执行成功;或者,

所有所述从业务在初次执行时失败,但根据所述执行情况日志判断得出所有所述从业务具备再次执行的条件并且再次执行成功。

所述所有从业务都执行成功之后,所述方法还包括:

返回执行成功状态给所述主业务;

所述其中一个从业务执行失败并且不具备再次执行的条件之后,所述方法包括:

按照优先级从低到高的顺序回滚已经执行成功的所述从业务,并返回执行失败状态给所述主业务;

所述其中一个从业务执行失败且具备再次执行的条件但再次执行失败之后,所述方法还包括:

按照优先级从低到高的顺序回滚已经执行成功的所述从业务,并返回执行失败状态给所述主业务。

所述返回执行成功状态给所述主业务之后,所述方法还包括:

将所有所述从业务的执行成功状态更新到所述执行情况日志中;

所述返回执行失败状态给所述主业务之后,所述方法还包括:

将已经执行成功的所述从业务的执行成功状态更新到所述执行情况日志中,将执行失败的所述从业务的执行失败状态更新到所述执行情况日志中。

本发明还提供一种事务管理器,包括:

解析模块,用于解析待处理分布式事务,获取所述分布式待处理事务中包含的主业务、从业务以及所述从业务之间的调用关系;

设置模块,用于根据所述从业务之间的调用关系设置每个从业务的优先级;

执行模块,用于当执行所述主业务时,根据所述优先级从高到低依次执行所述从业务。

所述执行模块包括:

判断单元,用于在所述从业务的执行过程中,若当前从业务执行失败,根据执行情况日志判断所述当前从业务是否具备再次执行的条件;其中,所述执行情况日志存储有所述从业务的历史执行情况;

第一执行单元,用于若具备再次执行的条件,再次执行所述当前从业务;

第二执行单元,用于若所述当前从业务再次执行成功,继续执行下一级优先级的从业务,直到所有从业务都执行成功,或直到其中一个从业务不具备再次执行的条件,或直到其中一个从业务执行失败且具备再次执行的条件但再次执行失败。

所述判断单元具体用于:

在所述执行情况日志中查找所述当前从业务的历史执行情况;

若所述当前从业务的历史执行情况显示是成功时,确定所述当前从业务具备再次执行的条件;

若所述当前从业务的历史执行情况显示是失败时,确定所述当前从业务不具备再次执行的条件。

所述事务管理器还包括:

第一处理模块,返回执行成功状态给所述主业务;

第二处理模块,用于按照优先级从低到高的顺序回滚已经执行成功的所述从业务,并返回执行失败状态给所述主业务。

与现有技术相比,本发明包括至少包括解析待处理事务,获取待处理事务中包含的主业务、从业务以及从业务之间的调用关系;根据从业务之间的调用关系设置每个从业务的优先级;当执行主业务时,根据优先级从高到低依次执行从业务。从本发明提供的技术方案可见,由于各个从业务存在处理的先后顺序,因此更好地实现了对高并发的事务请求的应对。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本发明实施例提供的一种分布式事务的控制方法的流程示意图;

图2为本发明实施例提供的另一种分布式事务的控制方法的流程示意图;

图3为本发明实施例提供的又一种分布式事务的控制方法的流程示意图;

图4为本发明实施例提供的又一种分布式事务的控制方法的流程示意图;

图5为本发明实施例提供的又一种分布式事务的控制方法的流程示意图;

图6为本发明实施例提供的又一种分布式事务的控制方法的流程示意图;

图7为本发明实施例提供的又一种分布式事务的控制方法的流程示意图;

图8为本发明实施例提供的又一种分布式事务的控制方法的流程示意图;

图9为本发明实施例提供的又一种分布式事务的控制方法的流程示意图;

图10为本发明实施例提供的一种事务管理器的结构示意图;

图11为本发明实施例提供的另一种事务管理器的结构示意图;

图12为本发明实施例提供的又一种事务管理器的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

本发明实施例提供一种分布式事务的控制方法,如图1所示,该方法包括:

步骤101、解析待处理分布式事务,获取待处理分布式事务中包含的主业务、从业务以及从业务之间的调用关系。

需要说明的是,一项分布式事务包括主业务、若干个从业务以及从业务之间的调用关系。主业务在分布式场景中调用从业务,从业务在分布式场景中被主业务调用,在实际应用当中,主业务相当于一项分布式事务的“发起者”,而从业务相当于一项分布式事务的“执行者”。

步骤102、根据从业务之间的调用关系设置每个从业务的优先级。

具体的,根据从业务之间的调用设置每个从业务的优先级指的是根据所有从业务的调用顺序设置每个从业务的优先级。举例来说,假设一项事务包含有四个从业务,分别是从业务a、从业务b、从业务c和从业务d,假设主业务直接调用从业务b,从业务b调用从业务c,从业务c调用从业务a,从业务a调用从业务d,那么从业务b的优先级是最高优先级,从业务c的优先级是次高优先级,从业务a的优先级是次低优先级,从业务d的优先级是最低优先级。

步骤103、当执行主业务时,根据优先级从高到低依次执行从业务。

具体的,当执行主业务时,说明开始调用从业务,而从业务的调用时根据优先级从高到低的次序执行的,即首先开始执行最高优先级的从业务,然后执行次高优先级的从业务……最后执行最低优先级的从业务。举例来说,假设一项事务包含从业务a、从业务b、从业务c和从业务d四个从业务,从业务b的优先级是最高优先级,从业务c的优先级是次高优先级,从业务a的优先级是次低优先级,从业务d的优先级是最低优先级,那么先执行从业务b,然后执行从业务c,再执行从业务a,最后执行从业务d。

本发明实施例提供的分布式事务的控制方法,解析待处理事务,获取待处理事务中包含的主业务、从业务以及从业务之间的调用关系;根据从业务之间的调用关系设置每个从业务的优先级;当执行主业务时,根据优先级从高到低依次执行从业务。这样,由于各个从业务存在处理的先后顺序,因此更好地实现了对高并发的事务请求的应对。

本发明实施例提供另一种分布式事务的控制方法,如图2所示,该方法包括:

步骤201、解析待处理分布式事务,获取待处理分布式事务中包含的主业务、从业务以及从业务之间的调用关系。

步骤202、根据从业务之间的调用关系设置每个从业务的优先级。

步骤203、当执行主业务时,根据优先级从高到低依次执行从业务。

步骤204、在从业务的执行过程中,若当前从业务执行失败,根据执行情况日志判断当前从业务是否具备再次执行的条件。

其中,执行情况日志存储有从业务的历史执行情况。

需要说明的是,当前从业务可能是所有从业务中的任意一个,正在执行的从业务就是当前从业务。

具体的,假设一项事务包含从业务a、从业务b、从业务c和从业务d四个从业务,确定的从业务执行顺序是从业务b、从业务a、从业务c、从业务d,那么当执行从业务b时,从业务b就是当前从业务,当执行从业务c时,从业务c就是当前从业务。

具体的,从业务的历史执行情况是从业务在上一次被执行过的状态,即执行成功状态或执行失败状态。

步骤205、若具备再次执行的条件,再次执行当前从业务。

具体的,若具备再次执行的条件,说明当前从业务可能是由于异常情况而导致的初次执行失败,因此重新执行。

步骤206、若当前从业务再次执行成功,继续执行下一级优先级的从业务,直到所有从业务都执行成功,或直到其中一个从业务执行失败并且不具备再次执行的条件,或直到其中一个从业务执行失败且具备再次执行的条件但再次执行失败。

需要说明的是,该步骤说明执行停止的情况包含以下三种:

情况一:所有从业务都执行成功。

情况二:其中一个从业务执行失败并且不具备再次执行的条件。

情况三:其中一个从业务执行失败且具备再次执行的条件但再次执行失败。

满足以上三种情况中的任意一种,执行停止。其中,情况二和情况三中的其中一个是所有从业务中的任意一个从业务。

具体的,举例来说,假设一项事务包含从业务a、从业务b、从业务c和从业务d四个从业务,确定的从业务执行顺序是从业务b、从业务a、从业务c、从业务d,假设当前从业务是从业务a,若当前从业务再次执行成功,则继续执行从业务c,直到从业务b、从业务a、从业务c和从业务d都执行成功,或者从业务c执行失败并且不具备再次执行的条件,或者从业务d执行失败并且不具备再次执行的条件,或者从业务c执行失败并且具备再次执行的条件但再次执行失败,或者从业务d执行失败并且具备再次执行的条件但再次执行失败。

本发明实施例提供的分布式事务的控制方法,解析待处理事务,获取待处理事务中包含的主业务、从业务以及从业务之间的调用关系;根据从业务之间的调用关系设置每个从业务的优先级;当执行主业务时,根据优先级从高到低依次执行从业务;在从业务的执行过程中,若当前从业务执行失败,根据执行情况日志判断当前从业务是否具备再次执行的条件;若具备再次执行的条件,再次执行当前从业务;若当前从业务再次执行成功,继续执行下一级优先级的从业务,直到所有从业务都执行成功,或直到其中一个从业务执行失败并且不具备再次执行的条件,或直到其中一个从业务执行失败且具备再次执行的条件但再次执行失败。这样,由于各个从业务存在处理的先后顺序,因此更好地实现了对高并发的事务请求的应对,并且,由于给予了某些从业务再次执行的机会,很大程度地避免了从业务因为偶然异常导致的所有从业务回滚的情况,提高了事务的处理效率。

本发明实施例提供又一种分布式事务的控制方法,如图3所示,该方法包括:

步骤301、解析待处理分布式事务,获取待处理分布式事务中包含的主业务、从业务以及从业务之间的调用关系。

步骤302、根据从业务之间的调用关系设置每个从业务的优先级。

步骤303、当执行主业务时,根据优先级从高到低依次执行从业务。

步骤304、在从业务的执行过程中,若当前从业务执行成功,继续执行下一级优先级的从业务,直到所有从业务都执行成功,返回执行成功状态给主业务。

步骤305、将所有从业务的执行成功状态更新到执行情况日志中。

本发明实施例提供的分布式事务的控制方法,由于各个从业务存在处理的先后顺序,因此更好地实现了对高并发的事务请求的应对。

本发明实施例提供又一种分布式事务的控制方法,如图4所示,该方法包括:

步骤401、解析待处理分布式事务,获取待处理分布式事务中包含的主业务、从业务以及从业务之间的调用关系。

步骤402、根据从业务之间的调用关系设置每个从业务的优先级。

步骤403、当执行主业务时,根据优先级从高到低依次执行从业务。

步骤404、在从业务的执行过程中,若当前从业务执行成功,继续执行下一级优先级的从业务,直到其中一个从业务执行失败并且不具备再次执行的条件,按照优先级从低到高的顺序回滚已经执行成功的从业务,并返回执行失败状态给主业务。

步骤405、将已经执行成功的从业务的执行成功状态更新到执行情况日志中,将执行失败的从业务的执行失败状态更新到执行情况日志中。

本发明提供的分布式事务的控制方法,由于各个从业务存在处理的先后顺序,因此更好地实现了对高并发的事务请求的应对,并且,由于执行到其中一个从业务执行失败并且不具备再次执行的条件就停止执行,从而节省了资源。

本发明实施例提供又一种分布式事务的控制方法,如图5所示,该方法包括:

步骤501、解析待处理分布式事务,获取待处理分布式事务中包含的主业务、从业务以及从业务之间的调用关系。

步骤502、根据从业务之间的调用关系设置每个从业务的优先级。

步骤503、当执行主业务时,根据优先级从高到低依次执行从业务。

步骤504、在从业务的执行过程中,若当前从业务执行成功,继续执行下一级优先级的从业务,直到其中一个从业务执行失败且具备再次执行的条件但再次执行失败,按照优先级从低到高的顺序回滚已经执行成功的从业务,并返回执行失败状态给主业务。

步骤505、将已经执行成功的从业务的执行成功状态更新到执行情况日志中,将执行失败的从业务的执行失败状态更新到执行情况日志中。

本发明提供的分布式事务的控制方法,由于各个从业务存在处理的先后顺序,因此更好地实现了对高并发的事务请求的应对,并且,由于执行到其中一个从业务执行失败且具备再次执行的条件但再次执行失败就会停止执行,从而节省了资源。

本发明实施例提供又一种分布式事务的控制方法,如图6所示,该方法包括:

步骤601、解析待处理分布式事务,获取待处理分布式事务中包含的主业务、从业务以及从业务之间的调用关系。

步骤602、根据从业务之间的调用关系设置每个从业务的优先级。

步骤603、当执行主业务时,根据优先级从高到低依次执行从业务。

步骤604、在从业务的执行过程中,若当前从业务执行失败,在执行情况日志中查找当前从业务的历史执行情况。

步骤605、若当前从业务的历史执行情况显示是失败时,确定当前从业务不具备再次执行的条件。

步骤606、按照优先级从低到高的顺序回滚已经执行成功的从业务,并返回执行失败状态给主业务。

步骤607、将已经执行成功的从业务的执行成功状态更新到执行情况日志中,将执行失败的从业务的执行失败状态更新到执行情况日志中。

本发明实施例提供的分布式事务的控制方法,由于各个从业务存在处理的先后顺序,因此更好地实现了对高并发的事务请求的应对。

本发明实施例提供又一种分布式事务的控制方法,如图7所示,该方法包括:

步骤701、解析待处理分布式事务,获取待处理分布式事务中包含的主业务、从业务以及从业务之间的调用关系。

步骤702、根据从业务之间的调用关系设置每个从业务的优先级。

步骤703、当执行主业务时,根据优先级从高到低依次执行的从业务。

步骤704、在从业务的执行过程中,若当前从业务执行失败,在执行情况日志中查找当前从业务的历史执行情况。

步骤705、若当前从业务的历史执行情况显示是成功时,确定当前从业务具备再次执行的条件,再次执行当前从业务。

步骤706、若当前从业务再次执行成功,继续执行下一级优先级的从业务,直到所有从业务都执行成功,返回执行成功状态给主业务。

步骤707、将所有从业务的执行成功状态更新到执行情况日志中。

本发明提供的分布式事务的控制方法,由于各个从业务存在处理的先后顺序,因此更好地实现了对高并发的事务请求的应对,并且,由于给予了某些从业务再次执行的机会,很大程度地避免了从业务因为偶然异常导致的所有从业务回滚的情况,提高了事务的处理效率。

本发明实施例提供又一种分布式事务的控制方法,如图8所示,该方法包括:

步骤801、解析待处理分布式事务,获取待处理分布式事务中包含的主业务、从业务以及从业务之间的调用关系。

步骤802、根据从业务之间的调用关系设置每个从业务的优先级。

步骤803、当执行主业务时,根据优先级从高到低依次执行从业务。

步骤804、在从业务的执行过程中,若当前从业务执行失败,在执行情况日志中查找当前从业务的历史执行情况。

步骤805、若当前从业务的历史执行情况显示是成功时,确定当前从业务具备再次执行的条件,再次执行当前从业务。

步骤806、若当前从业务再次执行成功,继续执行下一级优先级的从业务,直到其中一个从业务执行失败并且不具备再次执行的条件,按照优先级从低到高的顺序回滚已经执行成功的从业务,并返回执行失败状态给主业务。

步骤807、将已经执行成功的从业务的执行成功状态更新到执行情况日志中,将执行失败的从业务的执行失败状态更新到执行情况日志中。

本发明提供的分布式事务的控制方法,由于各个从业务存在处理的先后顺序,因此更好地实现了对高并发的事务请求的应对,并且,由于给予了某些从业务再次执行的机会,很大程度地避免了从业务因为偶然异常导致的所有从业务回滚的情况,提高了事务的处理效率,并且,由于执行到其中一个从业务执行失败并且不具备再次执行的条件就会停止执行,从而节省了资源。

本发明实施例提供又一种分布式事务的控制方法,如图9所示,该方法包括:

步骤901、解析待处理分布式事务,获取待处理分布式事务中包含的主业务、从业务以及从业务之间的调用关系。

步骤902、根据从业务之间的调用关系设置每个从业务的优先级。

步骤903、当执行主业务时,根据优先级从高到低依次执行从业务。

步骤904、在从业务的执行过程中,若当前从业务执行失败,在执行情况日志中查找当前从业务的历史执行情况。

步骤905、若当前从业务的历史执行情况显示是成功时,确定当前从业务具备再次执行的条件,再次执行当前从业务。

步骤906、若当前从业务再次执行成功,继续执行下一级优先级的从业务,直到其中一个从业务执行失败且具备再次执行的条件但再次执行失败,按照优先级从低到高的顺序回滚已经执行成功的从业务,并返回执行失败状态给主业务。

步骤907、将已经执行成功的从业务的执行成功状态更新到执行情况日志中,将执行失败的从业务的执行失败状态更新到执行情况日志中。

本发明提供的分布式事务的控制方法,由于各个从业务存在处理的先后顺序,因此更好地实现了对高并发的事务请求的应对,并且,由于给予了某些从业务再次执行的机会,很大程度地避免了从业务因为偶然异常导致的所有从业务回滚的情况,提高了事务的处理效率,并且,由于执行到其中一个从业务执行失败且具备再次执行的条件但再次执行失败就会停止执行,从而节省了资源。

本发明实施例提供一种事务管理器,如图10所示,该事务管理器10包括:

解析模块1001,用于解析待处理分布式事务,获取分布式待处理事务中包含的主业务、从业务以及从业务之间的调用关系。

设置模块1002,用于根据从业务之间的调用关系设置每个从业务的优先级。

执行模块1003,用于当执行主业务时,根据优先级从高到低依次执行从业务。

本发明实施例提供的事务管理器,解析待处理事务,获取待处理事务中包含的主业务、从业务以及从业务之间的调用关系;根据从业务之间的调用关系设置每个从业务的优先级。这样,由于各个从业务存在处理的先后顺序,因此更好地实现了对高并发的事务请求的应对。

进一步,在图10对应的实施例的基础上,本发明实施例提供了另一种事务管理器,如11所示,执行模块1003包括:

判断单元10031,用于在从业务的执行过程中,若当前从业务执行失败,根据执行情况日志判断当前从业务是否具备再次执行的条件;其中,执行情况日志存储有从业务的历史执行情况。

第一执行单元10032,用于若具备再次执行的条件,再次执行当前从业务。

第二执行单元10033,用于若当前从业务再次执行成功,继续执行下一级优先级的从业务,直到所有从业务都执行成功,或直到其中一个从业务不具备再次执行的条件,或直到其中一个从业务执行失败且具备再次执行的条件但再次执行失败。

具体的,执行停止的情况包含以下三种:

情况一:所有从业务都执行成功。

情况二:其中一个从业务执行失败并且不具备再次执行的条件。

情况三:其中一个从业务执行失败且具备再次执行的条件但再次执行失败。

满足以上三种情况中的任意一种,执行停止。其中,情况二和情况三中的其中一个是所有从业务中的任意一个从业务。

进一步,判断单元10031具体用于:

在执行情况日志中查找当前从业务的历史执行情况。

若当前从业务的历史执行情况显示是成功时,确定当前从业务具备再次执行的条件。

若当前从业务的历史执行情况显示是失败时,确定当前从业务不具备再次执行的条件。

进一步,在图11对应的实施例的基础上,本发明实施例提供了另一种事务管理器,如12所示,该事务管理器10还包括:

第一处理模块1004,用于返回执行成功状态给所述主业务。

第二处理模块1005,用于按照优先级从低到高的顺序回滚已经执行成功的从业务,并返回执行失败状态给所述主业务。

第一更新模块1006,用于将所有从业务的执行成功状态更新到所述执行情况日志中。

第二更新模块1007,用于将所述已经执行成功的从业务的执行成功状态更新到所述执行情况日志中,将执行失败的从业务的执行失败状态更新到所述执行情况日志中。

本发明提供的分布式事务的控制方法,由于各个从业务存在处理的先后顺序,因此更好地实现了对高并发的事务请求的应对,并且,由于给予了某些从业务再次执行的机会,很大程度地避免了从业务因为偶然异常导致的所有从业务回滚的情况,提高了事务的处理效率,并且,由于执行到其中一个从业务执行失败且不具备再次执行的条件,或其中一个从业务执行失败且具备再次执行的条件但再次执行失败后就会停止执行,从而节省了资源。

在实际应用中,所述解析模块1001、设置模块1002、第一执行模块1003、判断单元10031、第一执行单元10032、第二执行单元10033、第一处理模块1004、第二处理模块1005、第一更新模块1006、第二更新模块1007均可由位于事务管理器中的中央处理器(centralprocessingunit,cpu)、微处理器(microprocessorunit,mpu)、数字信号处理器(digitalsignalprocessor,dsp)或现场可编程门阵列(fieldprogrammablegatearray,fpga)等实现。

虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1