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

未命名 09-21 阅读:138 评论:0


1.本技术涉及事务处理技术领域,具体涉及一种分布式事务处理方法及系统。


背景技术:

2.分布式事务是指当事务的参与者、事务资源以及事务管理器存在于分布式系统的不同节点中时,需要有一个全局的事务来保证这些操作要么全部成功,要么全部失败,从而保证数据一致性。tcc(预处理try、确认confirm、撤销cancel)事务是目前常见的分布式事务的解决方案之一,其核心思路是将事务拆分成两阶段,其中一阶段为try阶段,事务的各参与方完成业务检查,预留并锁定资源,二阶段根据一阶段的结果决定,由tcc事务协调器协调,如果所有参与方在try阶段均成功则发起confirm阶段使用一阶段预留的资源,否则发起cancel阶段取消一阶段的预留资源。在目前的tcc事务系统中,一般流程为:客户端不断向服务端发送事务事件,事务管理器持久化事务事件到数据库,之后通过定时扫描数据库的方式判断事务状态并协调客户端发起事务回滚。可见,现有的事务系统高度依赖关系型数据库,而在大型分布式系统中,数据库是最容易到达性能瓶颈的系统,同时数据库难以进行水平扩展,并且其工作原理(如果有一项步骤失败,则前期执行的所有步骤工作均将回滚)严重影响业务的整体tps(transactionpersecond,每秒事务处理量)。


技术实现要素:

3.本技术实施例提供一种分布式事务处理方法,用以解决现有事务处理方法强依赖数据库,严重影响业务的整体tps的技术问题。
4.第一方面,本技术实施例提供一种分布式事务处理方法,包括:
5.接收由初始服务发出的tcc事务开启请求,向分布式消息中间件发送创建tcc事务事件,并向初始服务返回事务id;
6.接收子服务根据所述事务id发出的tcc子事务开启请求,并向分布式消息中间件发送创建tcc子事务事件;
7.接收子服务执行tcc子事务的一阶段事务后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务结束事件,并返回响应至初始服务;
8.接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的事件流处理结果,并根据所述事件流处理结果结束tcc事务。
9.在一个实施例中,所述接收子服务执行tcc子事务的一阶段事务后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务结束事件,具体为以下任一项:
10.接收子服务成功执行tcc子事务的一阶段事务后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务成功事件;
11.接收子服务执行tcc子事务的一阶段事务失败后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务失败事件。
12.在一个实施例中,所述接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的事件流处理结果,并根据所述事件流处理结果结束tcc事务,具体为以下任一项:
13.接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的tcc事务一阶段成功结果,根据所述tcc事务一阶段成功结果发起tcc二阶段确认消息,并在接收到tcc二阶段确认结果后结束tcc事务;
14.接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的tcc事务一阶段失败结果,根据所述tcc事务一阶段失败结果发起tcc二阶段撤销消息,并在接收到tcc二阶段撤销结果后结束tcc事务。
15.第二方面,本技术实施例提供一种分布式事务处理方法,包括:
16.接收分布式事务服务发送的创建tcc事务事件;
17.接收分布式事务服务发送的创建tcc子事务事件;
18.接收分布式事务服务发送的tcc子事务结束事件;
19.根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件,得到事件流处理结果;
20.将所述事件流处理结果发送至分布式事务服务,并将事务数据持久化至事务数据库。
21.在一个实施例中,所述根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件,得到事件流处理结果,包括:
22.根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件,得到全局事务状态;
23.根据所述全局事务状态处理事务数据,得到事件流处理结果。
24.在一个实施例中,所述根据所述全局事务状态处理事务数据,包括:
25.若所述全局事务状态为全局事务成功状态,则将成功状态的事务数据发送至回调事务主题以供分布式事务服务发起tcc事务二阶段回调,以及将成功状态的事务数据发送至成功事务主题以供进行数据持久化处理;
26.若所述全局事务状态为全局事务失败状态,则将失败状态的事务数据发送至回调事务主题,以供分布式事务服务发起tcc事务二阶段回调;
27.若所述全局事务状态为全局事务未完成状态,则将未完成状态的事务数据存储于本地存储库,以供进行数据后续处理。
28.第三方面,本技术实施例提供一种分布式事务处理系统,包括:初始服务、子服务、分布式事务服务、以及分布式消息及流处理组件,
29.所述初始服务分别与所述子服务以及所述分布式事务服务连接,所述子服务与所述分布式事务服务连接,所述分布式事务服务与所述分布式消息及流处理组件连接,所述分布式消息及流处理组件包括分布式消息中间件和流处理程序,所述分布式消息中间件和所述流处理程序之间呈绑定关系,
30.所述分布式事务服务用于执行第一方面所述的分布式事务处理方法,以及所述分布式消息及流处理组件用于执行第二方面所述的分布式事务处理方法。
31.第四方面,本技术实施例提供一种网络设备,包括存储器,收发机,处理器;
32.存储器,用于存储计算机程序;收发机,用于在所述处理器的控制下收发数据;处理器,用于读取所述存储器中的计算机程序并执行以下操作:
33.接收由初始服务发出的tcc事务开启请求,向分布式消息中间件发送创建tcc事务事件,并向初始服务返回事务id;
34.接收子服务根据所述事务id发出的tcc子事务开启请求,并向分布式消息中间件发送创建tcc子事务事件;
35.接收子服务执行tcc子事务的一阶段事务后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务结束事件,并返回响应至初始服务;
36.接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的事件流处理结果,并根据所述事件流处理结果结束tcc事务。
37.第五方面,本技术实施例提供一种网络设备,包括存储器,收发机,处理器;
38.存储器,用于存储计算机程序;收发机,用于在所述处理器的控制下收发数据;处理器,用于读取所述存储器中的计算机程序并执行以下操作:
39.接收由初始服务发出的tcc事务开启请求,向分布式消息中间件发送创建tcc事务事件,并向初始服务返回事务id;
40.接收子服务根据所述事务id发出的tcc子事务开启请求,并向分布式消息中间件发送创建tcc子事务事件;
41.接收子服务执行tcc子事务的一阶段事务后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务结束事件,并返回响应至初始服务;
42.接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的事件流处理结果,并根据所述事件流处理结果结束tcc事务。
43.第六方面,本技术实施例提供一种电子设备,包括处理器和存储有计算机程序的存储器,所述处理器执行所述程序时实现第一方面或第二方面所述的分布式事务处理方法。
44.第七方面,本技术实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现第一方面或第二方面所述的分布式事务处理方法。
45.本技术实施例提供的分布式事务处理方法及系统,通过引入分布式消息中间件,接收分布式事务服务发出的创建tcc事务事件、创建tcc子事务事件、以及tcc子事务结束事件,能够将事务的中间状态保存在消息队列中,并且在流处理系统根据创建tcc事务事件、创建tcc子事务事件、以及tcc子事务结束事件得到事件流处理结果后再结束tcc事务以及将事务数据持久化至事务数据库,能够避免对数据库的强依赖,为数据库的水平扩展提供空间,且缩短了业务流程,有效提升业务的整体tps。
附图说明
46.为了更清楚地说明本技术或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些
附图获得其他的附图。
47.图1是本技术实施例提供的一种分布式事务处理方法的流程示意图;
48.图2是本技术实施例提供的另一种分布式事务处理方法的流程示意图;
49.图3示出tcc事务事件流的处理流程;
50.图4示出tcc事务成功时的事务处理流程;
51.图5示出tcc事务失败时的事务处理流程;
52.图6是本技术实施例提供的一种网络侧设备的结构示意图;
53.图7是本技术实施例提供的另一种网络侧设备的结构示意图;
54.图8是本技术实施例提供的电子设备的结构示意图。
具体实施方式
55.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
56.图1为本技术实施例提供一种分布式事务处理方法的流程示意图。
57.参照图1,本技术实施例提供的一种分布式事务处理方法,可以包括:
58.s110、接收由初始服务发出的tcc事务开启请求,向分布式消息中间件发送创建tcc事务事件,并向初始服务返回事务id。
59.s120、接收子服务根据所述事务id发出的tcc子事务开启请求,并向分布式消息中间件发送创建tcc子事务事件。
60.s130、接收子服务执行tcc子事务的一阶段事务后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务结束事件,并返回响应至初始服务。
61.s140、接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的事件流处理结果,并根据所述事件流处理结果结束tcc事务。
62.需要说明的是,本发明提供的一种分布式事务处理方法的执行主体可以是任何网络侧设备,例如分布式事务服务。
63.在步骤s110中,分布式事务服务会接收由初始服务发出的tcc事务开启请求,向分布式消息中间件发送创建tcc事务事件,并向初始服务返回事务id。
64.需要说明的是,初始服务会向分布式事务服务发出tcc事务开启请求,然后由分布式事务服务接收,再向分布式消息中间件发送创建tcc事务事件,并向初始服务返回事务id。
65.在步骤s120中,分布式事务服务会接收子服务根据所述事务id发出的tcc子事务开启请求,并向分布式消息中间件发送创建tcc子事务事件。
66.需要说明的是,根据事务id可以设置若干子服务分别按照时间顺序执行子事务。
67.在步骤s130中,分布式事务服务会接收子服务执行tcc子事务的一阶段事务后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务结束事件,并返回响应至初始服务。
68.需要说明的是,tcc子事务的一阶段事务为tcc子事务的try预处理阶段事务。基于分布式消息中间件中的记录信息,在下一次进行相关事务事件的try阶段处理时,优先执行失败子事务id对应的子事务try阶段,并在这些前期失败的子事务try阶段执行成功后再执行其它子事务的try阶段。
69.需要说明的是,每一个子服务执行完毕tcc子事务的一阶段事务后,均会向分布式事务服务发出tcc事务结束请求,再由分布式事务服务向分布式消息中间件发送对应的tcc子事务结束事件。
70.具体的,所述接收子服务执行tcc子事务的一阶段事务后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务结束事件,可以为以下任一项:
71.接收子服务成功执行tcc子事务的一阶段事务后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务成功事件;
72.接收子服务执行tcc子事务的一阶段事务失败后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务失败事件。
73.需要说明的是,子服务在执行tcc子事务的一阶段事务后,会根据执行结果的状态(执行成功或执行失败)来向分布式事务服务发出tcc事务结束请求,再由分布式事务服务向分布式消息中间件发送对应的tcc子事务结束事件。
74.在步骤s140中,分布式事务服务会接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的事件流处理结果,并根据所述事件流处理结果结束tcc事务。
75.需要说明的是,在流处理系统根据创建tcc事务事件、创建tcc子事务事件、以及tcc子事务结束事件处理事务事件流,并得到事件流处理结果后,分布式事务服务会接收并根据事件流处理结果发起tcc二阶段事务消息,并在得到tcc二阶段事务消息的反馈结果后结束tcc事务。
76.具体的,所述接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的事件流处理结果,并根据所述事件流处理结果结束tcc事务,可以为以下任一项:
77.接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的tcc事务一阶段成功结果,根据所述tcc事务一阶段成功结果发起tcc二阶段确认消息,并在接收到tcc二阶段确认结果后结束tcc事务;
78.接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的tcc事务一阶段失败结果,根据所述tcc事务一阶段失败结果发起tcc二阶段撤销消息,并在接收到tcc二阶段撤销结果后结束tcc事务。
79.本技术实施例提供的一种分布式事务处理方法通过引入分布式消息中间件,将事务的中间状态保存在消息队列中,在事务最终状态明确后通过批量写入的方式持久化到数据库,解决了数据库性能瓶颈的问题;避免对数据库的强依赖,解决了数据库难以水平扩展的问题;将二阶段事务处理异步化,缩短了业务流程,有效提升业务的整体tps。
80.图2为本技术实施例提供的另一种分布式事务处理方法的流程示意图。
81.参照图2,本技术实施例提供的另一种分布式事务处理方法,可以包括:
82.s110’、接收分布式事务服务发送的创建tcc事务事件。
83.s120’、接收分布式事务服务发送的创建tcc子事务事件。
84.s130’、接收分布式事务服务发送的tcc子事务结束事件。
85.s140’、根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件,得到事件流处理结果。
86.s150’、将所述事件流处理结果发送至分布式事务服务,并将事务数据持久化至事务数据库。
87.需要说明的是,本发明提供的另一种分布式事务处理方法的执行主体可以是任何网络侧设备,例如分布式消息及流处理组件,所述分布式消息及流处理组件包括分布式消息中间件和流处理程序,流处理程序形成所述流处理系统,所述分布式消息中间件和所述流处理程序之间呈强绑定关系。
88.在步骤s110’中,分布式消息及流处理组件会接收分布式事务服务发送的创建tcc事务事件。
89.需要说明的是,其中由分布式消息中间件接收分布式事务服务发送的创建tcc事务事件。
90.在步骤s120’中,分布式消息及流处理组件会接收分布式事务服务发送的创建tcc子事务事件。
91.需要说明的是,其中由分布式消息中间件接收分布式事务服务发送的创建tcc子事务事件。
92.在步骤s130’中,分布式消息及流处理组件会接收分布式事务服务发送的tcc子事务结束事件。
93.需要说明的是,其中由分布式消息中间件接收分布式事务服务发送的tcc子事务结束事件。
94.在步骤s140’中,分布式消息及流处理组件会根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件,得到事件流处理结果。
95.需要说明的是,分布式消息中间件接收创建tcc事务事件、创建tcc子事务事件、以及tcc子事务结束事件后,会由流处理程序处理事务事件流,并得到事件流处理结果。
96.具体的,所述根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件,得到事件流处理结果,包括:
97.根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件,得到全局事务状态;
98.根据所述全局事务状态处理事务数据,得到事件流处理结果。
99.进一步的,所述根据所述全局事务状态处理事务数据,可以包括:
100.若所述全局事务状态为全局事务成功状态,则将成功状态的事务数据发送至回调事务主题以供分布式事务服务发起tcc事务二阶段回调,以及将成功状态的事务数据发送至成功事务主题以供进行数据持久化处理;
101.若所述全局事务状态为全局事务失败状态,则将失败状态的事务数据发送至回调事务主题,以供分布式事务服务发起tcc事务二阶段回调;
102.若所述全局事务状态为全局事务未完成状态,则将未完成状态的事务数据存储于本地存储库,以供进行数据后续处理。
103.需要说明的是,全局事务失败状态包括全局事务超时或全局事务失败的状态。当全局事务状态为全局事务成功状态时,分布式事务服务会发起tcc事务二阶段回调中的confirm确认事务消息;当全局事务状态为全局事务失败状态时,分布式事务服务会发起tcc事务二阶段回调中的cancel撤销事务消息,然后在收到tcc二阶段事务消息的反馈结果后结束tcc事务。
104.在步骤s150’中,分布式消息及流处理组件会将所述事件流处理结果发送至分布式事务服务,并将事务数据持久化至事务数据库。
105.需要说明的是,其中流处理程序会在分布式事务服务结束tcc事务后将对应状态的事务数据持久化至事务数据库(例如关系型数据库)。
106.需要说明的是,本发明实施例提供的分布式事务处理方法通过增加分布式消息中间件(例如kafka、pulsa等)以及流处理程序(例如kafkastream、flink等)实现,其中,分布式消息中间件负责持久化事务数据(如事务消息),保证消息的持久化及消费的唯一性;流处理程序负责业务逻辑,实现tcc分布式事务处理的流程。而事务数据库(关系型数据库)提供成功和失败等到达最终状态的事务日志的持久化。
107.为了更加清晰地阐述本发明实施例提供的分布式事务处理方法,现结合图3-5从整体上进一步进行描述。
108.本发明实施例提供的分布式事务处理方法,将流处理的技术引入用于保证分布式事务的一致性。
109.(一)tcc分布式事务事件流处理流程
110.参见图3,整个流处理程序主要分为四部分,分布式事务服务通过流处理系统异步消费事务事件流并得到事件流处理结果。
111.1.1、事务事件流处理
112.(1)服务端程序订阅事务事件主题开始事务事件的流处理流程;
113.(2)同一个全局tcc事务的事务id相同,故按事务id分组聚合,每个事务id聚合后形成一组事务事件集合;
114.(3)将聚合后的事务事件集合存储在本地存储(leveldb或内存)中;
115.(4)根据事务事件集合的状态判断全局事务状态;
116.(5)若全局事务状态为全局事务成功状态,则将成功事务的数据发送到成功事务主题;若全局事务状态为全局事务失败状态或全局事务超时状态,则将失败事务或超时事务的数据发送到失败事务主题;若全局事务状态为全局事务未完成状态,则将数据留存在本地存储中等待数据后续处理。
117.1.2、成功事务流处理
118.(1)服务端程序订阅成功事务主题开始成功事务的流处理流程;
119.(2)成功事务数据加工(设置成功事务数据状态等相关字段等),将加工后的成功事务数据发送至回调事务主题以供分布式事务服务发起tcc二阶段回调,并且将加工后的成功事务数据存储到成功事务的本地存储中;
120.(3)流处理程序批量将本地存储的事务集合写入事务数据库。
121.1.3、失败事务流处理
122.(1)服务端程序订阅失败事务主题开始失败事务的流处理流程;
123.(2)失败事务数据加工(设置失败事务数据状态等相关字段等),将加工后的失败事务数据(例如事务id)发送到回调事务主题以供分布式事务服务发起tcc二阶段回调。
124.(3)基于分布式消息中间件中的记录信息,在下一次进行相关事务事件的try阶段处理时,优先执行失败子事务id对应的子事务try阶段,并在这些前期失败的子事务try阶段执行成功后再执行其它子事务的try阶段。
125.1.4、回调事务流处理
126.(1)服务端程序订阅回调事务主题开始回调事务的流处理流程;
127.(2)回调事务数据加工(例如设置回调事务数据状态等相关字段等),据事务状态判断二阶段发起confirm确认事务消息还是cancel撤销事务消息;
128.(3)发起tcc二阶段回调事务消息(confirm确认事务消息或cancel撤销事务消息)后,若业务端返回的tcc二阶段事务消息的反馈结果为二阶段回调成功,则更新事务状态,将事务集合写入事务数据库,若业务端返回的tcc二阶段事务消息的反馈结果为二阶段回调失败,则将事务id重新写回回调事务主题等待下次处理。
129.(二)当tcc事务成功时的事务处理流程
130.当tcc事务成功时,事务处理流程如图4所示。
131.2.1、初始服务向分布式事务服务发送tcc事务开启请求,分布式事务服务收到请求后向分布式消息中间件发送创建tcc事务事件(创建tcc全局事务事件),成功后向初始服务返回事务id。
132.2.2、按业务流程,子服务1向分布式事务服务发送tcc子事务1开启请求,分布式事务服务收到请求后向分布式消息中间件发送创建tcc子事务1事件,成功后返回;之后子服务1开始执行tcc子事务1的try阶段事务事件,tcc子事务1的try阶段事务事件执行成功后,子服务1向分布式事务服务发送tcc子事务1结束请求,分布式事务服务收到请求后向分布式消息中间件发送tcc子事务1成功事件。
133.2.3、子服务2向分布式事务服务发送tcc子事务2开启请求,分布式事务服务收到请求后向分布式消息中间件发送创建tcc子事务2事件,成功后返回;之后子服务2开始执行子事务2的try阶段事务事件,子事务2的try阶段事务事件执行成功后,子服务2向分布式事务服务发送tcc子事务2结束请求,分布式事务服务收到请求后向分布式消息中间件发送tcc子事务2成功事件。
134.2.4、初始服务在tcc子事务全部执行完毕后结束业务端的处理,成功返回。
135.2.5、分布式事务服务通过流处理程序异步消费事务事件流并得到事件流处理结果,并根据事件流处理结果依次向客户端发起tcc二阶段回调事务消息(confirm确认事务消息),客户端将tcc二阶段事务消息的反馈结果(二阶段回调成功)反馈给分布式事务服务,分布式事务服务成功结束整个tcc事务,流处理程序将成功状态的tcc事务及子事务数据持久化进事务数据库(关系型数据库)。
136.(三)当tcc事务失败时的事务处理流程
137.当tcc事务失败时,事务处理流程如图5所示。
138.3.1、和成功流程类似,假设在子事务2时业务失败,则整个tcc事务失败,初始服务在子事务全部执行完毕后结束业务端的处理,tcc全局事务失败。
139.3.2、分布式事务服务通过流处理程序异步消费事务事件流并得到事件流处理结
果,根据事件流处理结果依次向客户端发起tcc二阶段回调事务消息(cancel撤销事务消息),客户端将tcc二阶段事务消息的反馈结果(二阶段回调成功)反馈给分布式事务服务,分布式事务服务成功结束整个tcc事务,流处理程序将失败状态的tcc事务及子事务数据持久化进事务数据库(关系型数据库)。
140.本技术实施例提供的分布式事务处理方法,将流处理的技术引入用于保证分布式事务的一致性,能够带来至少如下优势。
141.优势一:分布式事务服务的实例本身没有状态,依托于带副本机制的消息队列,如kafka的replication机制,通过本技术实施例提供的分布式事务处理方法实现分布式事务服务能够很简单地实现高可用。
142.优势二:通过在发送至消息队列时进行分片,如kafka的topic分片机制,可以预先规划对事务数据的分片以提高系统并行度,当系统容量不足时,扩展消息队列的集群即可实现不停机扩容并迁移数据。
143.优势三:实现本技术实施例提供的分布式事务处理方法的系统在接收客户端事务事件时,直接发送到kafka集群,再通过流处理的方式实现事务状态的判断,在处理成功前不需要依赖数据库或扫描数据,全部中间数据都在内存中计算,所有的中间数据都持久化在kafka。在处理tcc事务时,一阶段try结束后直接返回应用,无需等待二阶段结束,二阶段异步处理,有效提高业务整体tps。
144.本技术实施例还提供一种分布式事务处理系统,包括:初始服务、子服务、分布式事务服务、以及分布式消息及流处理组件,
145.所述初始服务分别与所述子服务以及所述分布式事务服务连接,所述子服务与所述分布式事务服务连接,所述分布式事务服务与所述分布式消息及流处理组件连接,所述分布式消息及流处理组件包括分布式消息中间件和流处理程序,所述分布式消息中间件和所述流处理程序之间呈绑定关系,
146.所述分布式事务服务用于执行上述本技术实施例提供的一种分布式事务处理方法(图1所示的分布式事务处理方法),以及所述分布式消息及流处理组件用于上述本技术实施例提供的另一种分布式事务处理方法(图2所示的分布式事务处理方法)。
147.图6为根据本技术实施例提供的一种网络设备的结构示意图,参照图6,本技术实施例提供的一种网络设备,可以包括:存储器610,收发机620以及处理器630;
148.存储器610用于存储计算机程序;收发机620,用于在所述处理器630的控制下收发数据;处理器630,用于读取所述存储器610中的计算机程序并执行以下操作:
149.接收由初始服务发出的tcc事务开启请求,向分布式消息中间件发送创建tcc事务事件,并向初始服务返回事务id;
150.接收子服务根据所述事务id发出的tcc子事务开启请求,并向分布式消息中间件发送创建tcc子事务事件;
151.接收子服务执行tcc子事务的一阶段事务后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务结束事件,并返回响应至初始服务;
152.接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的事件流处理结果,并根据所述事件流处理结果结束tcc事务。
153.其中,在图6中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器630代表的一个或多个处理器和存储器610代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发机620可以是多个元件,即包括发送机和接收机,提供用于在传输介质上与各种其他装置通信的单元。处理器630负责管理总线架构和通常的处理,存储器610可以存储处理器630在执行操作时所使用的数据。
154.在一种实施例中,所述接收子服务执行tcc子事务的一阶段事务后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务结束事件,具体为以下任一项:
155.接收子服务成功执行tcc子事务的一阶段事务后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务成功事件;
156.接收子服务执行tcc子事务的一阶段事务失败后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务失败事件。
157.在一种实施例中,所述接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的事件流处理结果,并根据所述事件流处理结果结束tcc事务,具体为以下任一项:
158.接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的tcc事务一阶段成功结果,根据所述tcc事务一阶段成功结果发起tcc二阶段确认消息,并在接收到tcc二阶段确认结果后结束tcc事务;
159.接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的tcc事务一阶段失败结果,根据所述tcc事务一阶段失败结果发起tcc二阶段撤销消息,并在接收到tcc二阶段撤销结果后结束tcc事务。
160.图7为根据本技术实施例提供的另一种网络设备的结构示意图,参照图7,本技术实施例提供的另一种网络设备,可以包括:存储器710,收发机720以及处理器730;
161.存储器710用于存储计算机程序;收发机720,用于在所述处理器730的控制下收发数据;处理器730,用于读取所述存储器710中的计算机程序并执行以下操作:
162.接收分布式事务服务发送的创建tcc事务事件;
163.接收分布式事务服务发送的创建tcc子事务事件;
164.接收分布式事务服务发送的tcc子事务结束事件;
165.根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件,得到事件流处理结果;
166.将所述事件流处理结果发送至分布式事务服务,并将事务数据持久化至事务数据库。
167.在一种实施例中,所述根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件,得到事件流处理结果,包括:
168.根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件,得到全局事务状态;
169.根据所述全局事务状态处理事务数据,得到事件流处理结果。
170.在一种实施例中,所述根据所述全局事务状态处理事务数据,包括:
171.若所述全局事务状态为全局事务成功状态,则将成功状态的事务数据发送至回调事务主题以供分布式事务服务发起tcc事务二阶段回调,以及将成功状态的事务数据发送至成功事务主题以供进行数据持久化处理;
172.若所述全局事务状态为全局事务失败状态,则将失败状态的事务数据发送至回调事务主题,以供分布式事务服务发起tcc事务二阶段回调;
173.若所述全局事务状态为全局事务未完成状态,则将未完成状态的事务数据存储于本地存储库,以供进行数据后续处理。
174.在此需要说明的是,本技术实施例提供的终端以及网络设备,能够实现上述方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
175.图8示例了一种电子设备的实体结构示意图,如图8所示,该电子设备可以包括:处理器(processor)810、通信接口(communication interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的计算机程序,以执行分布式事务处理方法的步骤,例如包括:
176.接收由初始服务发出的tcc事务开启请求,向分布式消息中间件发送创建tcc事务事件,并向初始服务返回事务id;
177.接收子服务根据所述事务id发出的tcc子事务开启请求,并向分布式消息中间件发送创建tcc子事务事件;
178.接收子服务执行tcc子事务的一阶段事务后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务结束事件,并返回响应至初始服务;
179.接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的事件流处理结果,并根据所述事件流处理结果结束tcc事务。
180.还可以执行另一种分布式事务处理方法的步骤,例如包括:
181.接收分布式事务服务发送的创建tcc事务事件;
182.接收分布式事务服务发送的创建tcc子事务事件;
183.接收分布式事务服务发送的tcc子事务结束事件;
184.根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件,得到事件流处理结果;
185.将所述事件流处理结果发送至分布式事务服务,并将事务数据持久化至事务数据库。
186.此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种
可以存储程序代码的介质。
187.另一方面,本技术实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各实施例所提供的分布式事务处理方法的步骤,例如包括:
188.接收由初始服务发出的tcc事务开启请求,向分布式消息中间件发送创建tcc事务事件,并向初始服务返回事务id;
189.接收子服务根据所述事务id发出的tcc子事务开启请求,并向分布式消息中间件发送创建tcc子事务事件;
190.接收子服务执行tcc子事务的一阶段事务后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务结束事件,并返回响应至初始服务;
191.接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的事件流处理结果,并根据所述事件流处理结果结束tcc事务。
192.还可以执行另一种分布式事务处理方法的步骤,例如包括:
193.接收分布式事务服务发送的创建tcc事务事件;
194.接收分布式事务服务发送的创建tcc子事务事件;
195.接收分布式事务服务发送的tcc子事务结束事件;
196.根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件,得到事件流处理结果;
197.将所述事件流处理结果发送至分布式事务服务,并将事务数据持久化至事务数据库。
198.另一方面,本技术实施例还提供一种处理器可读存储介质,所述处理器可读存储介质存储有计算机程序,所述计算机程序用于使处理器执行上述各实施例所提供的分布式事务处理方法的步骤,例如包括:
199.接收由初始服务发出的tcc事务开启请求,向分布式消息中间件发送创建tcc事务事件,并向初始服务返回事务id;
200.接收子服务根据所述事务id发出的tcc子事务开启请求,并向分布式消息中间件发送创建tcc子事务事件;
201.接收子服务执行tcc子事务的一阶段事务后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务结束事件,并返回响应至初始服务;
202.接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的事件流处理结果,并根据所述事件流处理结果结束tcc事务。
203.还可以执行另一种分布式事务处理方法的步骤,例如包括:
204.接收分布式事务服务发送的创建tcc事务事件;
205.接收分布式事务服务发送的创建tcc子事务事件;
206.接收分布式事务服务发送的tcc子事务结束事件;
207.根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事
件,得到事件流处理结果;
208.将所述事件流处理结果发送至分布式事务服务,并将事务数据持久化至事务数据库。
209.所述处理器可读存储介质可以是处理器能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(mo)等)、光学存储器(例如cd、dvd、bd、hvd等)、以及半导体存储器(例如rom、eprom、eeprom、非易失性存储器(nand flash)、固态硬盘(ssd))等。
210.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
211.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
212.最后应说明的是:以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。

技术特征:
1.一种分布式事务处理方法,其特征在于,包括:接收由初始服务发出的tcc事务开启请求,向分布式消息中间件发送创建tcc事务事件,并向初始服务返回事务id;接收子服务根据所述事务id发出的tcc子事务开启请求,并向分布式消息中间件发送创建tcc子事务事件;接收子服务执行tcc子事务的一阶段事务后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务结束事件,并返回响应至初始服务;接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的事件流处理结果,并根据所述事件流处理结果结束tcc事务。2.根据权利要求1所述的分布式事务处理方法,其特征在于,所述接收子服务执行tcc子事务的一阶段事务后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务结束事件,具体为以下任一项:接收子服务成功执行tcc子事务的一阶段事务后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务成功事件;接收子服务执行tcc子事务的一阶段事务失败后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务失败事件。3.根据权利要求2所述的分布式事务处理方法,其特征在于,所述接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的事件流处理结果,并根据所述事件流处理结果结束tcc事务,具体为以下任一项:接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的tcc事务一阶段成功结果,根据所述tcc事务一阶段成功结果发起tcc二阶段确认消息,并在接收到tcc二阶段确认结果后结束tcc事务;接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的tcc事务一阶段失败结果,根据所述tcc事务一阶段失败结果发起tcc二阶段撤销消息,并在接收到tcc二阶段撤销结果后结束tcc事务。4.一种分布式事务处理方法,其特征在于,包括:接收分布式事务服务发送的创建tcc事务事件;接收分布式事务服务发送的创建tcc子事务事件;接收分布式事务服务发送的tcc子事务结束事件;根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件,得到事件流处理结果;将所述事件流处理结果发送至分布式事务服务,并将事务数据持久化至事务数据库。5.根据权利要求4所述的分布式事务处理方法,其特征在于,所述根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件,得到事件流处理结果,包括:根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件,得到全局事务状态;根据所述全局事务状态处理事务数据,得到事件流处理结果。
6.根据权利要求5所述的分布式事务处理方法,其特征在于,所述根据所述全局事务状态处理事务数据,包括:若所述全局事务状态为全局事务成功状态,则将成功状态的事务数据发送至回调事务主题以供分布式事务服务发起tcc事务二阶段回调,以及将成功状态的事务数据发送至成功事务主题以供进行数据持久化处理;若所述全局事务状态为全局事务失败状态,则将失败状态的事务数据发送至回调事务主题,以供分布式事务服务发起tcc事务二阶段回调;若所述全局事务状态为全局事务未完成状态,则将未完成状态的事务数据存储于本地存储库,以供进行数据后续处理。7.一种分布式事务处理系统,其特征在于,包括:初始服务、子服务、分布式事务服务、以及分布式消息及流处理组件,所述初始服务分别与所述子服务以及所述分布式事务服务连接,所述子服务与所述分布式事务服务连接,所述分布式事务服务与所述分布式消息及流处理组件连接,所述分布式消息及流处理组件包括分布式消息中间件和流处理程序,所述分布式消息中间件和所述流处理程序之间呈绑定关系,所述分布式事务服务用于执行权利要求1-3任一项所述的分布式事务处理方法,以及所述分布式消息及流处理组件用于执行权利要求4-6任一项所述的分布式事务处理方法。8.一种网络设备,其特征在于,包括存储器,收发机,处理器;存储器,用于存储计算机程序;收发机,用于在所述处理器的控制下收发数据;处理器,用于读取所述存储器中的计算机程序并执行以下操作:接收由初始服务发出的tcc事务开启请求,向分布式消息中间件发送创建tcc事务事件,并向初始服务返回事务id;接收子服务根据所述事务id发出的tcc子事务开启请求,并向分布式消息中间件发送创建tcc子事务事件;接收子服务执行tcc子事务的一阶段事务后发出的tcc事务结束请求,向分布式消息中间件发送tcc子事务结束事件,并返回响应至初始服务;接收由流处理系统发出的根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件得到的事件流处理结果,并根据所述事件流处理结果结束tcc事务。9.一种网络设备,其特征在于,包括存储器,收发机,处理器;存储器,用于存储计算机程序;收发机,用于在所述处理器的控制下收发数据;处理器,用于读取所述存储器中的计算机程序并执行以下操作:接收分布式事务服务发送的创建tcc事务事件;接收分布式事务服务发送的创建tcc子事务事件;接收分布式事务服务发送的tcc子事务结束事件;根据所述创建tcc事务事件、所述创建tcc子事务事件、以及所述tcc子事务结束事件,得到事件流处理结果;将所述事件流处理结果发送至分布式事务服务,并将事务数据持久化至事务数据库。10.一种电子设备,包括处理器和存储有计算机程序的存储器,其特征在于,所述处理
器执行所述计算机程序时实现权利要求1至6任一项所述的分布式事务处理方法。

技术总结
本申请提供分布式事务处理方法及系统。所述方法包括:分布式事务服务接收由初始服务发出的TCC事务开启请求,向分布式消息中间件发送创建TCC事务事件,并向初始服务返回事务ID;分布式事务服务接收子服务发出的TCC子事务开启请求,并向分布式消息中间件发送创建TCC子事务事件;分布式事务服务接收子服务执行TCC子事务的一阶段事务后发出的TCC事务结束请求,向分布式消息中间件发送TCC子事务结束事件;分布式事务服务接收由流处理系统发出的事件流处理结果,并根据事件流处理结果结束TCC事务。本申请实施例提供的分布式事务处理方法及系统,能够避免对数据库的强依赖,有效提升业务的整体TPS。业务的整体TPS。业务的整体TPS。


技术研发人员:李高翔 庄双林
受保护的技术使用者:中移电子商务有限公司 中国移动通信集团有限公司
技术研发日:2022.03.11
技术公布日:2023/9/20
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐