一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分布式事务处理方法、装置、设备、存储介质和程序产品与流程

2022-03-26 15:08:49 来源:中国专利 TAG:


1.本技术涉及分布式技术领域,特别是涉及一种分布式事务处理方法、装置、设备、存储介质和程序产品。


背景技术:

2.目前分布式事务常用的解决方案有:xa数据库两阶段提交协议,tcc(try-confirm-cancel)无锁方案以及saga长活事务解决方案等。
3.xa方案依赖于数据库,分为事务管理器(transaction manager,tm)和本地资源管理器(resource manager,rm),应用(app)向tm申请开启分布式事务,app访问rm,rm向tm注册分支事务,app执行本地事务,但不提交,所有分支成功时,app向tm发起分布式事务提交,tm再通知各个rm提交;若有分支失败时,app向tm发起分布式事务回滚,tm再通知各个rm回滚。
4.tcc方案主要在业务分割成try、confirm、cancel三个环节,try只是作为业务的资源预留,并且记录相关的日志,若以上的资源预留成功,则进行confirm操作,否则进行cancel操作。
5.saga长活事务方案,属于补偿型事务,当业务执行了正向操作以后,若请求链路中没有异常,会进行分布式事务提交,否则,调用反向操作,相当于把正向操作的改动又恢复了。
6.传统应用系统为了高可用、容灾,一般基于两个异地数据中心进行建设。传统的三种分布式事务处理方案只支持一个中心的分布式事务,涉及到跨两个或多个中心的分布式事务是无法处理的。


技术实现要素:

7.基于此,有必要针对上述技术问题,提供一种能够支持多中心的分布式事务处理方法、装置、设备、存储介质和程序产品。
8.第一方面,本技术提供一种分布式事务处理方法,应用于事务资源管理器,所述方法包括:接收分布式事务处理请求,并判断对应的分布式事务管理器是否可用;当对应的分布式事务管理器不可用时,从本地存储的正常的分布式事务管理器中选择对应的另一分布式事务管理器;所选择的所述分布式事务管理器用于对所述事务资源管理器的分布式事务进行管理;不同的所述分布式事务管理器位于不同的处理中心。
9.在其中一个实施例中,当所述分布式事务处理请求在提交阶段时,所述从本地存储的正常的分布式事务管理器中选择对应的另一分布式事务管理器之后,包括:开启本地分支事务,并执行对应的业务处理;向所选择的所述分布式事务管理器注册所述分支事务,以使得所述分布式事务管理器将注册的所述分支事务进行登记。
10.在其中一个实施例中,所述执行对应的业务处理,包括:当所述业务处理调用另一事务资源管理器时,将所选的所述分布式事务管理器发送至所述另一事务资源管理器,以
使得所述另一事务资源管理器开启对应的分支事务,并向所选择的所述分布式事务管理器注册所述分支事务,以使得所述分布式事务管理器将注册的所述分支事务进行登记。
11.在其中一个实施例中,当所述分布式事务处理请求在回滚阶段时,所述从本地存储的正常的分布式事务管理器中选择对应的另一分布式事务管理器之后,包括:接收所选择的所述分布式事务管理器发送的分支事务回滚请求;开启本地分支事务的回滚,并修改分支事务状态后提交本地分支事务的回滚结果。
12.在其中一个实施例中,所述方法还包括:接收所选择的所述分布式事务管理器发送的分支事务处理请求,所述分支事务处理请求是在所选择的所述分布式事务管理器判断分支事务处理请求对应的事务资源管理器是否异常;当所述事务资源管理器异常时,将所述分支事务处理请求路由至对应中心的正常的事务资源管理器。
13.在其中一个实施例中,所述接收所选择的所述分布式事务管理器发送的分支事务处理请求之前,还包括:向所选择的所述分布式事务管理器发送事务提交请求;所述接收所选择的所述分布式事务管理器发送的分支事务处理请求,包括:接收所选择的所述分布式事务管理器发送的事务提交请求,所述事务提交请求在其中任一个所述分支事务对应的事务资源管理器故障时,发送至按照预设算法选择的对应中心的正常的事务资源管理器。
14.在其中一个实施例中,所述接收所选择的所述分布式事务管理器发送的分支事务处理请求之前,还包括:向所述分布式事务管理器发送事务回滚请求;所述接收所选择的所述分布式事务管理器发送的分支事务处理请求,包括:接收所选择的所述分布式事务管理器发送的分支事务回滚请求,所述分支事务回滚请求是所述分布式事务管理器在接收所述事务回滚请求时,判断分支事务对应的事务资源管理器是否异常,且当所述事务资源管理器异常时,将所述分支事务对应的分支回滚请求路由至对应中心的正常的事务资源管理器的。
15.在其中一个实施例中,所述方法还包括:获取当前处理中心的中心标识,并将所述中心标识发送至分布式事务管理器,且接收所述分布式事务管理器对应的处理中心的中心标识;存储当前处理中心的中心标识以及所述分布式事务管理器对应的处理中心的中心标识。
16.第二方面,本技术提供一种分布式事务处理方法,应用于分布式事务管理器,所述方法包括:接收事务资源管理器发送的分布式事务处理请求,所述分布式事务处理请求是所述事务资源管理器判断对应的分布式事务管理器是否可用,且在当对应的分布式事务管理器不可用时,从本地存储的正常的分布式事务管理器中选择对应的另一分布式事务管理器,并发送至所选择的另一分布式事务管理器的;不同的所述分布式事务管理器位于不同的处理中心;根据所述分布式事务处理请求处理所述分布式事务。
17.在其中一个实施例中,当所述分布式事务处理请求在提交阶段时,所述根据所述分布式事务处理请求处理所述分布式事务,包括:根据所述分布式事务处理请求登记分布式事务信息,并在登记成功后,向所述事务资源管理器发送分布式事务启动请求,所述分布式事务启动请求用于指示所述事务资源管理器开启本地分支事务,执行对应的业务处理,并将分支事务信息发送至所选择的另一分布式事务管理器;登记接收到的所述分支事务信息;接收所述事务资源管理器发送的分支事务提交请求,并基于所述分支事务提交请求更新对应的分支事务的状态。
18.在其中一个实施例中,当所述分布式事务处理请求在回滚阶段时,所述根据所述分布式事务处理请求处理所述分布式事务,包括:向对应的事务资源管理器发送分支事务回滚请求,所述分支事务回滚请求用于指示对应的所述事务资源管理器开启本地分支事务的回滚,并提交本地分支事务的回滚结果。
19.在其中一个实施例中,所述方法还包括:判断分支事务处理请求对应的事务资源管理器是否异常;当所述事务资源管理器异常时,将所述分支事务处理请求路由至对应中心的正常的事务资源管理器。
20.在其中一个实施例中,当所述分支事务处理请求在提交阶段时,所述将所述分支事务处理请求路由至对应中心的正常的事务资源管理器之后,包括:接收正常的事务资源管理器发送的分支事务提交请求,根据所述分支事务提交请求更新对应的分布式事务的事务状态。
21.在其中一个实施例中,当所述分支事务处理请求在回滚阶段时,所述将所述分支事务处理请求路由至对应中心的正常的事务资源管理器,包括:将所述分支事务对应的回滚请求路由至对应中心的正常的事务资源管理器,所述分支事务对应的回滚请求用于指示对应中心的正常的事务资源管理器开启本地回滚事务,并提交本地回滚结果。
22.第三方面,本技术提供一种分布式事务处理装置,应用于事务资源管理器,所述装置包括:
23.第一接收模块,用于接收分布式事务处理请求,并判断对应的分布式事务管理器是否可用;
24.事务管理器选择模块,用于当对应的分布式事务管理器不可用时,从本地存储的正常的分布式事务管理器中选择对应的另一分布式事务管理器;所选择的所述分布式事务管理器用于对所述事务资源管理器的分布式事务进行管理;不同的所述分布式事务管理器位于不同的处理中心。
25.第四方面,本技术提供一种分布式事务处理装置,应用于分布式事务管理器,所述装置包括:
26.第二接收模块,用于接收事务资源管理器发送的分布式事务处理请求,所述分布式事务处理请求是所述事务资源管理器判断对应的分布式事务管理器是否可用,且在当对应的分布式事务管理器不可用时,从本地存储的正常的分布式事务管理器中选择对应的另一分布式事务管理器,并发送至所选择的另一分布式事务管理器的;不同的所述分布式事务管理器位于不同的处理中心;
27.分布式事务处理模块,用于根据所述分布式事务处理请求处理所述分布式事务。
28.第五方面,本技术提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任意一个实施例中所述的方法的步骤。
29.第六方面,本技术提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一个实施例中所述的方法的步骤。
30.第七方面,本技术提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任意一个实施例中所述的方法的步骤。
31.上述分布式事务处理方法、装置、设备、存储介质和程序产品,在接收了分布式事
务处理请求后,判断对应的分布式事务管理器是否可用,若是不可用,则本地存储的正常的分布式事务管理器中选择对应的另一分布式事务管理器,来处理分布式事务,这样能够保证一个中心的分布式事务管理器宕机时,业务的请求可以路由到另一个中心进行分布式事务的处理,保证了的业务的连续性,最终保证了数据一致性。
附图说明
32.图1为一个实施例中分布式事务处理方法的应用环境图;
33.图2为一个实施例中分布式事务处理方法的流程示意图;
34.图3为一个实施例中的分布式事务提交步骤的处理流程图;
35.图4为一个实施例中的分支事务回滚步骤的流程图;
36.图5为一个实施例中的分布式事务启动过程的流程图;
37.图6为另一个实施例中分布式事务处理方法的流程示意图;
38.图7为一个实施例中分布式事务启动阶段的时序图;
39.图8为一个实施例中分布式事务提交阶段的时序图;
40.图9为一个实施例中的分布式事务回滚阶段的时序图;
41.图10为一个实施例中分布式事务处理装置的结构框图;
42.图11为另一个实施例中分布式事务处理装置的结构框图;
43.图12为一个实施例中计算机设备的内部结构图。
具体实施方式
44.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
45.本技术实施例提供的分布式事务处理方法,可以应用于如图1所示的应用环境中。其中在本技术中提供多个处理中心,其中一个是基础处理中心,该基础处理中心包括事务资源管理器集群、分布式事务管理器集群、事务管理器集群的数据库、分布式应用集群和分布式应用的数据库,其中事务资源管理器集群包含在分布式应用集群中,在其他的处理中心包括事务资源管理器集群、分布式事务管理器集群、分布式应用集群和分布式应用的数据库,其中事务资源管理器集群包含在分布式应用集群中。其中为了说明情况,在图1中仅以2个处理中心为例进行说明。其中事务资源管理器接收分布式事务处理请求,并判断对应的分布式事务管理器是否可用;当对应的分布式事务管理器不可用时,从本地存储的正常的分布式事务管理器中选择对应的另一分布式事务管理器;所选择的分布式事务管理器用于对事务资源管理器的分布式事务进行管理;不同的分布式事务管理器位于不同的处理中心。事务资源管理器接收所选择的分布式事务管理器发送的分支事务处理请求,分支事务处理请求是在所选择的分布式事务管理器判断分支事务处理请求对应的事务资源管理器是否异常;当事务资源管理器异常时,将分支事务处理请求路由至对应中心的正常的事务资源管理器。这样能够保证一个中心的分布式事务管理器宕机时,业务的请求可以路由到另一个中心进行分布式事务的处理,保证了的业务的连续性,最终保证了数据一致性。
46.在一个实施例中,如图2所示,提供了一种分布式事务处理方法,以该方法应用于
图1中的事务资源管理器为例进行说明,包括以下步骤:
47.s202:接收分布式事务处理请求,并判断对应的分布式事务管理器是否可用。
48.具体地,分布式事务处理请求可以包括分布式事务的提交请求和回滚请求,在此不做具体限制。其中对应的分布式事务管理器是指与事务资源管理器对应的,默认地,事务资源管理器对应的分布式事务管理器是位于同一个处理中心的。在其他的实施例中,事务资源管理器对应的默认的分布式事务管理器也可以位于不同的处理中心。
49.其中,分布式事务处理请求可以是由应用系统发送至事务资源管理器的,例如分布式事务处理请求或者是事务资源管理器主动发起的,例如分布式事务回滚请求。
50.在实际应用中,事务资源管理器预先存储了各个可用的分布式事务管理器,并且确定了默认的分布式事务管理器,这样事务资源管理器在接收到分布式事务处理请求后,然后判断默认的分布式事务管理器是否可用。
51.s204:当对应的分布式事务管理器不可用时,从本地存储的正常的分布式事务管理器中选择对应的另一分布式事务管理器;所选择的分布式事务管理器用于对事务资源管理器的分布式事务进行管理;不同的分布式事务管理器位于不同的处理中心。
52.具体地,事务资源管理器在判定对应的分布式事务管理器不可用时,则按照预设的算法从本地存储的正常的分布式事务管理器中选择对应的另一分布式事务管理器,例如通过轮询的方式获取到另一个中心中的对应的分布式事务管理器,具体地,事务资源管理器先判定当前处理中心对应的分布式事务管理器集群中的服务器全部都不可用时,则可以获取到另外一个处理中心中的分布式事务管理器集群中可用的服务器,以对事务资源管理器的分布式事务进行处理。
53.其中分布式事务管理器对分布式事务进行处理包括根据分布式事务管理器的中心标识登记分布式事务信息、保存分支事务的信息,提交分布式事务的时候,通知各个事务资源管理器提交,回滚分布式事务的时候,通知各个事务资源管理器逆序回滚,这样能够保证一个中心的分布式事务管理器宕机时,业务的请求可以路由到另一个中心进行分布式事务的处理,保证了的业务的连续性,最终保证了数据一致性。
54.上述分布式事务处理方法,在接收了分布式事务处理请求后,判断对应的分布式事务管理器是否可用,若是不可用,则本地存储的正常的分布式事务管理器中选择对应的另一分布式事务管理器,来处理分布式事务,这样能够保证一个中心的分布式事务管理器宕机时,业务的请求可以路由到另一个中心进行分布式事务的处理,保证了的业务的连续性,最终保证了数据一致性。
55.在其中一个实施例中,当分布式事务处理请求在提交阶段时,从本地存储的正常的分布式事务管理器中选择对应的另一分布式事务管理器之后,包括:开启本地分支事务,并执行对应的业务处理;向所选择的分布式事务管理器注册分支事务,以使得分布式事务管理器将注册的分支事务进行登记。
56.在其中一个实施例中,执行对应的业务处理,包括:当业务处理调用另一事务资源管理器时,将所选的分布式事务管理器发送至另一事务资源管理器,以使得另一事务资源管理器开启对应的分支事务,并向所选择的分布式事务管理器注册分支事务,以使得分布式事务管理器将注册的分支事务进行登记。
57.具体地,结合图3所示,图3为一个实施例中的分布式事务提交步骤的处理流程图,
在该实施例中,在一个分布式事务提交请求发送至中心1的分布式应用服务器上时,事务资源管理器开启分布式事务,此时中心1的分布式事务管理器宕机不可用了;该分布式事务提交请求的后续消息发送到分布式应用服务器时,事务资源管理器会判断自己和分布式事务管理器的中心标识是否一致(也即判断对应的分布式事务管理器是否可用),若不一致,根据读取到分布式事务服务器存储的信息,利用轮询算法路由到中心2的分布式事务管理器,这样中心1的事务资源管理器可以在中心2的分布式事务管理器开启分布式事务。
58.具体地,事务资源管理器1开启本地事务,执行业务sql,在中心2的分布式事务管理器注册一个分支,分支详情和分布式事务管理器的中心标识登记在分布式事务管理器的数据库,最后登记分支事务回滚日志,这样在事务资源管理器提交本地事务时,分布式事务管理器可以更新分布式事务管理器的数据库中的分布式事务的状态,例如在提交阶段修改为完成状态。
59.其中,在事务资源管理器1执行分支事务时,其可能用到事务资源管理器2,事务资源管理器1传播分布式事务唯一序列、中心标识,在事务资源管理器2开启本地事务,且事务资源管理器在分布式事务管理器注册一个分支,分支详情登记在分布式事务管理器的数据库,最后登记分支事务回滚日志。
60.最后,在中心1的事务资源管理器1在没有异常的情况下,发起分布式事务提交,提交完成所有的分支事务,分布式事务完成。
61.在其中一个实施例中,当分布式事务处理请求在回滚阶段时,从本地存储的正常的分布式事务管理器中选择对应的另一分布式事务管理器之后,包括:接收所选择的分布式事务管理器发送的分支事务回滚请求;开启本地分支事务的回滚,并修改分支事务状态后提交本地分支事务的回滚结果。
62.具体地,分布式应用通过事务资源管理器发起分布式事务回滚,当中心1的分布式事务管理器宕机不可用时,无法匹配到本中心的分布式事务管理器,则会利用轮询算法路由到中心2的分布式事务管理器。在事务资源管理器1收到分支事务的回滚请求后,开启本地事务,执行回滚日志sql,修改分支事务状态,提交本地事务;分布式事务管理器检查所有的分支事务回滚完成时,分布式事务管理器修改分布式事务状态,分布式事务结束。
63.具体地,上述实施例中主要给出了分布式事务管理器故障时,则选择另一个中心的分布式事务管理器来继续管理分布式事务,从而能够保证一个中心的分布式事务管理器宕机时,业务的请求可以路由到另一个中心进行分布式事务的处理,保证了的业务的连续性,最终保证了数据一致性。在其中一个实施例中,上述分布式事务处理方法还包括:事务资源管理器宕机时,选择集群中另一事务资源管理器来处理宕机的事务资源管理器所要处理的分支事务,具体地,该方法包括:接收所选择的分布式事务管理器发送的分支事务处理请求,分支事务处理请求是在所选择的分布式事务管理器判断分支事务处理请求对应的事务资源管理器是否异常;当事务资源管理器异常时,将分支事务处理请求路由至对应中心的正常的事务资源管理器。
64.具体地,分布式事务管理器可以向事务资源管理器发送分支事务处理请求,例如提交请求或者回滚请求,在发送之前分布式事务管理器可以判断分支事务处理请求对应的事务资源管理器是否异常,当异常时,则路由至对应中心的正常的事务资源管理器,这样可以保证分支事务能够正常被处理。
65.在其中一个实施例中,接收所选择的分布式事务管理器发送的分支事务处理请求之前,还包括:向所选择的分布式事务管理器发送事务提交请求;接收所选择的分布式事务管理器发送的分支事务处理请求,包括:接收所选择的分布式事务管理器发送的事务提交请求,事务提交请求在其中任一个分支事务对应的事务资源管理器故障时,发送至按照预设算法选择的对应中心的正常的事务资源管理器。
66.具体地,以事务提交请求为例进行说明,事务资源管理器向所选择的分布式事务管理器发送事务提交请求,接收所选择的分布式事务管理器发送的事务提交请求,事务提交请求在其中任一个分支事务对应的事务资源管理器故障时,发送至按照预设算法选择的对应中心的正常的事务资源管理器,也就是说当其中某一个分布式应用服务器宕机不可用,分布式事务管理器使用随机算法选择另一个分布式应用服务器上的事务资源管理器发起提交。
67.在其中一个实施例中,接收所选择的分布式事务管理器发送的分支事务处理请求之前,还包括:向分布式事务管理器发送事务回滚请求;接收所选择的分布式事务管理器发送的分支事务处理请求,包括:接收所选择的分布式事务管理器发送的分支事务回滚请求,分支事务回滚请求是分布式事务管理器在接收事务回滚请求时,判断分支事务对应的事务资源管理器是否异常,且当事务资源管理器异常时,将分支事务对应的分支回滚请求路由至对应中心的正常的事务资源管理器的。
68.具体地,具体地,结合图4所示,图4为一个实施例中的分支事务回滚步骤的流程图,在该实施例中,分布式应用通过事务资源管理器发起分布式事务回滚,当中心1的分布式事务管理器宕机不可用时,无法匹配到本中心的分布式事务管理器,则会利用轮询算法路由到中心2的分布式事务管理器。当分支事务的回滚请求发到中心1的事务资源管理器1的时候,事务资源管理器1宕机不可用,该分支事务的回滚请求使用随机算法路由到事务资源管理器2。在事务资源管理器2收到分支事务的回滚请求后,开启本地事务,执行回滚日志sql,修改分支事务状态,提交本地事务;分布式事务管理器检查所有的分支事务回滚完成时,分布式事务管理器修改分布式事务状态,分布式事务结束。
69.在其中一个实施例中,上述分布式事务处理方法还包括:获取当前处理中心的中心标识,并将中心标识发送至分布式事务管理器,且接收分布式事务管理器对应的处理中心的中心标识;存储当前处理中心的中心标识以及分布式事务管理器对应的处理中心的中心标识。
70.具体地,结合图5所示,图5为一个实施例中的分布式事务启动过程的流程图,在该实施例中,启动阶段主要是包含事务资源管理器和分布式事务管理器的中心标识互换,同时登记分布式事务管理器的基本信息,其中,事务资源管理器集成在分布式应用服务器上。事务资源管理器发送自己的中心标识给分布式事务管理器,同理,分布式事务管理器也将自己的中心标识传给事务资源管理器,这样达成了初步的中心标识握手,若其中一个中心的分布式事务管理器或者事务资源管理器出现异常的时候,将更新已经交换的中心标识,从而保证了业务的连续性;分布式事务管理器将自己的信息登记在存储装置中,用于后续的分布式事务提交、回滚阶段。
71.在一个实施例中,如图6所示,提供了一种分布式事务处理方法,以该方法应用于图1中的分布式事务管理器为例进行说明,包括以下步骤:
72.s602:接收事务资源管理器发送的分布式事务处理请求,分布式事务处理请求是事务资源管理器判断对应的分布式事务管理器是否可用,且在当对应的分布式事务管理器不可用时,从本地存储的正常的分布式事务管理器中选择对应的另一分布式事务管理器,并发送至所选择的另一分布式事务管理器的;不同的分布式事务管理器位于不同的处理中心。
73.具体地,分布式事务处理请求可以包括分布式事务的提交请求和回滚请求,在此不做具体限制。其中对应的分布式事务管理器是指与事务资源管理器对应的,默认地,事务资源管理器对应的分布式事务管理器是位于同一个处理中心的。在其他的实施例中,事务资源管理器对应的默认的分布式事务管理器也可以位于不同的处理中心。
74.其中,分布式事务处理请求可以是由应用系统发送至事务资源管理器的,例如分布式事务处理请求或者是事务资源管理器主动发起的,例如分布式事务回滚请求。
75.在实际应用中,事务资源管理器预先存储了各个可用的分布式事务管理器,并且确定了默认的分布式事务管理器,这样事务资源管理器在接收到分布式事务处理请求后,然后判断默认的分布式事务管理器是否可用。
76.具体地,事务资源管理器在判定对应的分布式事务管理器不可用时,则按照预设的算法从本地存储的正常的分布式事务管理器中选择对应的另一分布式事务管理器,例如通过轮询的方式获取到另一个中心中的对应的分布式事务管理器,具体地,事务资源管理器先判定当前处理中心对应的分布式事务管理器集群中的服务器全部都不可用时,则可以获取到另外一个处理中心中的分布式事务管理器集群中可用的服务器,以对事务资源管理器的分布式事务进行处理。
77.其中分布式事务管理器对分布式事务进行处理包括根据分布式事务管理器的中心标识登记分布式事务信息、保存分支事务的信息,提交分布式事务的时候,通知各个事务资源管理器提交,回滚分布式事务的时候,通知各个事务资源管理器逆序回滚,这样能够保证一个中心的分布式事务管理器宕机时,业务的请求可以路由到另一个中心进行分布式事务的处理,保证了的业务的连续性,最终保证了数据一致性。
78.s604:根据分布式事务处理请求处理分布式事务。
79.具体地,分布式管理服务器所执行的分布式事务的处理主要是想事务管理器数据库中登记分布式事务信息,登记分支事务信息,并根据分支事务信息来更新分布式事务的状态,例如提交后更新成处理完成状态,回滚时更新成回滚完成状态。
80.上述分布式事务处理方法,在接收了分布式事务处理请求后,判断对应的分布式事务管理器是否可用,若是不可用,则本地存储的正常的分布式事务管理器中选择对应的另一分布式事务管理器,来处理分布式事务,这样能够保证一个中心的分布式事务管理器宕机时,业务的请求可以路由到另一个中心进行分布式事务的处理,保证了的业务的连续性,最终保证了数据一致性。
81.在其中一个实施例中,当分布式事务处理请求在提交阶段时,根据分布式事务处理请求处理分布式事务,包括:根据分布式事务处理请求登记分布式事务信息,并在登记成功后,向事务资源管理器发送分布式事务启动请求,分布式事务启动请求用于指示事务资源管理器开启本地分支事务,执行对应的业务处理,并将分支事务信息发送至所选择的另一分布式事务管理器;登记接收到的分支事务信息;接收事务资源管理器发送的分支事务
提交请求,并基于分支事务提交请求更新对应的分支事务的状态。
82.具体地,在一个分布式事务提交请求发送至中心1的分布式应用服务器上时,事务资源管理器开启分布式事务,此时中心1的分布式事务管理器宕机不可用了;该分布式事务提交请求的后续消息发送到分布式应用服务器时,事务资源管理器会判断自己和分布式事务管理器的中心标识是否一致(也即判断对应的分布式事务管理器是否可用),若不一致,根据读取到分布式事务服务器存储的信息,利用轮询算法路由到中心2的分布式事务管理器,这样中心1的事务资源管理器可以在中心2的分布式事务管理器开启分布式事务。
83.具体地,事务资源管理器1开启本地事务,执行业务sql,在中心2的分布式事务管理器注册一个分支,分支详情和分布式事务管理器的中心标识登记在分布式事务管理器的数据库,最后登记分支事务回滚日志,这样在事务资源管理器提交本地事务时,分布式事务管理器可以更新分布式事务管理器的数据库中的分布式事务的状态,例如在提交阶段修改为完成状态。
84.在其中一个实施例中,当分布式事务处理请求在回滚阶段时,根据分布式事务处理请求处理分布式事务,包括:向对应的事务资源管理器发送分支事务回滚请求,分支事务回滚请求用于指示对应的事务资源管理器开启本地分支事务的回滚,并提交本地分支事务的回滚结果。
85.具体地,分布式应用通过事务资源管理器发起分布式事务回滚,当中心1的分布式事务管理器宕机不可用时,无法匹配到本中心的分布式事务管理器,则会利用轮询算法路由到中心2的分布式事务管理器。在事务资源管理器1收到分支事务的回滚请求后,开启本地事务,执行回滚日志sql,修改分支事务状态,提交本地事务;分布式事务管理器检查所有的分支事务回滚完成时,分布式事务管理器修改分布式事务状态,分布式事务结束。
86.具体地,上述实施例中主要给出了分布式事务管理器故障时,则选择另一个中心的分布式事务管理器来继续管理分布式事务,从而能够保证一个中心的分布式事务管理器宕机时,业务的请求可以路由到另一个中心进行分布式事务的处理,保证了的业务的连续性,最终保证了数据一致性。在其中一个实施例中,上述分布式事务处理方法还包括:事务资源管理器宕机时,选择集群中另一事务资源管理器来处理宕机的事务资源管理器所要处理的分支事务,具体地,该方法包括:判断分支事务处理请求对应的事务资源管理器是否异常;当事务资源管理器异常时,将分支事务处理请求路由至对应中心的正常的事务资源管理器。
87.在其中一个实施例中,当分支事务处理请求在提交阶段时,将分支事务处理请求路由至对应中心的正常的事务资源管理器之后,包括:接收正常的事务资源管理器发送的分支事务提交请求,根据分支事务提交请求更新对应的分布式事务的事务状态。
88.具体地,以事务提交请求为例进行说明,事务资源管理器向所选择的分布式事务管理器发送事务提交请求,接收所选择的分布式事务管理器发送的事务提交请求,事务提交请求在其中任一个分支事务对应的事务资源管理器故障时,发送至按照预设算法选择的对应中心的正常的事务资源管理器,也就是说当其中某一个分布式应用服务器宕机不可用,分布式事务管理器使用随机算法选择另一个分布式应用服务器上的事务资源管理器发起提交。
89.在其中一个实施例中,当分支事务处理请求在回滚阶段时,将分支事务处理请求
路由至对应中心的正常的事务资源管理器,包括:将分支事务对应的回滚请求路由至对应中心的正常的事务资源管理器,分支事务对应的回滚请求用于指示对应中心的正常的事务资源管理器开启本地回滚事务,并提交本地回滚结果。
90.具体地,分布式应用通过事务资源管理器发起分布式事务回滚,当中心1的分布式事务管理器宕机不可用时,无法匹配到本中心的分布式事务管理器,则会利用轮询算法路由到中心2的分布式事务管理器。当分支事务的回滚请求发到中心1的事务资源管理器1的时候,事务资源管理器1宕机不可用,该分支事务的回滚请求使用随机算法路由到事务资源管理器2。在事务资源管理器2收到分支事务的回滚请求后,开启本地事务,执行回滚日志sql,修改分支事务状态,提交本地事务;分布式事务管理器检查所有的分支事务回滚完成时,分布式事务管理器修改分布式事务状态,分布式事务结束。
91.具体地,为了使得本领域技术人员充分理解本技术,结合图7至图9所示,其中图7为一个实施例中分布式事务启动阶段的时序图,图8为一个实施例中分布式事务提交阶段的时序图,图9为一个实施例中的分布式事务回滚阶段的时序图。本技术涉及到的分布式事务处理方法中的启动阶段、提交阶段、回滚阶段,每个阶段中有分布式事务管理器、事务资源管理器、分布式事务服务器、分布式应用服务器这几类实体装置,以下针对不同阶段的分布式事务处理方法做出说明。
92.在该实施例中,首先结合图7所示,启动阶段主要是包含事务资源管理器和分布式事务管理器的中心标识互换,同时登记分布式事务管理器的基本信息,其中,事务资源管理器集成在分布式应用服务器上。事务资源管理器发送自己的中心标识给分布式事务管理器,同理,分布式事务管理器也将自己的中心标识传给事务资源管理器,这样达成了初步的中心标识握手,若其中一个中心的分布式事务管理器或者事务资源管理器出现异常的时候,将更新已经交换的中心标识,从而保证了业务的连续性;分布式事务管理器将自己的信息登记在存储装置中,用于后续的分布式事务提交、回滚阶段。如图7中,示出了中心1的分布式事务管理器、事务资源管理器、事务管理器数据库存储装置、中心2的分布式事务管理器实体之间的交互过程。其中在启动阶段互相登记可用的分布式事务管理器和事务资源管理器。在运行过程中,会实时更新登记的信息,以保证可以正常使用的分布式事务管理器和事务资源管理器被正常登记。
93.结合图8所示,其中包括分布式应用模块(client),中心1的分布式事务管理器、事务资源管理器、分布式应用数据库(db1、db2)、事务管理器数据库(db)、中心2的分布式事务管理器实体之间的交互过程,分布式事务处理的提交阶段包含如下操作:
94.首先,前端默认将请求发到中心1,中心1的请求处理是由该中心的事务资源管理器处理,中心1的事务资源管理器涉及到的事务由中心1的分布式事务管理器处理。
95.当一个请求发送到中心1的分布式应用服务器上时,事务资源管理器开启分布式事务,此时中心1的分布式事务管理器宕机不可用了;该请求的后续消息发送到分布式应用服务器时,事务资源管理器会判断自己和分布式事务管理器的中心标识是否一致,若不一致,根据读取到分布式事务服务器存储的信息,利用轮询算法路由到中心2的分布式事务管理器。也就是说若中心1分布式事务管理器集群的节点都不可用的时候,会使用轮询算法选一个中心2的分布式事务管理器节点,来对中心1中对应的事务资源管理器接收的请求进行分布式事务管理。
96.这样中心1的事务资源管理器1在中心2的分布式事务管理器开启分布式事务,可以包括:事务资源管理器1开启本地事务,在分布式事务管理器注册一个分支,分支详情登记在存储装置,最后登记分支事务回滚日志;业务调用到事务资源管理器2,传播分布式事务唯一序列、中心标识,在事务资源管理器2开启本地事务,在分布式事务管理器注册一个分支,分支详情登记在存储装置,最后登记分支事务回滚日志。
97.中心1的事务资源管理器1在没有异常的情况下,发起分布式事务提交,包括:中心2的分布式事务管理器查询存储装置下属于该分布式事务的所有分支信息,逆序发起调用;当其中某一个分布式应用服务器宕机不可用,分布式事务管理器使用随机算法选择另一个分布式应用服务器上的事务资源管理器发起提交,提交完成所有的分支事务,分布式事务完成。
98.其中,上文中涉及到的注册是指事务资源管理器处理事务时,会将该事务作为一个分支事务登记在分布式事务管理器的数据库上。登记回滚是指该分支事务的反向执行日志会登记在分布式应用的数据库上。
99.具体地,结合图9所示,图9中包括中心1的分布式事务管理器、事务资源管理器1、事务资源管理器1’、事务资源管理器2、分布式应用数据库(db1、db2)、事务管理器数据库(db)、中心2的分布式事务管理器实体之间的交互过程。其中,事务资源管理器1和事务资源管理器1’操作相同的业务数据库,对于分布式事务管理器来说,他们可以表示成同一个事务资源名称;事务资源管理器1和事务资源管理器2操作不同的业务数据库,对于分布式事务管理器来说,其可以表示成两个事务资源名称。图9示出了分布式事务回滚阶段的时序图,回滚阶段包括如下操作:
100.分布式应用通过事务资源管理器发起分布式事务回滚,当中心1的分布式事务管理器宕机不可用时,无法匹配到本中心的分布式事务管理器,则会利用轮询算法路由到中心2的分布式事务管理器。当分支事务的回滚请求发到中心1的事务资源管理器1的时候,事务资源管理器1宕机不可用,该分支事务的回滚请求使用随机算法路由到事务资源管理器2。在事务资源管理器2收到分支事务的回滚请求后,开启本地事务,执行回滚日志sql,修改分支事务状态,提交本地事务;分布式事务管理器检查所有的分支事务回滚完成时,分布式事务管理器修改分布式事务状态,分布式事务结束。
101.也就是说分布式事务回滚的时候,根据登记的分布式事务以及分支事务信息进行逆序回滚,当回滚的请求发送到事务资源管理器1的时候,事务资源管理器1不可用,该请求会转发到事务资源管理器1`,其中,事务资源管理器1和事务资源管理器1`属于同一个集群,所以是同一个中心。
102.上述实施例中,本实施例中提供的分布式事务处理方法,保证了数据的一致性。分布式事务资源管理器集成在分布式应用服务器上,当开启、提交、回滚分布式事务的时候,提供了默认路由到本中心分布式事务管理器的策略,若无法匹配到本中心的时候,利用轮询或者随机算法转发到另一个中心的分布式事务管理器进行处理。分布式事务管理器集成在分布式事务服务器上,当扫描到所有的分支事务后,将各个分支事务的回滚消息转发到默认中心标识的事务资源管理器进行分支事务回滚,当该事务资源管理器集成的分布式应用服务器异常时,会利用随机算法转发到本中心其他的事务资源管理器进行分支回滚处理。
103.这样相比于现有的分布式事务处理方法,分布式事务中可以跨两个中心甚至多个中心,并且支持某个中心的分布式事务管理器出现异常,新的请求会自动路由到另一个中心的分布式事务管理器处理,当使用在不同的业务场景时,路由算法还可以配置和扩展,保证业务的可用性,最终保证了数据的一致性。
104.应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
105.基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的分布式事务处理方法的分布式事务处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个分布式事务处理装置实施例中的具体限定可以参见上文中对于分布式事务处理方法的限定,在此不再赘述。
106.在一个实施例中,如图10所示,提供了一种分布式事务处理装置,包括:第一接收模块1001和事务管理器选择模块1002,其中:
107.第一接收模块1001,用于接收分布式事务处理请求,并判断对应的分布式事务管理器是否可用;
108.事务管理器选择模块1002,用于当对应的分布式事务管理器不可用时,从本地存储的正常的分布式事务管理器中选择对应的另一分布式事务管理器;所选择的分布式事务管理器用于对事务资源管理器的分布式事务进行管理;不同的分布式事务管理器位于不同的处理中心。
109.在其中一个实施例中,上述分布式事务处理装置包括:
110.第一本地分支事务处理模块,用于开启本地分支事务,并执行对应的业务处理;
111.第一登记模块,用于向所选择的分布式事务管理器注册分支事务,以使得分布式事务管理器将注册的分支事务进行登记。
112.在其中一个实施例中,上述第一本地分支事务处理模块用于当业务处理调用另一事务资源管理器时,将所选的分布式事务管理器发送至另一事务资源管理器,以使得另一事务资源管理器开启对应的分支事务,并向所选择的分布式事务管理器注册分支事务,以使得分布式事务管理器将注册的分支事务进行登记。
113.在其中一个实施例中,上述分布式事务处理装置包括:
114.第三接收模块,用于接收所选择的分布式事务管理器发送的分支事务回滚请求;
115.第一回滚模块,用于开启本地分支事务的回滚,并修改分支事务状态后提交本地分支事务的回滚结果。
116.在其中一个实施例中,上述分布式事务处理装置包括:
117.第四接收模块,用于接收所选择的分布式事务管理器发送的分支事务处理请求,分支事务处理请求是在所选择的分布式事务管理器判断分支事务处理请求对应的事务资源管理器是否异常;当事务资源管理器异常时,将分支事务处理请求路由至对应中心的正
常的事务资源管理器。
118.在其中一个实施例中,上述分布式事务处理装置包括:
119.第一事务提交请求发送模块,用于向所选择的分布式事务管理器发送事务提交请求;
120.上述第四接收模块用于接收所选择的分布式事务管理器发送的事务提交请求,事务提交请求在其中任一个分支事务对应的事务资源管理器故障时,发送至按照预设算法选择的对应中心的正常的事务资源管理器。
121.在其中一个实施例中,上述分布式事务处理装置包括:
122.第一回滚请求发送模块,用于向分布式事务管理器发送事务回滚请求;
123.上述第四接收模块用于接收所选择的分布式事务管理器发送的分支事务回滚请求,分支事务回滚请求是分布式事务管理器在接收事务回滚请求时,判断分支事务对应的事务资源管理器是否异常,且当事务资源管理器异常时,将分支事务对应的分支回滚请求路由至对应中心的正常的事务资源管理器的。
124.在其中一个实施例中,上述分布式事务处理装置包括:
125.标识获取模块,用于获取当前处理中心的中心标识,并将中心标识发送至分布式事务管理器,且接收分布式事务管理器对应的处理中心的中心标识;
126.第一存储模块,用于存储当前处理中心的中心标识以及分布式事务管理器对应的处理中心的中心标识。
127.在一个实施例中,如图11所示,提供了一种分布式事务处理装置,包括:第二接收模块1101和分布式事务处理模块1102,其中:
128.第二接收模块1101,用于接收事务资源管理器发送的分布式事务处理请求,分布式事务处理请求是事务资源管理器判断对应的分布式事务管理器是否可用,且在当对应的分布式事务管理器不可用时,从本地存储的正常的分布式事务管理器中选择对应的另一分布式事务管理器,并发送至所选择的另一分布式事务管理器的;不同的分布式事务管理器位于不同的处理中心;
129.分布式事务处理模块1102,用于根据分布式事务处理请求处理分布式事务。
130.在其中一个实施例中,分布式事务处理模块1102用于根据分布式事务处理请求登记分布式事务信息,并在登记成功后,向事务资源管理器发送分布式事务启动请求,分布式事务启动请求用于指示事务资源管理器开启本地分支事务,执行对应的业务处理,并将分支事务信息发送至所选择的另一分布式事务管理器;登记接收到的分支事务信息;接收事务资源管理器发送的分支事务提交请求,并基于分支事务提交请求更新对应的分支事务的状态。
131.在其中一个实施例中,分布式事务处理模块1102用于向对应的事务资源管理器发送分支事务回滚请求,分支事务回滚请求用于指示对应的事务资源管理器开启本地分支事务的回滚,并提交本地分支事务的回滚结果。
132.在其中一个实施例中,上述装置还包括:
133.判断模块,用于判断分支事务处理请求对应的事务资源管理器是否异常;
134.路由模块,用于当事务资源管理器异常时,将分支事务处理请求路由至对应中心的正常的事务资源管理器。
135.在其中一个实施例中,上述装置还包括:
136.第五接收模块,用于接收正常的事务资源管理器发送的分支事务提交请求,根据分支事务提交请求更新对应的分布式事务的事务状态。
137.在其中一个实施例中,上述路由模块用于将分支事务对应的回滚请求路由至对应中心的正常的事务资源管理器,分支事务对应的回滚请求用于指示对应中心的正常的事务资源管理器开启本地回滚事务,并提交本地回滚结果。
138.上述分布式事务处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
139.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图12所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种分布式事务处理方法。
140.本领域技术人员可以理解,图12中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
141.在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
142.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
143.在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
144.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形
处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
145.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
146.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献