分布式事务的处理方法和分布式系统与流程

文档序号:17159859发布日期:2019-03-20 00:31阅读:166来源:国知局
分布式事务的处理方法和分布式系统与流程

本发明涉及计算机技术领域,尤其涉及一种分布式事务的处理方法和分布式系统。



背景技术:

近年来,随着互联网通信技术的发展以及人们对数据处理速度的要求的进一步提高,分布式系统也得到了人们越来越多的关注。

在分布式系统中,事务会被按照既定的规则拆分到各个子系统中,事务的各参与者、事务协调者、资源服务器及事务管理器一般位于不同的节点之上。在分布式系统的支持下,应用程序可以将不同的活动,如将信息存储到数据库、将信息从数据库移除、对数据库中存储的数据进行修改等等,合并为一个事务单元,从而将该事务单元分配至某一个节点上作为该节点的本地事务执行。

现有分布式事务的实现方案主要包括两阶段提交、补偿事务、异步消息三种方式。但是,两阶段提交方案和补偿事务方案,牺牲了信息的可用性,对分布式系统的性能有较大的影响,不适合高并发性能场景;异步信息方案,事务处理过程中所发送信息的信息表需耦合到业务系统中,增加了开发成本。



技术实现要素:

有鉴于此,本发明实施例提供一种分布式事务的处理方法和分布式系统,以提高分布式系统的性能、降低业务系统的复杂度和开发成本。

第一方面,本发明实施例提供了一种分布式事务的处理方法,包括:

被调用参与节点在接收到调用参与节点发送的调用请求后,根据所述调用请求中的调用信息执行相应的调用操作,并在所述调用操作执行完成后,向发送所述调用请求的调用参与节点返回调用完成信息;

被调用参与节点根据所述调用请求中的本地事务信息处理相应的本地事务,生成处理结果,并将所述处理结果返回给发送所述调用请求的调用参与节点。

第二方面,本发明实施例还提供了一种分布式系统,包括至少一个被调用参与节点和至少一个调用参与节点,其中,

被调用参与节点,用于在接收到调用参与节点发送的调用请求后,根据所述调用请求中的调用信息执行相应的调用操作,并在所述调用操作执行完成后,向发送所述调用请求的调用参与节点返回调用完成信息;以及,根据所述调用请求中的本地事务信息处理相应的本地事务,生成处理结果,并将所述处理结果返回给发送所述调用请求的调用参与节点。

在上述处理分布式事务的技术方案中,被调用参与节点在接收到调用参与节点发送的调用请求后,根据调用请求中的调用信息执行相应的调用操作,并在所述调用操作执行完成后,向发送该调用请求的调用参与节点返回调用完成信息;被调用参与节点根据调用请求中的本地事务信息处理相应的本地事务,生成处理结果,并将所生成的处理结果返回给发送调用请求的调用参与节点。本发明实施例通过采用上述技术方案,能够提高分布式系统的性能,降低业务系统的复杂度和开发成本。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

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

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

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

图4为本发明实施例四提供的一种分布式系统的结构框图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。

实施例一

本发明实施例一提供一种分布事务的处理方法。该方法可以由分布式系统执行。图1是本发明实施例一提供的分布式事务的处理方法的流程示意图,如图1所示,该方法包括:

s110、被调用参与节点在接收到调用参与节点发送的调用请求后,根据所述调用请求中的调用信息执行相应的调用操作,并在所述调用操作执行完成后,向发送所述调用请求的调用参与节点返回调用完成信息。

本步骤中,被调用参与节点与调用参与节点之间可以建立网络连接,从而基于网络进行信息交互。被调用参与节点所执行的调用操作为与调用请求中的调用信息对应的调用操作,该调用操作的具体内容可以根据所处理的当前分布式事务的事务内容确定,如可以为对其他节点的调用、将自身注册至分布式系统的事务管理器中、开启自身的相应端口或服务等等,此处不作限制。

其中,参与节点为参与处理当前分布式事务的节点,被调用参与节点为被其他参与节点调用的参与节点,相应的,调用参与节点为对被调用参与节点进行调用的参与节点。具体的,当前分布式事务(即分布式系统中需要由多个节点处理的事务,亦即全局事务)可以被按照一定的规则拆分为多个短事务分配至多个节点进行执行,此时,被分配执行短事务的节点可以称为当前分布式事务的参与节点,在参与节点本地执行的短事务可以称为该参与节点的本地事务。

s120、被调用参与节点根据所述调用请求中的本地事务信息处理相应的本地事务,生成处理结果,并将所述处理结果返回给发送所述调用请求的调用参与节点。

本实施例中,被调用参与节点可以在接收到调用参与节点发送的调用请求后,在处理相应的本地事务之前,向调用参与节点发送调用完成信息,以通知调用参与节点本端已接收到调用请求并完成了相应的调用操作,减少调用参与节点的等待时间。

其中,某一被调用节点的本地事务可以理解为当前分布式事务中需要由该被调用节点执行的部分,如在本地(包括本地配置的数据库)添加数据、删除或修改本地已存储的某数据、对数据进行某种运算或其他处理操作等,此处不作限制。相应的,处理结果可以为数据添加/删除/修改完成或失败的处理结果,也可以为数据的运算结果等等。

具体的,调用参与节点发送的调用请求中可以包括被调用参与节点所需执行本地事务的本地事务信息,该本地事务信息可以为被调用参与节点所需执行本地事务的内容信息或者被调用参与节点所需执行本地事务的任务标识,从而,被调用参与节点接收到调用请求后,可以根据调用请求中的内容信息执行相应的本地事务,生成处理结果;或者,根据调用请求中的任务标识查询本地存储的任务标识与任务内容的对应关系列表,确定需要执行的本地任务,并执行所确定的本地任务以生成处理结果。

需要说明的是,虽然本实施例以调用请求中包含调用信息和本地事务信息,即以调用参与节点将本地事务信息随调用信息一起发送给被调用参与节点为例进行说明,但本领域技术人员应该可以理解的是,本实施例同样可以将调用信息和本地事务信息先后发送给被调用参与节点,如调用参与节点生成包含调用信息的调用请求,并将该调用请求发送给被调用参与节点;被调用参与节点根据调用请求中的调用信息执行相应的调用操作,并在调用操作执行完成后,向该调用参与节点返回调用完成信息;调用参与节点在接收到被调用参与节点返回的调用完成信息后,将被调用参与节点所需执行的本地事务的本地事务信息发送给被调用参与节点,从而,被调用参与节点可以根据接收到的本地事务信息执行本地事务,生成处理结果,并将处理结果返回给调用参与节点,本实施例不对此进行限制。此外,本实施例中,调用参与节点还可以在接收到调用参与节点发送的调用请求后向调用参与节点发送成功接收信息,以通知调用参与节点本端已成功接收到其发送的调用请求,进一步减少调用参与节点的等待时间。

本发明实施例一提供的分布式事务的处理方法,被调用参与节点在接收到调用参与节点发送的调用请求后,根据调用请求中的调用信息执行相应的调用操作,并在所述调用操作执行完成后,向发送该调用请求的调用参与节点返回调用完成信息;被调用参与节点根据调用请求中的本地事务信息处理相应的本地事务,生成处理结果,并将所生成的处理结果返回给发送调用请求的调用参与节点。本发明实施例通过采用上述技术方案,能够提高分布式系统的性能,降低业务系统的复杂度和开发成本。

实施例二

图2为本发明实施例二提供的一种分布式事务的处理方法的流程示意图,本实施例在上述实施例的基础上进行优化,进一步的,所述分布事务的处理方法还包括:事务流程引擎获取所述处理结果;事务流程引擎根据所述处理结果判断是否存在本地事务处理失败的被调用参与节点,若存在,则通过分布式系统中的事务协调者控制当前分布式事务的全部被调用参与节点回滚自身执行的本地事务;若不存在,则通过分布式系统中的事务协调者控制各被调用参与节点提交自身执行的本地事务的处理结果。

进一步的,所述分布式事务的处理方法还包括:事务流程引擎获取当前分布式事务的全部被调用参与节点执行相应操作的执行结果,其中,所述相应操作包括回滚自身执行的本地事务的回滚操作或提交自身执行的本地事务的处理结果的提交操作;事务流程引擎在根据所述执行结果确定存在所述相应操作执行失败的目标节点时,控制所述目标节点重复执行所述相应操作,直至当前条件满足所述相应操作的停止执行条件为止。

相应的,如图2所示,本实施例提供的分布式事务的处理方法包括:

s210、被调用参与节点在接收到调用参与节点发送的调用请求后,根据所述调用请求中的调用信息执行相应的调用操作,并在所述调用操作执行完成后,向发送所述调用请求的调用参与节点返回调用完成信息。

s220、被调用参与节点根据所述调用请求中的本地事务信息处理相应的本地事务,生成处理结果,并将所述处理结果返回给发送所述调用请求的调用参与节点。

s230、事务流程引擎获取所述处理结果。

在此,事务流程引擎可理解为分布式系统中负责提供事务流程规则定义服务的节点,其可以根据事务的属性确定事务处理的流程,即确定事务中每一步操作的执行顺序。本实施例中,事务流程引擎可以由分布式系统中的一个或多个节点构成,本实施例不对此进行限制。

本实施例中,事务流程引擎可以向被调用参与节点发送处理结果获取指令,以获取被调用参与节点发送的处理结果,或者,向调用参与节点发送处理结果获取指令,以获取调用参与节点接收到的被调用参与节点发送的处理结果;也可以预先定义分布式系统中被调用参与节点在接收到调用请求后的行为,使被调用参与节点在向参与节点返回处理结果时,同步向事务流程引擎发送其本地事务的处理结果,或者,预先定义分布式系统中调用参与节点在接收到被调用参与节点返回的处理结果后的行为,使调用参与节点在接收到被调用参与节点返回的处理结果后,自动将该处理结果发送给事务流程引擎,等等。

为了进一步降低业务系统的复杂程度,优选预先在分布式系统中的各被调用参与节点中设置事务切片,从而,事务流程引擎可以通过各被调用参与节点中设置的事务切片获取各被调用参与节点向调用参与节点发送的处理结果。此时,所述事务流程引擎获取所述处理结果,包括:事务流程引擎接收分布式系统中的事务协调者发送的各处理结果;相应的,被调用参与节点通过嵌入的事务切面获取相应被调用参与节点的处理结果,并将所述处理结果发送给分布式系统中的事务协调者;事务协调者将接收到的所述处理结果发送给所述事务流程引擎。其中,事务协调者可以配合事务流程引擎控制分布式系统中的各参与节点按照事务流程引擎的定义执行相应的操作,其可以由分布式系统中的一个或多个节点构成。

示例性的,各被调用参与节点在本地事务处理完成后,向相应发送调用请求的调用参与节点发送处理结果;各被调用参与节点中的事务切片对被调用参与节点发送的处理结果进行拦截,并将拦截到的处理结果发送给事务协调者;事务协调者接收各被调用参与节点中的事务切片发送的处理结果,并将接收到的各处理结果转发给事务流程引擎,以使事务流程引擎根据所接收得到的各处理结果进行后续操作。

s240、事务流程引擎根据所述处理结果判断是否存在本地事务处理失败的被调用参与节点,若存在,则通过分布式系统中的事务协调者控制当前分布式事务的全部被调用参与节点回滚自身执行的本地事务;若不存在,则通过分布式系统中的事务协调者控制各被调用参与节点提交自身执行的本地事务的处理结果。

具体的,被调用参与者可以在生成处理结果时,在处理结果的第一设定位置写入表征本地事务是否处理成功的标识,或者,当本地事务处理失败时,在处理结果中用于写入处理结果内容的第二设定位置处写入与导致本地事务处理失败的原因相对应的错误标识,从而,事务流程引擎在接收到处理结果后,对处理结果进行解析,得到设定位置处(第一位置或第二设定位置)处写入的内容,从而根据该位置写入的内容确定该处理结果对应的本地事务是否处理失败,进而确定当前分布式事务的全部被调用参与节点的本地事务是否均处理成功,并在全部被调用参与节点的本地事务均处理成功时,控制各被调用参与节点提交各自生成的处理结果;在存在至少一个本地事务处理失败的被调用参与节点时,控制当前分布式事务的全部被调用参与节点回滚各自执行的本地事务,以将各被调用参与节点的状态恢复至本次执行本地事务之前的状态。

示例性的,事务流程引擎在确定当前分布式事务的全部被调用参与节点的本地事务均处理成功时,生成需要控制各被调用参与节点提交本地事务的提交信息,并将该提交信息发送给事务协调者;事务协调者根据事务流程引擎发送的提交信息生成提交指令,并将所生成的提交指令发送给各被调用参与节点;各被调用参与节点根据接收到的提交指令提交本地事务的处理结果。事务流程引擎在确定存在至少一个本地事务处理失败的被调用参与节点时,生成需要控制各被调用参与节点回滚自身执行的本地事务的回滚信息,并将该回滚信息发送给事务协调者;事务协调者根据事务流程引擎发送的回滚信息生成回滚指令,并将所生成的回滚指令发送给各被调用参与节点;各被调用参与节点根据接收到的回滚指令回滚自身执行的本地事务。

需要说明的是,虽然本实施例以当存在本地事务处理失败时,控制处理当前分布式事务的全部被调用参与节点回滚自身处理的当前分布式事务的本地事务为例进行说明,但是,本领域技术人员应该可以理解的是,此种处理方式仅为本发明实施例的一种可选实施方式,在其他实施方式中,本发明实施例同样可以仅控制部分被调用节点回滚自身处理的本地事务或者进一步控制其他节点也回滚自身进行的操作,如仅控制当前分布式事务的本地事务处理失败的被调用参与节点回滚自身处理的本地事务,或者,控制处理当前分布式事务的全部节点(包括事务流程引擎和事务管理器)均回滚自身在处理当前分布式事务时所进行的操作,等等,本发明实施例不对此进行限制。

s250、事务流程引擎获取当前分布式事务的全部被调用参与节点执行相应操作的执行结果,其中,所述相应操作包括回滚自身执行的本地事务的回滚操作或提交自身执行的本地事务的处理结果的提交操作。

具体的,事务流程引擎可以向被调用参与节点发送执行结果获取指令,以获取被调用参与节点发送的执行结果,或者,预先定义分布式系统中被调用参与节点在执行完相应操作后的行为,使被调用参与节点在执行完相应操作后,自动将相应操作的执行结果发送给事务流程引擎。此外,被调用参与节点在执行完相应操作后,可以将相应操作的执行结果返回给调用参与节点,此时,事务流程引擎还可以通过向调用参与节点发送执行结果获取指令获取调用参与节点接收到的被调用参与节点发送的执行结果,或者,预先定义被调用参与节点的行为,使被调用参与节点在相应操作执行完成后,同时将执行结果发送给被调用参与节点和事务流程引擎。

考虑到业务系统的复杂程度,事务流程引擎优选可以通过各被调用参与节点中设置的事务切片获取各被调用参与节点的执行结果。此时,各被调用参与节点在相应操作执行完成后,向调用参与节点发送执行结果;各被调用参与节点中的事务切片获取各被调用参与节点发送的执行结果,并将获取到的执行结果发送给事务协调者;事务协调者接收并转发各被调用参与节点中的事务切片发送的执行结果;事务流程引擎接收事务协调者转发的执行结果并进行后续操作。

s260、事务流程引擎在根据所述执行结果确定存在所述相应操作执行失败的目标节点时,控制所述目标节点重复执行所述相应操作,直至当前条件满足所述相应操作的停止执行条件为止。

本实施例中,若相应操作为回滚操作,则在存在回滚操作执行失败的被调用参与节点(即目标节点)时,控制目标节点重复执行回滚操作,直至当前条件满足回滚操作的停止执行条件为止;若相应操作为提交操作,则在存在提交操作执行失败的被调用参与节点(即目标节点)时,控制目标节点重复执行递交操作,直至当前条件满足递交操作的停止执行条件为止。相应的,若不存在相应操作执行失败的目标节点,即各被调用参与节点的相应操作均执行成功时,则可以向当前分布式事务的发起者(如用户端或分布式系统的后台服务器)返回通知信息,以通知发起者本地事务执行完成(针对相应操作为提交操作的情况)或本地事务执行失败(针对相应操作为回滚操作的情况)。

其中,相应操作执行失败可以仅包括事务流程引擎获取到被调用参与节点相应操作的执行结果且该执行结果的内容为失败的情况,还可以进一步包括事务流程引擎在设定时间长度内未获取到被调用参与节点相应操作的执行结果的情况,即超时的情况;事务流程引擎可以控制目标节点按照设定周期重复执行相应操作,或者,控制目标节点按照执行间隔递增的方式重复执行相应操作,此处不作限制。

具体的,事务流程引擎可以通过事务协调者控制目标节点重复执行相应操作,如事务协调者在确定存在相应操作执行失败的目标节点时,生成相应操作执行信息,并将其发送给事务协调者;事务协调者生成相应操作的执行指令,并将所生成的执行指令发送给目标节点,从而控制目标节点再次执行相应操作。

本实施例中,相应操作的停止执行条件可以根据需要设置,如可以设置为相应操作执行成功、相应操作重复执行次数达到设定次数、相应操作重复执行时长达到设定时长等等。相应的,事务流程引擎可以控制目标节点重复执行相应操作,直至相应操作执行成功为止、直至相应操作重复执行次数达到设定次数为止和/或直至相应操作重复执行时长达到设定时长为止。其中,设定次数、设定时长可以灵活设置,如设定次数可以设置为10次、100次等等,设定时长可以设置为10分钟、1小时或1天等等。

本发明实施例二提供的分布式事务的处理方法,事务流程引擎根据各被调用参与节点本地事务的执行结果控制各被调用参与节点回滚本地事务或提交本地事务的执行结果,并在回滚操作或提交操作执行失败时,控制执行失败的被调用参与节点重复执行回滚操作或递交操作,可以进一步提高分布式系统的性能和可用性,提高用户的使用体验。

实施例三

图3为本发明实施例三提供的一种分布式事务的处理方法的流程示意图。本实施例在上述实施例的基础上,将“根据所述调用请求中的调用信息执行相应的调用操作”优化为:将自身注册至分布式系统的事务管理器中;以及根据所述调用请求中的调用信息确定是否存在需调用的下一被调用参与节点;如果存在,则生成对所述下一被调用参与节点进行调用的调用请求,将生成的调用请求发送给所述下一被调用参与节点,并接收所述下一被调用参与节点返回的调用完成信息。

进一步的,在所述根据所述调用请求中的调用信息执行相应的调用操作之前,还包括:确定所述调用请求为尚未执行的调用请求。

相应的,如图3所示,本实施例提供的分布式事务的处理方法包括:

s310、被调用参与节点在接收到调用参与节点发送的调用请求后,确定所述调用请求为尚未执行的调用请求。

具体的,被调用参与节点可以根据调用请求所属分布式事务的事务标识和/或调用请求的业务标识确定调用请求是否为尚未执行的调用请求,若事务标识和/或业务标识与正在执行或已经执行的调用请求的事务标识和/或业务标识相同,则确定该调用请求为正在执行的调用请求或已经执行的调用请求;若事务标识和/或业务标识与正在执行或已经执行的调用请求的事务标识和/或业务标识不相同,则确定该调用请求为尚未执行的调用请求。此时,调用节点发送的调用请求中还可以进一步包括调用请求所属分布式事务的事务标识和/或调用请求的业务标识。

相应的,若被调用参与节点确定所接收到的调用请求为正在执行或已经执行完成的调用请求时,则不进行后续操作,从而确保在出现由于网络、进程、主机或一些不可预知的错误等导致的超时的情况时,不论被调用参与节点接收到多少次调用请求,均能够在分布式事务中保持数据的一致性。

s320、被调用参与节点将自身注册至分布式系统的事务管理器中。

其中,事务管理器为分布式系统中负责定义分布式事务(如分布式事务的属性和上下文)的节点,其可以由分布式系统中的一个或多个节点构成。在处理分布式事务时,事务管理节点可以为被调用参与节点提供注册服务并配合事务流程引擎和参与节点(包括被调用参与节点和调用参与节点)工作,如在事务流程中为事务流程引擎和参与节点提供全局事务的属性信息和上下文信息等。示例性的,事务管理器在接收到分布式事务的发起节点发送的分布式事务信息时,可以首先根据分布式事务的事务标识判断该分布式事务是否为尚未执行的分布式事务,若是,则对该分布式事务进行定义;若否,则不再执行后续的定义操作,以避免分布式事务的重复执行。

具体的,被调用参与节点可以将自身的节点信息发送给分布式系统的事务管理器,以使分布式管理系统对其进行记录,完成注册过程。示例性的,被调用参与节点可以直接将自身的节点信息发送给事务管理器,也可以通过其嵌入的事务切片获取被调用参与节点的节点信息并将其发送给事务管理器。

考虑到业务系统的复杂程度和开发成本,优选的,可以通过事务切片将被调用参与节点注册至事务管理器中,此时,所述将自身注册至分布式系统的事务管理器中,包括:通过嵌入的事务切面将自身的节点信息发送给分布式系统的事务管理器,以使所述事务管理器记录所述节点信息,所述节点信息包括所述被调用参与节点的ip地址。其中,节点信息还可以进一步包括被调用参与节点处理当前分布式事务时的接口信息、提交方法信息和/或回滚方法信息等,此处不作限制。

相应的,在分布式事务处理完成后,事务管理器可以删除其记录的处理当前事务的被调用参与节点的节点信息,以减少节点信息对事务管理器存储空间的占用。

s330、被调用参与节点根据所述调用请求中的调用信息确定是否存在需调用的下一被调用参与节点;如果存在,则生成对所述下一被调用参与节点进行调用的调用请求,将生成的调用请求发送给所述下一被调用参与节点,并接收所述下一被调用参与节点返回的调用完成信息。

需要说明的是,本发明实施例中的被调用参与节点与调用参与节点仅是就某一调用请求而言,当调用请求不同时,其对应的被调用参与节点与调用参与节点也可能是不相同的,相应的,某一调用请求的被调用参与节点可能是另一调用请求的调用参与节点,某一调用请求的调用参与节点可能是另一调用请求的被调用参与节点。以本步骤为例,当被调用参与节点向下一被调用参与节点发送调用请求时,就被调用参与节点发送的该调用请求而言,其被调用参与节点为该下一被调用参与节点,其调用参与节点为发送给调用请求的被调用参与节点。

s340、被调用参与节点向发送所述调用请求的调用参与节点返回调用完成信息。

s350、被调用参与节点根据所述调用请求中的本地事务信息处理相应的本地事务,生成处理结果,并将所述处理结果返回给发送所述调用请求的调用参与节点。

本发明实施例三提供的分布式事务的处理方法,被调用参与节点在接收到调用参与节点发送的调用请求后,确定调用请求为尚未执行的调用请求;将自身注册至分布式系统的事务管理器中,在存在下一被调用参与节点时,向下一被调用参与节点发送调用请求并接收下一被调用参与节点返回的调用完成信息;向调用参与节点返回调用完成信息;根据调用请求中的本地事务信息处理相应的本地事务,生成处理结果,并将处理结果返回给调用参与节点。本实施例通过采用上述技术方案,能够在提高分布式系统性能的前提下,避免被调用参与节点出现被多次调用的情况,保证分布式系统中数据的一致性。

实施例四

本发明实施例四提供一种分布式系统。所述分布式系统可通过执行分布式事务的处理方法实现对分布式事务的处理。图4为本发明实施例四提供的分布式系统的结构框图(图中以包含一个被调用参与节点和一个调用参与节点为例),如图4所示,该系统包括:至少一个被调用参与节点401和至少一个调用参与节点402,其中,

被调用参与节点401,用于在接收到调用参与节点402发送的调用请求后,根据所述调用请求中的调用信息执行相应的调用操作,并在所述调用操作执行完成后,向发送所述调用请求的调用参与节点402返回调用完成信息;以及,根据所述调用请求中的本地事务信息处理相应的本地事务,生成处理结果,并将所述处理结果返回给发送所述调用请求的调用参与节点402。

本发明实施例四提供的分布式系统,被调用参与节点在接收到调用参与节点发送的调用请求后,根据调用请求中的调用信息执行相应的调用操作,并在所述调用操作执行完成后,向发送该调用请求的调用参与节点返回调用完成信息;被调用参与节点根据调用请求中的本地事务信息处理相应的本地事务,生成处理结果,并将所生成的处理结果返回给发送调用请求的调用参与节点。本发明实施例通过采用上述技术方案,能够提高分布式系统的性能,降低业务系统的复杂度和开发成本。

进一步地,所述分布式系统还可以包括事务流程引擎403和事务协调者404,其中,事务流程引擎403,用于获取所述处理结果,并根据所述处理结果判断是否存在本地事务处理失败的被调用参与节点401,若存在,则通过事务协调者404控制当前分布式事务的全部被调用参与节点回滚自身执行的本地事务;若不存在,则通过事务协调者404控制各被调用参与节点401提交自身执行的本地事务的处理结果。

在上述方案中,事务流程引擎403还可以用于:获取当前分布式事务的全部被调用参与节点执行相应操作的执行结果,其中,所述相应操作包括回滚自身执行的本地事务的回滚操作或提交自身执行的本地事务的处理结果的提交操作;在根据所述执行结果确定存在所述相应操作执行失败的目标节点时,控制所述目标节点重复执行所述相应操作,直至当前条件满足所述相应操作的停止执行条件为止。

在上述方案中,事务流程引擎403可用于接收分布式系统中的事务协调者404发送的各所述处理结果;相应的,被调用参与节点401还可用于通过嵌入的事务切面获取所述被调用参与节点401的处理结果,并将所述处理结果发送给事务协调者404;事务协调者404还可用于将接收到的所述处理结果发送给分布式系统中的事务流程引擎403。

在上述方案中,所述分布式系统还可以包括事务管理器405,所述根据所述调用请求中的调用信息执行相应的调用操作可以包括:将自身注册至事务管理器405中;以及,根据所述调用请求中的调用信息确定是否存在需调用的下一被调用参与节点;如果存在,则生成对所述下一被调用参与节点进行调用的调用请求,将生成的调用请求发送给所述下一被调用参与节点,并接收所述下一被调用参与节点返回的调用完成信息。

可选的,所述将自身注册至事务管理器405中包括:通过嵌入的事务切面将自身的节点信息发送给事务管理器,以使事务管理器405记录所述节点信息,所述节点信息包括所述被调用参与节点的ip地址。

在上述方案中,被调用参与节点401还可以用于在所述根据所述调用请求中的调用信息执行相应的调用操作之前,确定所述调用请求为尚未执行的调用请求。

本发明实施例四提供的分布式系统可执行本发明任意实施例提供的分布式事务的处理方法,具备执行分布式事务的处理方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的分布式事务的处理方法。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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