基于可编程交换机的分布式事务处理方法、装置和系统

文档序号:31014537发布日期:2022-08-05 18:18阅读:94来源:国知局
基于可编程交换机的分布式事务处理方法、装置和系统

1.本技术涉及分布式事务技术领域,尤其涉及一种基于可编程交换机的分布式事务处理方法、装置和系统。


背景技术:

2.事务是用户并发访问数据库的运算单元,该运算单元具有原子性、一致性、隔离性、持久性的特征。随着各种应用数据量的增大,数据必须被划分到不同的服务节点,涉及到多个服务节点参与的事务被称为分布式事务。分布式事务能够保证多个服务节点之间数据的一致性。
3.目前,在分布式事务执行的过程中,需要参与事务的多个服务节点直接和客户端节点进行多个事务处理阶段的网络交互来完成。在每个事务处理阶段的网络交互中,客户端节点都需要根据当前事务处理阶段的网络交互结果来发起下一事务处理阶段的网络交互。每个事务处理阶段均由客户端节点发起和结束,增加了分布式事务处理的时延,导致了分布式事务处理性能低下。


技术实现要素:

4.本技术提供一种基于可编程交换机的分布式事务处理方法、装置和系统,以解决分布式事务处理性能低下的问题。
5.第一方面,本技术提供一种基于可编程交换机的分布式事务处理方法,应用于分布式事务处理系统,分布式事务处理系统包括可编程交换机、客户端节点、多个服务节点,该方法包括:
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.接收模块,用于接收分布式事务的参与当前事务处理阶段的至少一个服务节点发送的第一消息,当前事务处理阶段为分布式事务中多个依次处理的事务处理阶段中的一个事务处理阶段,第一消息包括分布式事务的标识、消息个数阈值、用于指示当前事务处理阶段的处理结果为成功或失败的类型信息、目标节点的标识。
33.发送模块,用于若接收模块接收到针对非末次事务处理阶段的第一消息的个数等于消息个数阈值,且每个第一消息中的类型信息指示为成功,第一消息中的目标节点的标识为参与下一事务处理阶段的至少一个服务节点的标识,则根据参与下一事务处理阶段的至少一个服务节点的标识,向参与下一事务处理阶段的至少一个服务节点发送第二消息,第二消息用于指示进行下一事务处理阶段;以及若接收模块接收到的针对末次事务处理阶段的第一消息的个数等于相应的消息个数阈值,且每个第一消息中的类型信息指示为成功,或者,若接收模块接收到当前事务处理阶段的第一消息中的类型信息指示为失败,则向客户端节点发送分布式事务处理结果。
34.可选的,若当前事务处理阶段为多个依次处理的事务处理阶段中的末次事务处理阶段,则第一消息中目标节点的标识为客户端节点的标识。
35.发送模块,具体用于:
36.根据第一消息中包括的客户端节点的标识,向客户端节点发送分布式事务处理结果。
37.可选的,发送模块还用于:
38.若接收模块接收到的第一消息中的类型信息指示为失败,第一消息中的目标节点的标识为参与回滚事务处理阶段的至少一个服务节点的标识,则向参与回滚事务处理阶段的至少一个服务节点发送第三消息,第三消息用于指示进行回滚事务处理阶段。
39.可选的,多个依次处理的事务处理阶段为持锁阶段、版本检查阶段、写数据阶段。
40.可选的,可编程交换机中包括多个交换处理单元,每个交换处理单元包括基于可编程交换机的分布式事务处理装置。
41.第五方面,本技术提供一种基于可编程交换机的分布式事务处理装置,应用于分布式事务处理系统,分布式事务处理系统包括可编程交换机、客户端节点、多个服务节点,分布式事务处理装置包括在客户端节点中,该装置包括:
42.发送模块,用于向每个服务节点发送第四消息,第四消息包括分布式事务的标识、
分布式事务中多个依次处理的事务处理阶段的标识以及参与各个事务处理阶段的至少一个服务节点的标识,每个事务处理阶段对应的消息个数阈值,第四消息还用于指示启动处理首次事务处理阶段。
43.接收模块,用于接收在末次事务处理阶段处理完成后,或者,在当前事务处理阶段的第一消息中的类型信息指示为失败时,可编程交换机发送的分布式事务处理结果。
44.可选的,第四消息还用于指示在每个事务处理阶段的处理结果为失败后需要执行回滚事务处理阶段的至少一个服务节点。
45.第六方面,本技术提供一种基于可编程交换机的分布式事务处理装置,应用于分布式事务处理系统,分布式事务处理系统包括可编程交换机、客户端节点、多个服务节点,分布式事务处理装置包括在服务节点中,该装置包括:
46.接收模块,用于接收客户端节点发送的第四消息,第四消息包括分布式事务的标识、分布式事务中多个依次处理的事务处理阶段的标识以及参与各个事务处理阶段的至少一个服务节点的标识、每个事务处理阶段对应的消息个数阈值,第四消息还用于指示启动处理首次事务处理阶段。
47.处理模块,用于根据第四消息,依次处理当前事务处理阶段,当前事务处理阶段为分布式事务中多个依次处理的事务处理阶段中的一个事务处理阶段。
48.发送模块,用于向可编程交换机发送第一消息,第一消息包括分布式事务的标识、消息个数阈值、用于指示当前事务处理阶段的处理结果为成功或失败的类型信息、目标节点的标识。
49.其中,在当前事务处理阶段为非末次事务处理阶段且第一消息中的类型信息指示为成功时,目标节点的标识为参与下一事务处理阶段的至少一个服务节点的标识。
50.在当前事务处理阶段为末次事务处理阶段且第一消息中的类型信息指示为成功时,目标节点的标识为客户端节点的标识。
51.可选的,接收模块还用于:
52.在发送模块向可编程交换机发送第一消息之后,接收可编程交换机发送的第二消息,第二消息用于指示进行下一事务处理阶段。
53.处理模块,还用于处理下一事务处理阶段。
54.可选的,第四消息还用于指示在每个事务处理阶段的处理结果为失败后需要执行回滚事务处理阶段的至少一个服务节点。
55.在第一消息中的类型信息指示为失败时,目标节点的标识为参与回滚事务处理阶段的至少一个服务节点的标识。
56.可选的,接收模块还用于:
57.接收可编程交换机发送的第三消息,第三消息用于指示进行回滚事务处理阶段。
58.处理模块,还用于处理回滚事务处理阶段。
59.第七方面,本技术提供一种基于可编程交换机的分布式事务处理装置,包括:存储器和处理器;
60.存储器用于存储程序指令;
61.处理器用于调用存储器中的程序指令执行如本技术第一方面所述的基于可编程交换机的分布式事务处理方法。
62.第八方面,本技术提供一种基于可编程交换机的分布式事务处理装置,包括:存储器和处理器;
63.存储器用于存储程序指令;
64.处理器用于调用存储器中的程序指令执行如本技术第二方面所述的基于可编程交换机的分布式事务处理方法。
65.第九方面,本技术提供一种基于可编程交换机的分布式事务处理装置,包括:存储器和处理器;
66.存储器用于存储程序指令;
67.处理器用于调用存储器中的程序指令执行如本技术第三方面所述的基于可编程交换机的分布式事务处理方法。
68.第十方面,本技术提供一种基于可编程交换机的分布式事务处理系统,包括可编程交换机、客户端节点、多个服务节点。
69.其中,可编程交换机用于执行如本技术第一方面所述的方法,客户端节点用于执行如本技术第二方面所述的方法,服务节点用于执行如本技术第三方面所述的方法。
70.可选的,可编程交换机可以为多个,多个可编程交换机构成一个树形结构,用于执行如本技术第一方面所述的方法。
71.第十一方面,本技术提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序指令,计算机程序指令被执行时,实现如本技术第一方面所述的方法。
72.第十二方面,本技术提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序指令,计算机程序指令被执行时,实现如本技术第二方面所述的方法。
73.第十三方面,本技术提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序指令,计算机程序指令被执行时,实现如本技术第三方面所述的方法。
74.第十四方面,本技术提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如本技术第一方面所述的方法。
75.第十五方面,本技术提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如本技术第二方面所述的方法。
76.第十六方面,本技术提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如本技术第三方面所述的方法。
77.本技术提供的基于可编程交换机的分布式事务处理方法、装置和系统,通过客户端节点向每个服务节点发送第四消息,服务节点根据接收到的第四消息,依次处理当前事务处理阶段,当前事务处理阶段为分布式事务中多个依次处理的事务处理阶段中的一个事务处理阶段;服务节点向可编程交换机发送第一消息,可编程交换机接收至少一个服务节点发送的第一消息,若可编程交换机接收到针对非末次事务处理阶段的第一消息的个数等于消息个数阈值,且每个第一消息中的类型信息指示为成功,则可编程交换机向参与下一事务处理阶段的至少一个服务节点发送第二消息;若可编程交换机接收到的针对末次事务处理阶段的第一消息的个数等于相应的消息个数阈值,且每个第一消息中的类型信息指示为成功,或者,若可编程交换机接收到当前事务处理阶段的第一消息中的类型信息指示为失败,则可编程交换机向客户端节点发送分布式事务处理结果,客户端节点接收该分布式事务处理结果。由于本技术能够充分利用可编程交换机的存储能力和可编程能力,将可编
程交换机用于分布式事务的处理,因此,能够大大提高分布式事务处理的性能,缩短分布式事务处理的时延,降低事务之间冲突的概率,提高整个系统的吞吐。还有,因为减少了客户端和服务端的网络交互,从而提高了客户端的中央处理器(central processing unit,cpu)资源利用率。
附图说明
78.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
79.图1为本技术一实施例提供的应用场景示意图;
80.图2为本技术一实施例提供的基于可编程交换机的分布式事务处理方法的流程图;
81.图3为本技术一实施例提供的单个读写分布式事务成功提交过程的示意图;
82.图4为本技术一实施例提供的第一消息的示意图;
83.图5为本技术另一实施例提供的基于可编程交换机的分布式事务处理方法的流程图;
84.图6为本技术一实施例提供的可编程交换机的多个交换处理单元的示意图;
85.图7为本技术一实施例提供的可编程交换机内部处理逻辑的示意图;
86.图8为本技术一实施例提供的多个可编程交换机并行参与事务提交过程的示意图;
87.图9为本技术一实施例提供的基于可编程交换机的分布式事务处理装置的结构示意图;
88.图10为本技术另一实施例提供的基于可编程交换机的分布式事务处理装置的结构示意图;
89.图11为本技术另一实施例提供的基于可编程交换机的分布式事务处理装置的结构示意图;
90.图12为本技术另一实施例提供的基于可编程交换机的分布式事务处理装置的结构示意图;
91.图13为本技术另一实施例提供的基于可编程交换机的分布式事务处理装置的结构示意图;
92.图14为本技术另一实施例提供的基于可编程交换机的分布式事务处理装置的结构示意图;
93.图15为本技术一实施例提供的基于可编程交换机的分布式事务处理系统的示意图;
94.图16为本技术另一实施例提供的基于可编程交换机的分布式事务处理装置的结构示意图。
具体实施方式
95.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
96.随着各种应用数据量的增大,数据必须被划分到不同的服务节点,涉及到多个服务节点参与的事务被称为分布式事务。分布式事务能够保证多个服务节点之间数据的一致性。目前,在分布式事务执行的过程中,需要参与事务的多个服务节点直接和客户端节点进行多个事务处理阶段的网络交互来完成。在每个事务处理阶段的网络交互中,客户端节点都需要根据当前事务处理阶段的网络交互结果来发起下一事务处理阶段的网络交互。每个事务处理阶段均由客户端节点发起和结束,增加了分布式事务处理的时延,导致了分布式事务处理性能低下。
97.可编程交换机(programable switch)是具有编程能力的网络交换机。随着网络硬件的发展,推出了具有可编程能力的可编程交换机。相比传统交换机,智能网络硬件不仅能够加速网络协议处理(如负载均衡、流量控制),并且还可以提供能够支持特定计算的能力和有限内存存储能力。可以通过数据平面编程语言(如p4语言)完成对可编程交换机的控制,根据编程逻辑完成对于网络的处理(修改、转发、丢弃等),且能够自定义新的网络协议。
98.因此,本技术提供一种基于可编程交换机的分布式事务处理方法、装置和系统,通过客户端发起分布式事务的提交,经可编程交换机和参与事务的多个服务节点之间进行多个事务处理阶段的网络交互来完成分布式事务的提交。由于将可编程交换机用于分布式事务的处理,因此,能够大大提高分布式事务处理的性能,缩短分布式事务处理的时延,降低事务之间冲突的概率,提高整个系统的吞吐,还提供了多交换机多服务器的数据中心可扩展能力。
99.图1为本技术一实施例提供的应用场景示意图,如图1所示,客户端110发起分布式事务提交,多个服务节点120在收到客户端110发起的分布式事务提交的请求后,分别和可编程交换机130进行相应多个事务处理阶段的网络交互来完成分布式事务的提交。分布式事务提交的具体实现过程可以参见下述各实施例的方案。需要说明的是,本技术各方案的应用场景不限于图1所示。
100.图2为本技术一实施例提供的基于可编程交换机的分布式事务处理方法的流程图,如图2所示,本实施例的方法包括:
101.s201、客户端节点向每个服务节点发送第四消息,相应地,服务节点接收客户端节点发送的第四消息。第四消息包括分布式事务的标识、分布式事务中多个依次处理的事务处理阶段的标识以及参与各个事务处理阶段的至少一个服务节点的标识、每个事务处理阶段对应的消息个数阈值,第四消息还用于指示启动处理首次事务处理阶段。
102.可选的,多个依次处理的事务处理阶段为持锁阶段、版本检查阶段、写数据阶段。
103.s202、服务节点根据第四消息,依次处理当前事务处理阶段,当前事务处理阶段为分布式事务中多个依次处理的事务处理阶段中的一个事务处理阶段。
104.s203、服务节点向可编程交换机发送第一消息,相应地,可编程交换机接收分布式事务的参与当前事务处理阶段的至少一个服务节点发送的第一消息。当前事务处理阶段为
分布式事务中多个依次处理的事务处理阶段中的一个事务处理阶段,第一消息包括分布式事务的标识、消息个数阈值、用于指示当前事务处理阶段的处理结果为成功或失败的类型信息、目标节点的标识。
105.其中,在当前事务处理阶段为非末次事务处理阶段且第一消息中的类型信息指示为成功时,目标节点的标识为参与下一事务处理阶段的至少一个服务节点的标识。
106.在当前事务处理阶段为末次事务处理阶段且第一消息中的类型信息指示为成功时,目标节点的标识为客户端节点的标识。
107.其中,图2中以服务节点1、服务节点2、服务节点3均参与当前事务处理阶段为例进行示出,本实施例并不限于此。
108.s204、若可编程交换机接收到针对非末次事务处理阶段的第一消息的个数等于消息个数阈值,且每个第一消息中的类型信息指示为成功,第一消息中的目标节点的标识为参与下一事务处理阶段的至少一个服务节点的标识,则可编程交换机根据参与下一事务处理阶段的至少一个服务节点的标识,向参与下一事务处理阶段的至少一个服务节点发送第二消息,第二消息用于指示进行下一事务处理阶段。
109.其中,图2中以服务节点1、服务节点2、服务节点3均参与下一事务处理阶段为例进行示出,本实施例并不限于此。
110.s205、若可编程交换机接收到的针对末次事务处理阶段的第一消息的个数等于相应的消息个数阈值,且每个第一消息中的类型信息指示为成功,或者,若可编程交换机接收到当前事务处理阶段的第一消息中的类型信息指示为失败,则可编程交换机向客户端节点发送分布式事务处理结果。相应地,客户端节点接收在末次事务处理阶段处理完成后,或者,在当前事务处理阶段的第一消息中的类型信息指示为失败时,可编程交换机发送的分布式事务处理结果。
111.可选的,若当前事务处理阶段为多个依次处理的事务处理阶段中的末次事务处理阶段,则第一消息中目标节点的标识为客户端节点的标识。可编程交换机根据第一消息中包括的客户端节点的标识,向客户端节点发送分布式事务处理结果。
112.本实施例中,图3为本技术一实施例提供的单个读写分布式事务成功提交过程的示意图。以多个服务节点为服务节点1、服务节点2、服务节点3为例,以及事务处理阶段包括:持锁阶段、版本检查阶段、写数据阶段为例,参见图3,对本实施例的方案进行举例说明。如图3所示,读写分布式事务由客户端节点发起,该事务读集合所在的服务节点为服务节点1和服务节点3,该事务写集合所在的服务节点为服务节点1和服务节点2。有些服务节点只处理一个事务处理阶段,有些服务节点会处理多个事务处理阶段,比如对应图3,其中,服务节点1依次处理的事务处理阶段包括:持锁阶段、版本检查阶段、写数据阶段,服务节点2依次处理的事务处理阶段包括:持锁阶段、写数据阶段,服务节点3依次处理的事务处理阶段包括:版本检查阶段。在该事务完成执行阶段后,由客户端节点发起该事务的提交。客户端节点向每个服务节点发送数据消息,该数据消息可以参见上述的第四消息。具体地,第四消息包括分布式事务的标识,如上的3个服务节点分别依次处理的事务处理阶段、每个事务处理阶段对应的消息个数阈值(持锁阶段为2,版本检查阶段为2,写数据阶段为2)。第四消息还包括事务具体的读写数据,比如写数据为写数据集合的地址及数据,读数据为读数据集合的地址及其版本信息。第四消息还用于指示启动处理首次事务处理阶段。写集合所在的
服务节点(即服务节点1和服务节点2)接收到客户端节点发送的第四消息后,启动处理首次事务处理阶段,即进入持锁阶段。写集合所在的服务节点(即服务节点1和服务节点2)获取所有写集合的锁,将持锁成功的协调操作消息发送给可编程交换机,该协调操作消息可以参见上述的第一消息。
113.图4为本技术一实施例提供的第一消息的示意图,第一消息具体消息格式如图4所示,网络协议(ethereal,eht)头、网际互连协议(internet protocol,ip)头表示普通以太网协议和ip协议的包头,用户数据报协议(user datagram protocol,udp)网络包头的源端口表示分布式事务提交机制网络协议的标识,udp网络包头的目的端口表示服务节点对应的线程标识(服务节点对应的线程参与分布式事务的处理),分布式事务的唯一标识(identity,id)用于标识事务和处理网络乱序和丢包,类型即为指示当前事务处理阶段的处理结果为成功或失败的类型信息,阈值即为消息个数阈值,该阈值等于参与事务当前处理阶段的服务节点的个数,参与节点即为目标节点的标识。比如对应图3,持锁阶段成功的第一消息,其类型信息为持锁阶段成功,消息个数阈值为2,目标节点的标识为参与下一事务处理阶段的服务节点1和服务节点3。
114.可编程交换机接收针对持锁阶段的第一消息,记录接收到的第一消息的个数,判断接收到的第一消息的个数是否等于消息个数阈值,且判断每个第一消息中的类型信息是否指示为成功。相较于现有技术,该第一消息由可编程交换机进行处理,而不是通过客户端节点进行处理,即将分布式事务提交过程中的协调操作卸载到了可编程交换机(如图3中的操作卸载)。可编程交换机在收到最后一个持锁成功的第一消息(即服务节点2发送的协调操作消息)后,此时可编程交换机接收到的第一消息的个数等于消息个数阈值(即为2),且每个第一消息(即服务节点1和服务节点2分别发送的第一消息)中的类型信息指示为持锁阶段成功,则可编程交换机根据目标节点的标识将持锁阶段的最后一个持锁成功的协调操作消息广播给所有的读集合所在的服务节点(即服务节点1和服务节点3),该协调操作消息可以参见上述的第二消息,第二消息用于指示进行下一事务处理阶段。读集合所在服务节点(即服务节点1和服务节点3)接收到可编程交换机广播的第二消息后进入版本检查阶段,确认从执行阶段到版本检查阶段,读集合的数据没有被其他并行的事务改变,将版本检查通过的协调操作消息发送给可编程交换机,该协调操作消息可以参见上述的第一消息。其中,对应版本检查阶段成功的第一消息,其类型信息为版本检查阶段成功,消息个数阈值为2,目标节点的标识为参与下一事务处理阶段的服务节点1和服务节点2。
115.可编程交换机接收针对版本检查阶段的第一消息,记录接收到的第一消息的个数,判断接收到的第一消息的个数是否等于消息个数阈值,且判断每个第一消息中的类型信息是否指示为成功。可编程交换机在接收到最后一个版本检查成功的第一消息(即服务节点3发送的协调操作消息)后,此时可编程交换机接收到的第一消息的个数等于消息个数阈值(即为2),且每个第一消息(即服务节点1和服务节点3分别发送的第一消息)中的类型信息指示为版本检查阶段成功,则可编程交换机根据目标节点的标识将版本检查阶段的最后一个版本检查成功的协调操作消息广播给所有的写集合所在的服务节点(即服务节点1和服务节点2),该协调操作消息可以参见上述的第二消息,第二消息用于指示进行下一事务处理阶段。写集合所在服务节点(即服务节点1和服务节点2)接收到可编程交换机广播的第二消息后进入写数据阶段,写集合所在服务节点(即服务节点1和服务节点2)先执行释放
锁操作,然后将事务写集合的数据更新到本地存储中,最后将写数据成功的协调操作消息发送给可编程交换机,该协调操作消息可以参见上述的第一消息。其中,对应写数据阶段的第一消息,其类型信息为写数据阶段成功,消息个数阈值为2,因为写数据阶段为末次事务处理阶段,则目标节点的标识为客户端节点的标识。
116.可编程交换机接收针对写数据阶段的第一消息,记录接收到的第一消息的个数,判断接收到的第一消息的个数是否等于消息个数阈值,且判断每个第一消息中的类型信息是否指示为成功。可编程交换机在收到最后一个写数据成功的第一消息(即服务节点2发送的协调操作消息)后,此时可编程交换机接收到的第一消息的个数等于消息个数阈值(即为2),且每个第一消息(即服务节点1和服务节点2分别发送的第一消息)中的类型信息指示为写数据阶段成功,则可编程交换机根据客户端节点的标识将写数据阶段的最后一个写数据成功的协调操作消息转发给客户端节点,该协调操作消息即为上述的分布式事务处理结果。客户端节点接收到该分布式事务处理结果后,标志着该分布式事务成功提交。
117.对于图3中的通用读写分布式事务,本实施的方法相对于现有技术,将提交过程的时间缩短为三分之二,同时将持锁时间缩短为二分之一,两次读读集版本的时间间隔缩短为四分之三,且除去提交开始和结束,分布式事务提交过程中不需要客户端节点的线程参与,减少了客户端节点线程的cpu资源消耗。
118.在上述实施例的基础上,若可编程交换机接收到持锁阶段或者版本检查阶段的第一消息中的类型信息指示为失败,该第一消息中的目标节点的标识为客户端节点的标识,则可编程交换机向客户端节点发送分布式事务处理结果,该结果指示该分布式事务提交失败。客户端节点在接收到该分布式事务处理结果为失败时,进行相应的处理,比如:重新发起该分布式事务的提交。
119.可选的,客户端节点可以包含多个线程,该多个线程可以同时发起多个分布式事务的提交,参与分布式事务提交的多个服务节点可以包含多个线程,该多个线程可以并行处理多个分布式事务,每个服务节点的具体处理过程参加上述实施例。
120.本技术提供的基于可编程交换机的分布式事务处理方法,通过客户端节点向每个服务节点发送第四消息,服务节点根据接收到的第四消息,依次处理当前事务处理阶段,当前事务处理阶段为分布式事务中多个依次处理的事务处理阶段中的一个事务处理阶段;服务节点向可编程交换机发送第一消息,可编程交换机接收至少一个服务节点发送的第一消息,若可编程交换机接收到针对非末次事务处理阶段的第一消息的个数等于消息个数阈值,且每个第一消息中的类型信息指示为成功,则可编程交换机向参与下一事务处理阶段的至少一个服务节点发送第二消息;若可编程交换机接收到的针对末次事务处理阶段的第一消息的个数等于相应的消息个数阈值,且每个第一消息中的类型信息指示为成功,或者,若可编程交换机接收到当前事务处理阶段的第一消息中的类型信息指示为失败,则可编程交换机向客户端节点发送分布式事务处理结果,客户端节点接收该分布式事务处理结果。由于本技术能够充分利用可编程交换机的存储能力和可编程能力,将可编程交换机用于分布式事务的处理,因此,能够大大提高分布式事务处理的性能,缩短分布式事务处理的时延,降低事务之间冲突的概率,提高整个系统的吞吐。还有,因为减少了客户端和服务端的网络交互,从而提高了客户端的cpu资源利用率。
121.在图2所示实施例的基础上,在一些实施例中,图5为本技术另一实施例提供的基
于可编程交换机的分布式事务处理方法的流程图,如图5所示,本实施例的方法包括:
122.s501、客户端节点向每个服务节点发送第四消息,相应地,服务节点接收客户端节点发送的第四消息。第四消息包括分布式事务的标识、分布式事务中多个依次处理的事务处理阶段的标识以及参与各个事务处理阶段的至少一个服务节点的标识、每个事务处理阶段对应的消息个数阈值,第四消息还用于指示启动处理首次事务处理阶段。
123.s502、服务节点根据第四消息,依次处理当前事务处理阶段,当前事务处理阶段为分布式事务中多个依次处理的事务处理阶段中的一个事务处理阶段。
124.s503、服务节点向可编程交换机发送第一消息,相应地,可编程交换机接收分布式事务的参与当前事务处理阶段的至少一个服务节点发送的第一消息。当前事务处理阶段为分布式事务中多个依次处理的事务处理阶段中的一个事务处理阶段,第一消息包括分布式事务的标识、消息个数阈值、用于指示当前事务处理阶段的处理结果为成功或失败的类型信息、目标节点的标识。
125.本实施例中,s501、s502以及s503的具体实现过程可以参见图2所示实施例的相关描述,此处不再赘述。
126.s504、若可编程交换机接收到针对非末次事务处理阶段的第一消息的个数等于消息个数阈值,且每个第一消息中的类型信息指示为成功,第一消息中的目标节点的标识为参与下一事务处理阶段的至少一个服务节点的标识,则可编程交换机根据参与下一事务处理阶段的至少一个服务节点的标识,向参与下一事务处理阶段的至少一个服务节点发送第二消息,相应地,服务节点接收可编程交换机发送的第二消息。第二消息用于指示进行下一事务处理阶段。服务节点处理下一事务处理阶段。
127.本实施例中,在图2所示实施例的基础上,由于有些服务节点可能只处理一个事务处理阶段,有些服务节点可能会处理多个事务处理阶段,因此,需要参与下一事务处理阶段的服务节点接收可编程交换机发送的第二消息,根据第二消息进行下一事务处理阶段的处理。例如:图3中,服务节点3只处理了版本检查这一个事务处理阶段;服务节点1在接收到可编程交换机针对持锁成功广播的第二消息后,进入下一事务处理阶段,即版本检查阶段,进行版本检查阶段的处理,即确认从执行阶段到版本检查阶段,读集合的数据没有被其他并行的事务改变。
128.s505、若可编程交换机接收到的第一消息中的类型信息指示为失败,第一消息中的目标节点的标识为参与回滚事务处理阶段的至少一个服务节点的标识,则可编程交换机向参与回滚事务处理阶段的至少一个服务节点发送第三消息,相应地,服务节点接收可编程交换机发送的第三消息。第三消息用于指示进行回滚事务处理阶段。
129.可选的,第四消息还用于指示在每个事务处理阶段的处理结果为失败后需要执行回滚事务处理阶段的至少一个服务节点。
130.可选的,在第一消息中的类型信息指示为失败时,目标节点的标识为参与回滚事务处理阶段的至少一个服务节点的标识。
131.可选的,在第一消息中的类型信息指示为失败时,可编程交换机将在该第一消息之后接收到的其他第一消息进行过滤丢弃,以减少网络开销。
132.本实施例中,第四消息包括分布式事务的标识、分布式事务中多个依次处理的事务处理阶段的标识以及参与各个事务处理阶段的至少一个服务节点的标识,因此,根据第
四消息,可以获得在每个事务处理阶段的处理结果为失败后需要执行回滚事务处理阶段的至少一个服务节点。例如:图3中,第四消息中包括分布式事务写集合所在的服务节点为服务节点1和服务节点2,写集合所在的服务节点在当前事务处理阶段执行失败时需要进行回滚事务处理。若可编程交换机接收到持锁阶段或者版本检查阶段的第一消息中的类型信息指示为失败,目标节点的标识为参与回滚事务处理阶段的服务节点1和服务节点2,则可编程交换机向参与回滚事务处理阶段的服务节点1和服务节点2发送第三消息。相应地,服务节点1和服务节点2分别接收可编程交换机发送的第三消息。第三消息用于指示进行回滚事务处理阶段。
133.s506、服务节点处理回滚事务处理阶段。
134.本实施例中,服务节点接收到可编程交换机发送的第三消息后,处理回滚事务处理阶段。其中,图5中以服务节点1、服务节点2、服务节点3均参与回滚事务处理阶段为例进行示出,本实施例并不限于此。
135.举例来说,参见图3中,服务节点1和服务节点2分别接收可编程交换机发送的第三消息后,分别执行释放锁操作,释放锁操作即为回滚事务处理阶段。
136.s507、若可编程交换机接收到的针对末次事务处理阶段的第一消息的个数等于相应的消息个数阈值,且每个第一消息中的类型信息指示为成功,或者,若可编程交换机接收到当前事务处理阶段的第一消息中的类型信息指示为失败,则可编程交换机向客户端节点发送分布式事务处理结果。相应地,客户端节点接收在末次事务处理阶段处理完成后,或者,在当前事务处理阶段的第一消息中的类型信息指示为失败时,可编程交换机发送的分布式事务处理结果。
137.本实施例中,s507的具体实现过程可以参见图2所示实施例的相关描述,此处不再赘述。
138.可选的,可编程交换机包括多个交换处理单元,多个交换处理单元中的至少一个交换处理单元分别用于接收参与当前事务处理阶段的至少一个服务节点发送的第一消息。
139.本实施例中,可编程交换机的物理端口静态划分到多个不同的计算单元,该计算单元即为交换处理单元,多个计算单元共同完成跨不同物理端口分组进行分布式事务不同事务处理阶段的处理。多个计算单元并行处理,通过可编程交换机内部机制通信,可以避免单点瓶颈。图6为本技术一实施例提供的可编程交换机的多个交换处理单元的示意图。如图6所示,多个物理端口映射到不同的交换处理单元,也可称为计算单元,每个计算单元由入口(ingress)与出口(egress)两部分组成。由ingress处理完成的网络消息可以转发到其他计算单元的egress,由此完成不同物理端口的通信任务。由egress处理完成的网络消息可以重传给ingress,由此完成网络包的循环处理。以从计算单元1所在的客户端节点发起的事务为例,分布式事务需要其他计算单元(如计算单元
n-1
,计算单元n)的服务节点,每个其他计算单元的服务节点的消息可以直接到达计算单元1的egress,由计算单元1的egress接收参与当前事务处理阶段的至少一个服务节点发送的第一消息,将该第一消息通过重传发送给计算单元1的ingress,位于同一计算单元的服务节点(计算单元1)接收参与当前事务处理阶段的至少一个服务节点发送的第一消息并将该第一消息发送给计算单元1的ingress,计算单元1的ingress聚集来自计算单元1的服务节点发送的第一消息以及来自计算单元1的egress重传的第一消息,进行相应事务处理阶段的处理,第二消息或第三消息通过计算单
元1的ingress根据目标节点的标识转发到对应计算单元的egress,具体处理方式参见s504或s505。通过充分利用多个计算单元的处理能力,通过在每个计算单元内部提前完成消息汇聚操作进而减少不同计算单元之间的消息传递。
140.由于本技术能够充分利用可编程交换机的存储能力和可编程能力,将可编程交换机用于分布式事务的处理,可编程交换机的多个交换处理单元并行处理分布式事务,因此,能够大大提高分布式事务处理的性能,缩短分布式事务处理的时延,降低事务之间冲突的概率,提高整个系统的吞吐。在分布式事务处理的过程中,通过回滚事务处理阶段保证了分布式事务处理的正确性、一致性。还有,因为减少了客户端和服务端的网络交互,从而提高了客户端的cpu资源利用率。
141.在上述实施例的基础上,对不同分布式事务的提交过程的网络消息可以赋予不同的优先级,在可编程交换机和服务节点中均可以按优先级调度处理。可编程交换机为不同优先级设置不同处理队列,优先处理高优先级的消息。服务节点对同时收到的批量网络请求,根据网络优先级排序后,优先处理高优先级的消息。具体地,不同客户端节点发起的分布式事务对相同数据执行操作,在进行分布式事务提交时,通过可编程交换机和服务节点中的优先级调度,能够尽可能让其关键路径变短,该关键路径例如包括持锁的关键路径,为从持锁阶段的持锁操作到回滚事务处理阶段或写数据阶段的释放锁操作(如图3中服务节点2的从持锁阶段的持锁操作到写数据阶段的释放锁操作的关键路径),该关键路径例如还包括数据版本有效的关键路径,为从执行过程中的读数据到分布式事务提交过程中的版本检查阶段的版本检查操作(如图3中服务节点3的关键路径),因此,对于结束关键路径的网络请求具有更高的优先级,网络请求优先级的顺序从高到低为:

释放锁的网络请求,

版本检查的网络请求,

读数据的网络请求,

持锁的网络请求。
142.在上述实施例的基础上,图7为本技术一实施例提供的可编程交换机内部处理逻辑的示意图。如图7所示,过滤消息为可编程交换机完成对于其他网络请求的转发,以保证分布式事务提交过程中不影响对网络中的其他网络请求的正常转发。处理丢包为可编程交换机首先通过网络消息(即第一消息)的id判断该分布式事务的状态是否合法,用于处理网络丢包和网络乱序的情况,具体判断逻辑为:如果网络消息的id与可编程交换机内记录的id不同,则丢弃当前网络消息。状态转移为若可编程交换机判断当前分布式事务的状态是否已经开始回滚事务处理阶段,若当前分布式事务正在回滚事务处理阶段,则丢弃该事务的其他服务节点发送的网络消息,避免重复回滚;若可编程交换机满足s204中进行下一事务处理阶段的判断条件,则可编程交换机通过广播的方式使下一阶段的参与服务节点进行下一事务处理阶段的处理。优先级调度为可编程交换机通过可编程交换机中的优先级队列完成分布式事务的提交过程中的网络消息的优先级调度处理。广播为网络中的广播操作,单播为网络中的单播操作。转发表用于完成可编程交换机网络转发的基础功能。
143.在上述实施例的基础上,可以从多个可编程交换机中选择部分可编程交换机构成树形结构。参与分布式事务处理的服务节点以及客户端节点可以通过该树形结构的可编程交换机进行网络通信,每个交换机并行地完成分布式事务的相关处理,提高了分布式事务处理的性能。例如:图8为本技术一实施例提供的多个可编程交换机并行参与事务提交过程的示意图。如图8所示,首先在可编程交换机中选择一组可编程交换机构成一个树形结构,该树形结构能连接所有参与当前分布式事务处理的服务节点和客户端节点,即该可编程交
换机树完成对当前分布式事务的提交过程,在该树形结构中最高层的可编程交换机作为该树形结构的根节点。以分布式事务提交过程中的写数据阶段为例,如图8所示,三个写集合所在服务节点与可编程交换机s1直接相连,一个写集合所在服务节点与可编程交换机s2直接相连,客户端节点与可编程交换机s3直接相连,可编程交换机s1、s2、s3与s0直接相连。s0、s1、s2、s3共同构成一组可编程交换机树形结构,用于完成分布式事务的提交,其中s0为树形结构的根节点。与可编程交换机s1直接相连的三个服务节点完成事务的写数据阶段,将写数据成功的消息发送到可编程交换机s1,可编程交换机s1等待所有三个服务节点发送消息,将收到的最后一个写数据成功的消息发送给可编程交换机s0,依此类推,可编程交换机s2将与其直接相连的服务节点的消息发送给s0。可编程交换机s0等待s1与s2的消息,当s0收到s1和s2的写数据成功的消息,该分布式事务的写数据阶段成功,可编程交换机s0将接收到的最后一个写数据阶段成功的消息通过s3发送给客户端节点。
144.在上述实施例的基础上,针对不同的分布式事务及同一分布式事务的不同事务处理阶段,可编程交换机可以回收利用有限的存储资源以服务后续的分布式事务。具体地,在分布式事务处理的过程中,将持锁阶段、版本检查阶段、写数据阶段以及提交失败的回滚事务处理阶段抽象成相同操作,即对应s204和s205的处理,对该相同的操作重复使用同一状态机,充分利用可编程交换机内的存储资源。不同分布式事务通过其网络消息中的id的低位表示其在可编程交换机内的存储空间,该存储空间被不同的分布式事务重复利用,保证同一时刻不存在多个分布式事务共享同一存储空间,从而保证正确性。
145.图9为本技术一实施例提供的基于可编程交换机的分布式事务处理装置的结构示意图,如图9所示,本实施例的基于可编程交换机的分布式事务处理装置900,应用于分布式事务处理系统,分布式事务处理系统包括可编程交换机、客户端节点、多个服务节点,基于可编程交换机的分布式事务处理装置900包括在可编程交换机中。本实施例的基于可编程交换机的分布式事务处理装置900包括:接收模块901、发送模块902。
146.接收模块901,用于接收分布式事务的参与当前事务处理阶段的至少一个服务节点发送的第一消息,当前事务处理阶段为分布式事务中多个依次处理的事务处理阶段中的一个事务处理阶段,第一消息包括分布式事务的标识、消息个数阈值、用于指示当前事务处理阶段的处理结果为成功或失败的类型信息、目标节点的标识。
147.发送模块902,用于若接收模块901接收到针对非末次事务处理阶段的第一消息的个数等于消息个数阈值,且每个第一消息中的类型信息指示为成功,第一消息中的目标节点的标识为参与下一事务处理阶段的至少一个服务节点的标识,则根据参与下一事务处理阶段的至少一个服务节点的标识,向参与下一事务处理阶段的至少一个服务节点发送第二消息,第二消息用于指示进行下一事务处理阶段;以及若接收模块901接收到的针对末次事务处理阶段的第一消息的个数等于相应的消息个数阈值,且每个第一消息中的类型信息指示为成功,或者,若接收模块901接收到当前事务处理阶段的第一消息中的类型信息指示为失败,则向客户端节点发送分布式事务处理结果。
148.在上述任一所示实施例的基础上,若当前事务处理阶段为多个依次处理的事务处理阶段中的末次事务处理阶段,则第一消息中目标节点的标识为客户端节点的标识。
149.发送模块902,具体用于:
150.根据第一消息中包括的客户端节点的标识,向客户端节点发送分布式事务处理结
果。
151.在上述任一所示实施例的基础上,发送模块902还用于:
152.若接收模块901接收到的第一消息中的类型信息指示为失败,第一消息中的目标节点的标识为参与回滚事务处理阶段的至少一个服务节点的标识,则向参与回滚事务处理阶段的至少一个服务节点发送第三消息,第三消息用于指示进行回滚事务处理阶段。
153.在上述任一所示实施例的基础上,多个依次处理的事务处理阶段为持锁阶段、版本检查阶段、写数据阶段。
154.在上述任一所示实施例的基础上,可编程交换机中包括多个交换处理单元,每个交换处理单元包括基于可编程交换机的分布式事务处理装置。
155.本实施例的装置,可以用于执行上述任一方法实施例中可编程交换机的方案,其实现原理和技术效果类似,此处不再赘述。
156.图10为本技术另一实施例提供的基于可编程交换机的分布式事务处理装置的结构示意图,如图10所示,本实施例的基于可编程交换机的分布式事务处理装置1000,应用于分布式事务处理系统,分布式事务处理系统包括可编程交换机、客户端节点、多个服务节点,基于可编程交换机的分布式事务处理装置1000包括在客户端节点中。本实施例的基于可编程交换机的分布式事务处理装置1000包括:发送模块1001、接收模块1002。
157.发送模块1001,用于向每个服务节点发送第四消息,第四消息包括分布式事务的标识、分布式事务中多个依次处理的事务处理阶段的标识以及参与各个事务处理阶段的至少一个服务节点的标识,每个事务处理阶段对应的消息个数阈值,第四消息还用于指示启动处理首次事务处理阶段。
158.接收模块1002,用于接收在末次事务处理阶段处理完成后,或者,在当前事务处理阶段的第一消息中的类型信息指示为失败时,可编程交换机发送的分布式事务处理结果。
159.在上述任一所示实施例的基础上,第四消息还用于指示在每个事务处理阶段的处理结果为失败后需要执行回滚事务处理阶段的至少一个服务节点。
160.本实施例的装置,可以用于执行上述任一方法实施例中客户端节点的方案,其实现原理和技术效果类似,此处不再赘述。
161.图11为本技术另一实施例提供的基于可编程交换机的分布式事务处理装置的结构示意图,如图11所示,本实施例的基于可编程交换机的分布式事务处理装置1100,应用于分布式事务处理系统,分布式事务处理系统包括可编程交换机、客户端节点、多个服务节点,基于可编程交换机的分布式事务处理装置1100包括在服务节点中。本实施例的基于可编程交换机的分布式事务处理装置1100包括:接收模块1101、处理模块1102、发送模块1103。
162.接收模块1101,用于接收客户端节点发送的第四消息,第四消息包括分布式事务的标识、分布式事务中多个依次处理的事务处理阶段的标识以及参与各个事务处理阶段的至少一个服务节点的标识、每个事务处理阶段对应的消息个数阈值,第四消息还用于指示启动处理首次事务处理阶段。
163.处理模块1102,用于根据第四消息,依次处理当前事务处理阶段,当前事务处理阶段为分布式事务中多个依次处理的事务处理阶段中的一个事务处理阶段。
164.发送模块1103,用于向可编程交换机发送第一消息,第一消息包括分布式事务的
标识、消息个数阈值、用于指示当前事务处理阶段的处理结果为成功或失败的类型信息、目标节点的标识。
165.其中,在当前事务处理阶段为非末次事务处理阶段且第一消息中的类型信息指示为成功时,目标节点的标识为参与下一事务处理阶段的至少一个服务节点的标识。
166.在当前事务处理阶段为末次事务处理阶段且第一消息中的类型信息指示为成功时,目标节点的标识为客户端节点的标识。
167.在上述任一所示实施例的基础上,接收模块1101还用于:
168.在发送模块1103向可编程交换机发送第一消息之后,接收可编程交换机发送的第二消息,第二消息用于指示进行下一事务处理阶段。
169.处理模块1102,还用于处理下一事务处理阶段。
170.在上述任一所示实施例的基础上,第四消息还用于指示在每个事务处理阶段的处理结果为失败后需要执行回滚事务处理阶段的至少一个服务节点。
171.在第一消息中的类型信息指示为失败时,目标节点的标识为参与回滚事务处理阶段的至少一个服务节点的标识。
172.在上述任一所示实施例的基础上,接收模块1101还用于:
173.接收可编程交换机发送的第三消息,第三消息用于指示进行回滚事务处理阶段。
174.处理模块1102,还用于处理回滚事务处理阶段。
175.本实施例的装置,可以用于执行上述任一方法实施例中服务节点的方案,其实现原理和技术效果类似,此处不再赘述。
176.图12为本技术另一实施例提供的基于可编程交换机的分布式事务处理装置的结构示意图。如图12所示,本实施例的基于可编程交换机的分布式事务处理装置1200,应用于分布式事务处理系统,分布式事务处理系统包括可编程交换机、客户端节点、多个服务节点,基于可编程交换机的分布式事务处理装置1200包括在可编程交换机中。本实施例的基于可编程交换机的分布式事务处理装置1200包括:存储器1201和处理器1202。其中,存储器1201、处理器1202通过总线连接。
177.存储器1201用于存储程序指令。
178.处理器1202用于调用存储器中的程序指令执行:
179.接收分布式事务的参与当前事务处理阶段的至少一个服务节点发送的第一消息,当前事务处理阶段为分布式事务中多个依次处理的事务处理阶段中的一个事务处理阶段,第一消息包括分布式事务的标识、消息个数阈值、用于指示当前事务处理阶段的处理结果为成功或失败的类型信息、目标节点的标识;若处理器1202接收到针对非末次事务处理阶段的第一消息的个数等于消息个数阈值,且每个第一消息中的类型信息指示为成功,第一消息中的目标节点的标识为参与下一事务处理阶段的至少一个服务节点的标识,则根据参与下一事务处理阶段的至少一个服务节点的标识,向参与下一事务处理阶段的至少一个服务节点发送第二消息,第二消息用于指示进行下一事务处理阶段;以及若处理器1202接收到的针对末次事务处理阶段的第一消息的个数等于相应的消息个数阈值,且每个第一消息中的类型信息指示为成功,或者,若处理器1202接收到当前事务处理阶段的第一消息中的类型信息指示为失败,则向客户端节点发送分布式事务处理结果。
180.在上述任一所示实施例的基础上,若当前事务处理阶段为多个依次处理的事务处
理阶段中的末次事务处理阶段,则第一消息中目标节点的标识为客户端节点的标识。
181.处理器1202,具体用于:
182.根据第一消息中包括的客户端节点的标识,向客户端节点发送分布式事务处理结果。
183.在上述任一所示实施例的基础上,处理器1202还用于:
184.若处理器1202接收到的第一消息中的类型信息指示为失败,第一消息中的目标节点的标识为参与回滚事务处理阶段的至少一个服务节点的标识,则向参与回滚事务处理阶段的至少一个服务节点发送第三消息,第三消息用于指示进行回滚事务处理阶段。
185.在上述任一所示实施例的基础上,多个依次处理的事务处理阶段为持锁阶段、版本检查阶段、写数据阶段。
186.在上述任一所示实施例的基础上,可编程交换机中包括多个交换处理单元,每个交换处理单元包括基于可编程交换机的分布式事务处理装置。
187.本实施例的装置,可以用于执行上述任一方法实施例中可编程交换机的方案,其实现原理和技术效果类似,此处不再赘述。
188.图13为本技术另一实施例提供的基于可编程交换机的分布式事务处理装置的结构示意图。如图13所示,本实施例的基于可编程交换机的分布式事务处理装置1300,应用于分布式事务处理系统,分布式事务处理系统包括可编程交换机、客户端节点、多个服务节点,基于可编程交换机的分布式事务处理装置1300包括在客户端节点中。本实施例的基于可编程交换机的分布式事务处理装置1300包括:存储器1301和处理器1302。其中,存储器1301、处理器1302通过总线连接。
189.存储器1301用于存储程序指令。
190.处理器1302用于调用存储器中的程序指令执行:
191.向每个服务节点发送第四消息,第四消息包括分布式事务的标识、分布式事务中多个依次处理的事务处理阶段的标识以及参与各个事务处理阶段的至少一个服务节点的标识,每个事务处理阶段对应的消息个数阈值,第四消息还用于指示启动处理首次事务处理阶段;接收在末次事务处理阶段处理完成后,或者,在当前事务处理阶段的第一消息中的类型信息指示为失败时,可编程交换机发送的分布式事务处理结果。
192.在上述任一所示实施例的基础上,第四消息还用于指示在每个事务处理阶段的处理结果为失败后需要执行回滚事务处理阶段的至少一个服务节点。
193.本实施例的装置,可以用于执行上述任一方法实施例中客户端节点的方案,其实现原理和技术效果类似,此处不再赘述。
194.图14为本技术另一实施例提供的基于可编程交换机的分布式事务处理装置的结构示意图。如图14所示,本实施例的基于可编程交换机的分布式事务处理装置1400,应用于分布式事务处理系统,分布式事务处理系统包括可编程交换机、客户端节点、多个服务节点,基于可编程交换机的分布式事务处理装置1400包括在服务节点中。本实施例的基于可编程交换机的分布式事务处理装置1400包括:存储器1401和处理器1402。其中,存储器1401、处理器1402通过总线连接。
195.存储器1401用于存储程序指令。
196.处理器1402用于调用存储器中的程序指令执行:
197.接收客户端节点发送的第四消息,第四消息包括分布式事务的标识、分布式事务中多个依次处理的事务处理阶段的标识以及参与各个事务处理阶段的至少一个服务节点的标识、每个事务处理阶段对应的消息个数阈值,第四消息还用于指示启动处理首次事务处理阶段;根据第四消息,依次处理当前事务处理阶段,当前事务处理阶段为分布式事务中多个依次处理的事务处理阶段中的一个事务处理阶段;向可编程交换机发送第一消息,第一消息包括分布式事务的标识、消息个数阈值、用于指示当前事务处理阶段的处理结果为成功或失败的类型信息、目标节点的标识。其中,在当前事务处理阶段为非末次事务处理阶段且第一消息中的类型信息指示为成功时,目标节点的标识为参与下一事务处理阶段的至少一个服务节点的标识。在当前事务处理阶段为末次事务处理阶段且第一消息中的类型信息指示为成功时,目标节点的标识为客户端节点的标识。
198.在上述任一所示实施例的基础上,处理器1402还用于:
199.在处理器1402向可编程交换机发送第一消息之后,接收可编程交换机发送的第二消息,第二消息用于指示进行下一事务处理阶段。
200.处理器1402,还用于处理下一事务处理阶段。
201.在上述任一所示实施例的基础上,第四消息还用于指示在每个事务处理阶段的处理结果为失败后需要执行回滚事务处理阶段的至少一个服务节点。
202.在第一消息中的类型信息指示为失败时,目标节点的标识为参与回滚事务处理阶段的至少一个服务节点的标识。
203.在上述任一所示实施例的基础上,处理器1402还用于:
204.接收可编程交换机发送的第三消息,第三消息用于指示进行回滚事务处理阶段。
205.处理器1402,还用于处理回滚事务处理阶段。
206.本实施例的装置,可以用于执行上述任一方法实施例中服务节点的方案,其实现原理和技术效果类似,此处不再赘述。
207.图15为本技术一实施例提供的基于可编程交换机的分布式事务处理系统的示意图,如图15所示,基于可编程交换机的分布式事务处理系统1500包括可编程交换机1501、客户端节点1502和多个服务节点1503。其中,可编程交换机1501可以采用图9或图12装置实施例的结构,其对应地,可以执行图2或图5实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。客户端节点1502可以采用图10或图13装置实施例的结构,其对应地,可以执行图2或图5实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。服务节点1503可以采用图11或图14装置实施例的结构,其对应地,可以执行图2或图5实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
208.需要说明的是,图15中的可编程交换机可以为一个,也可以为多个。如果可编程交换机为多个,则这多个可编程交换机构成一个树形结构,共同完成上述各实施例中可编程交换机的方案。
209.图16为本技术另一实施例提供的基于可编程交换机的分布式事务处理装置的结构示意图。如图16所示,例如,基于可编程交换机的分布式事务处理装置1600可以被提供为一服务器或计算机。参照图16,基于可编程交换机的分布式事务处理装置1600包括处理组件1601,其进一步包括一个或多个处理器,以及由存储器1602所代表的存储器资源,用于存储可由处理组件1601的执行的指令,例如应用程序。存储器1602中存储的应用程序可以包
括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1601被配置为执行指令,以执行上述任一方法实施例中的客户端节点或服务节点或可编程交换机的方案。
210.基于可编程交换机的分布式事务处理装置1600还可以包括一个电源组件1603被配置为执行基于可编程交换机的分布式事务处理装置1600的电源管理,一个有线或无线网络接口1604被配置为将基于可编程交换机的分布式事务处理装置1600连接到网络,和一个输入输出(i/o)接口1605。基于可编程交换机的分布式事务处理装置1600可以操作基于存储在存储器1602的操作系统,例如windows servertm,mac os xtm,unixtm,linuxtm,freebsdtm或类似。
211.本技术还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上基于可编程交换机的分布式事务处理方法的方案。
212.本技术还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当处理器执行计算机执行指令时,实现如上基于可编程交换机的分布式事务处理方法的方案。
213.上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
214.一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(application specific integrated circuits,简称:asic)中。当然,处理器和可读存储介质也可以作为分立组件存在于基于可编程交换机的分布式事务处理装置中。
215.本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
216.最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有2条留言
  • 访客 来自[中国] 2023年05月26日 12:51
    而微软热狗
    0
  • 访客 来自[中国] 2023年05月26日 12:51
    v'c'b'f'g'b'r
    0
1