1.本技术涉及信息技术(information technology,it)领域,尤其涉及事务处理方法、装置及相关设备。
背景技术:2.随着云计算的发展,微服务架构深受互联网行业巨头、开源社区的青睐。微服务架构倡导将复杂的单体应用拆分为若干个功能简单、松耦合的服务,可降低开发难度、增强扩展性,使部署、管理和服务功能交付变得更加简单。而系统微服务化后,一个看似简单的功能,内部可能需要调用多个服务,分布式事务问题变的非常突出。
3.例如某一个微服务架构下的场景,其中服务1的某个功能可以直接或者间接的依赖于多个服务的相关功能,如何在不侵入原本服务的基础上,便捷地处理事务是本领域亟待解决的问题。
技术实现要素:4.本技术实施例提供了事务处理方法、装置及相关设备,能够在不侵入服务的基础上实现事务处理,提高事务处理的效率。
5.第一方面,本技术实施例提供了一种事务处理方法,包括:
6.事务协调模块获取第一事务;
7.事务协调模块通过所述检查接口,实现在第一事务中对所述目标服务的检查;
8.事务协调模块通过所述提交接口,提交所述第一事务。
9.其中,检查接口、或提交接口等,可以用于调用目标服务。
10.可选的,上述检查接口、提交接口可以配置在事务适配模块中。事务协调模块和事务适配模块可以相连接,以使得事务协调模块可以通过事务适配模块中的接口来完成事务。进一步的,事务协调模块和事务适配模块可以包含于事务处理系统中。
11.本技术实施例中,事务协调模块可以获取涉及目标服务的第一事务,在提交事务之前,先对目标服务进行检查,然后提交第一事务,以完成对事务的处理。一方面,经过对目标服务的检查,可以提高事务成功提交的可能性,提高事务处理的效率,提升系统的稳定性。另一方面,对于已经提交过的事务,可以通过检查阶段来避免重复提交,满足事务处理的一致性要求,提升系统的稳定性。
12.此外,本技术的检查接口、提交接口等配置在事务适配模块中,而无需对目标服务的接口进行更改,无需侵入目标服务本身,兼容性高,降低了系统的改造、升级的成本。尤其对于云服务、微服务模型,具有较高的兼容性。
13.在第一方面的一种可能的实施方式中,所述目标服务可以包含云服务、微服务、单体应用等服务。
14.在第一方面的一种可能的实施方式中,上述方法通过系统的应用层实现。
15.在第一方面的一种可能的实施方式中,所述方法还包括:
16.事务协调模块监测响应结果,所述响应结果用于指示所述第一事务是否提交成功。
17.可选的,事务协调模块可以通过检查接口来监测响应结果。例如,事务协调模块可以通过检查接口接收返回消息,该返回消息可以指示所述第一事务是否提交成功,因此,返回消息看作响应结果。例如,返回消息中包含第一信息,则指示提交成功。再如,返回消息中包含第二信息,则指示提交失败。
18.一方面,在第一事务提交成功时,可以及时反馈关于提交成功的提醒。另一方面,如果调用失败,可触发重试、或撤销等相关流程,提升事务处理效率。
19.在第一方面的又一种可能的实施方式中,所述多个接口还包括撤销接口,所述方法还包括:
20.若所述第一事务未成功提交,或者,第一事务的未成功提交次数大于或大于等于第一阈值,则所述事务协调模块通过所述撤销接口,回滚提交第一事务后的已执行操作。
21.一种可能的情况中,若所述第一事务未成功提交,则所述事务协调模块通过所述撤销接口,回滚提交第一事务后的已执行操作。
22.示例性的,第一事务可以包含一个事务,此时若第一事务未成功提交,则回滚提交第一事务后的已执行操作,满足系统的一致性要求。
23.示例性的,第一事务可以包含多个事务,而第一事务中的某一个或者某几个事务未成功提交,从而使得第一事务未成功提交,此时可以将前序已执行完成的事务同步回滚,保证提交操作和撤回操作的幂等,满足系统的一致性要求。
24.又一种可能的情况中,若第一事务的未成功提交次数大于或大于等于第一阈值,则所述事务协调模块通过所述撤销接口,回滚提交第一事务后的已执行操作。
25.例如,可以预先设置、协议定义或者接收用户输入上述第一阈值,在未成功提交次数大于或大于等于第一阈值时,触发撤销操作。
26.如此,通过检查-提交-撤销(check,commit,cancel,或者简称为3c)模型来对事务进行处理,可以满足系统的一致性要求,还可以避免对目标服务的侵入式修改,从而具有较强的扩展性。
27.在第一方面的又一种可能的实施方式中,所述提交响应结果还指示提交失败的原因;所述事务协调模块通过所述撤销接口,回滚提交第一事务后的已执行操作,包括:
28.所述事务协调模块通过所述撤销接口,基于所述失败原因对应的回滚策略,回滚提交第一事务后的已执行操作。
29.在第一方面的又一种可能的实施方式中,所述方法还包括:
30.若所述第一事务未成功提交,则所述事务协调模块通过所述提交接口,再次提交所述第一事务。
31.当第一事务未成功提交时,可以触发多次重试,而通过检查、提交、撤销三段式的操作,可以使得多次重复提交可以达到相同效果,满足一致性要求。
32.在第一方面的又一种可能的实施方式中,所述多个接口通过封装所述目标服务对应的增读改删(create-read-update-delate,crud)接口得到。
33.本技术的一种实施方式中,目标服务支持crud接口,而本技术实施例在目标服务的上层设置事务适配模块,通过事务适配模块对于目标服务的原生curd接口进行适配,为
系统的改造降低工作成本。
34.在第一方面的又一种可能的实施方式中,所述对所述目标服务的检查,包括以下检查内容中的一项或者多项:
35.配额检查、重名检查、规格检查或鉴权。
36.在第一方面的又一种可能的实施方式中,所述事务协调模块获取第一事务,包括:
37.分析所述功能需求,得到一个或者多个事务;
38.将所述一个或者多个事务进行排序,得到所述第一事务。
39.第二方面,本技术实施例提供一种事务处理装置,所述事务处理装置包括所述事务适配模块和事务协调模块,所述事务处理装置用于执行第一方面或第一方面任一种可能的实施方式所描述的方法。
40.在第二方面的一种可能的实施方式中,所述事务适配模块包含多个通信接口,所述多个通信接口包含检查接口和提交接口,所述多个通信接口中每个通信接口用于调用目标服务:
41.所述事务协调模块,用于:
42.获取第一事务;
43.通过所述检查接口,实现在第一事务中对所述目标服务的检查;
44.通过所述提交接口,提交所述第一事务。
45.在第二方面的一种可能的实施方式中,所述目标服务可以包含云服务、微服务、单体应用等服务。
46.在第二方面的一种可能的实施方式中,上述方法通过系统的应用层实现。
47.在第二方面的一种可能的实施方式中,所述事务协调模块还用于:
48.监测响应结果,所述响应结果用于指示所述第一事务是否提交成功。
49.在第二方面的又一种可能的实施方式中,所述多个接口还包括撤销接口,所述事务协调模块,还用于:
50.若所述第一事务未成功提交,或者,第一事务的未成功提交次数大于或大于等于第一阈值,则通过所述撤销接口,回滚提交第一事务后的已执行操作。
51.在第二方面的又一种可能的实施方式中,所述提交响应结果还指示提交失败的原因;所述事务协调模块还用于:
52.通过所述撤销接口,基于所述失败原因对应的回滚策略,回滚提交第一事务后的已执行操作。
53.在第二方面的又一种可能的实施方式中,所述事务协调模块还用于:
54.若所述第一事务未成功提交,则通过所述提交接口,再次提交所述第一事务。
55.在第二方面的又一种可能的实施方式中,所述多个接口通过封装所述目标服务对应的增读改删(create-read-update-delate,crud)接口得到。
56.在第二方面的又一种可能的实施方式中,所述对所述目标服务的检查,包括以下检查内容中的一项或者多项:
57.配额检查、重名检查、规格检查或鉴权。
58.在第二方面的又一种可能的实施方式中,所述事务协调模块,还用于:
59.分析所述功能需求,得到一个或者多个事务;
60.将所述一个或者多个事务进行排序,得到所述第一事务。
61.第三方面,本技术实施例提供一种计算设备,该计算设备包括处理器和通信接口;所述通信接口用于接收和/或发送数据,和/或,所述通信接口用于为所述处理器提供输入和/或输出;所述处理器用于实现前述第一方面任一项所描述的方法。
62.需要说明的是,上述第三方面所描述的计算设备所包含的处理器,可以是专门用于执行这些方法的处理器(便于区别称为专用处理器),也可以是通过调用计算机程序来执行这些方法的处理器,例如通用处理器。可选的,至少一个处理器还可以既包括专用处理器也包括通用处理器。
63.可选的,上述计算机程序可以存在存储器中。示例性的,存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(read only memory,rom),其可以与处理器集成在同一块器件上,也可以分别设置在不同的器件上,本技术实施例对存储器的类型以及存储器与处理器的设置方式不做限定。
64.在一种可能的实施方式中,上述至少一个存储器位于上述计算设备之外。
65.在又一种可能的实施方式中,上述至少一个存储器位于上述计算设备之内。
66.在又一种可能的实施方式之中,上述至少一个存储器的部分存储器位于上述计算设备之内,另一部分存储器位于上述计算设备之外。
67.本技术中,处理器和存储器还可能集成于一个器件中,即处理器和存储器还可以被集成在一起。
68.第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在至少一个处理器上运行时,实现前述第一方面任一项所描述的方法。
69.第五方面,本技术提供了一种计算机程序产品,计算机程序产品包括计算机指令,当所述指令在至少一个处理器上运行时,实现前述第一方面任一项所描述的方法。
70.可选的,该计算机程序产品可以为一个软件安装包,在需要使用前述方法的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。
71.本技术第二至第五方面所提供的技术方法,其有益效果可以参考第一方面的技术方案的有益效果,此处不再赘述。
附图说明
72.下面将对实施例描述中所需要使用的附图作简单的介绍。
73.图1是本技术实施例提供的一种事务处理系统的架构示意图;
74.图2是本技术实施例提供的一种事务处理系统的运行场景示意图;
75.图3是本技术实施例提供的一种事务处理方法的流程示意图;
76.图4是本技术实施例提供的一种服务的架构示意图;
77.图5是本技术实施例提供的又一种服务的架构示意图;
78.图6是本技术实施例提供的又一种事务处理方法的流程示意图;
79.图7是本技术实施例提供的又一种事务处理方法的流程示意图;
80.图8是本技术实施例提供的一种事务处理装置的结构示意图;
81.图9是本技术实施例提供的一种计算设备的结构示意图。
具体实施方式
82.下面结合附图对本技术实施例进行详细介绍。
83.为了便于理解,以下示例地给出了部分与本技术实施例相关概念的说明以供参考。如下所示:
84.1.分布式事务
85.分布式事务是指事务的参与者、事务管理者、或支持事务的参与者分别位于不同的分布式系统的不同节点之上。
86.例如,支持事务的服务器、资源服务器或事务管理器等分别位于不同的分布式系统的不同节点之上。
87.一种设计中,一项分布式事务可以理解为大的操作,该大的操作包含多个不同的小操作。这些小的操作分布在不同的服务器上,且属于不同的应用,在进行分布式事务处理时,需要保证这些小操作要么全部执行成功,要么全部执行失败。
88.2.接口幂等性
89.幂等性是系统服务对外一种承诺。在存在幂等性的接口中,在调用接口成功的情况下,外部多次调用该接口对系统的影响是一致的。
90.3.微服务
91.微服务既是一种架构,也是构建软件的方法。在微服务中,应用被拆分成小的组件,彼此独立。不同于将所有组件内置于一个架构中的传统单体式应用构建方法,在微服务架构中,所有部分相互独立,通过合作来完成同一个任务。其中的每一个组件或流程都是一个微服务。这种软件开发方法强调细粒度、轻量化,力求在多个应用中共享相似的流程。
92.一种场景中,微服务是针对云原生模型优化应用开发的主要组件。
93.4.租户
94.租户具有独立资源(例如:计算资源、存储资源、或网络资源等中的一个或者多个)的个人或组织。部分场景中,也可以称为成员(member)。
95.本技术实施例提供的事务处理方法、装置及相关设备,能够在不侵入服务的基础上实现事务处理,提高事务处理的效率。
96.下面对本技术实施例的系统架构和业务场景进行示例性地描述。需要说明的是,本技术描述的系统架构及业务场景是为了更加清楚的说明本技术的技术方案,并不构成对于本技术提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本技术提供的技术方案对于类似的技术问题,同样适用。
97.请参见图1,图1是本技术实施例提供的一种可能的事务处理系统的架构示意图。该事务处理系统10包含事务协调模块101和一个或者多个通信接口,该通信接口用于调用服务103。
98.其中,事务协调模块101,或称为事务协调器101,是具有数据处理能力的模块,用于获取第一事务以及对事务进行调度。其中,第一事务可以包含一个事务,也可以包含多个事务。例如,事务协调模块分析功能需求得到第一事务。再如,事务协调器接收用户设备发送的第一事务。
99.事务协调模块101具体可以通过具有数据处理能力的电子设备或者电子设备集群来实现。其中,前述电子设备可以是实体设备,例如可以是主机、机架式服务器、或者刀片式
服务器等中的一个或者多个;也可以是虚拟设备,例如可以是虚拟机、容器等中的一个或者多个。
100.事务适配模块(或称事务适配器)102用于包含对应某一服务的通信接口。可选的,事务适配模块中可以配置有上下文(context),用于记录密钥、参数、或业务数据等中的一项或者多项。
101.服务103可以是微服务、云服务、或单体应用等中的一项或者多项。通常,服务103用于提供计算资源、存储资源、网络资源、应用资源或者数据资源等资源中的一项或者多项。
102.事务协调模块101具体可以通过通信接口来完成第一事务。其中,对于涉及服务1的事务,可以通过事务适配模块a中的通信接口来完成。通信接口具体可以包含检查(check)接口、提交接口(commit)和撤销(cancel)接口。而完成第一事务的流程具体可以包含检查-提交-撤销(或者简称为3c)模型来完成。
103.一种可能的设计中,多个通信接口可以配置于事务适配模块102中。而一个事务适配模块102中的通信接口可以用于调用一个目标服务103。例如,事务适配模块a中的通信接口用于调用服务1。需要说明是,图1所示的模块的数量、服务数量仅为示例,不作为对事务适配模块和目标服务的对应关系的限定,例如,n个事务适配模块可以对应一个相同的服务,n≥1。
104.示例性地,请参见图2,图2是本技术实施例提供的一种可能的事务处理系统的运行场景示意图。事务协调模块201可以分析业务需求得到第一事务。事务协调模块201调用检查接口,对第一事务涉及的服务(便于描述称为目标服务)进行检查。事务适配模块202(即事务适配模块a)调用提交接口,提交第一事务。若事务提交成功,则第一事务提交完成。若事务未提交成功,则可以对第一事务进行重新提交,和/或,撤销第一事务。
105.以下以第一事务包含多个事务为例进行说明。第一事务可以包含两个事务(便于描述称为事务1和事务2),该两个事务分别需要调用微服务203和单体应用205。
106.事务协调模块201可以调用事务适配模块202(即事务适配模块a)中的check接口,实现对微服务203的检查。事务协调模块201调用事务适配模块202中的commit接口,对第一事务中的事务1进行提交。
107.可选的,若事务1未提交成功,则事务协调模块201调用事务适配模块202中的commit接口,对事务1进行重新提交。
108.或者可选的,若事务1未提交成功,则事务协调模块201调用事务适配模块202中的cancel接口,对第一事务进行撤销。其中,对第一事务进行撤销包含对事务1的已执行操作进行撤销,进一步的还包括对于第一事务的其他事务(例如事务2)的已执行操作进行撤销,从而满足一致性要求。
109.或者可选的,若事务1未提交成功且未提交成功的次数小于或者小于等于第一阈值,事务协调模块201调用事务适配模块202中的commit接口,对事务1进行重新提交;若事务1未提交成功且未提交成功的次数大于等于或者大于第一阈值,则事务协调模块201调用事务适配模块202中的cancel接口,对第一事务进行撤销。
110.类似的,事务协调模块可以调用事务适配模块204(即事务适配模块b)中的check接口,实现对单体应用205的检查。事务协调模块调用事务适配模块204中的commit接口,对
第一事务中的事务2进行提交。
111.可选的,若事务2未提交成功,则可以对第一事务进行重新提交,和/或,撤销第一事务。相关描述可以参见前述对事务1的描述,此处不再赘述。
112.在一种可能的设计中,如图1所示的事务处理系统可以部署在云平台中。其中,云平台包含云服务提供商提供的大量基础资源(包括但不限于计算资源、存储资源、或网络资源等),其中计算资源可以是大量的计算设备(例如服务器、虚拟机)。进一步的,事务处理系统具体可以部署在云平台的应用层。
113.在一种可能的实施场景中,上述事务处理系统能够由云服务提供商在云平台抽象成一种云服务提供给租户。例如,租户购买事务处理云服务之后,云平台响应于租户的功能需求,在云服务提供商提供的服务商上进行事务的处理、调度。
114.需要说明的是,在本技术实施例中,云平台可以是中心云的云平台、边缘云的云平台或包括中心云和边缘云的云平台,本技术实施例对其不做具体限定。并且,当云平台为包括中心云和边缘云的云平台时,该数据库设计系统可以部分部署在边缘云的云平台中,部分部署在中心云的云平台中。
115.下面对本技术实施例的方法进行详细介绍。
116.请参见图3,图3是本技术实施例提供的一种事务处理方法的流程示意图。可选的,该方法可以应用于图1、或图2所示的系统中。
117.如图3所示的事务处理方法至少包括步骤s301至步骤s304。应理解,本技术为了方便描述,故通过s301至s304这一顺序进行描述,并不旨在限定一定通过上述顺序进行执行。本技术实施例对于上述一个或多个步骤的执行的先后顺序、执行的时间、执行的次数等不做限定。s301至步骤s304具体如下:
118.步骤s301:事务协调模块获取第一事务。
119.第一事务可以包含一个事务,也可以是多个事务。其中,事务(transaction)是一个操作序列。为了保证系统的一致性,事务中的操作是不可再分割的工作单位,一个事务中的操作要么全做,要么全不做。
120.可选的,在第一事务包含多个事务时,多个事务之间可以是并行的,或者事务之间存在先后关系。或者可选的,在第一事务包含多个事务时,多个事务中部分事务是并行的,部分事务之间存在先后关系。应理解,在多个事务具有先后顺序时,该多个事务之间的先后顺序可以是由事务协调模块处理得到。
121.可选的,本技术实施例中第一事务可以包含分布式事务。关于分布式事务的相关描述可以参见术语解释部分的描述。
122.事务协调模块获取第一事务,具体可以有以下设计:
123.设计1:事务协调模块分析业务需求,得到第一事务。可选的,该业务需求可以是租户提交的,或者来自其他管理设备、或配置设备等。
124.示例性地,租户a提交请求消息,该请求消息用于请求创建集群,请求消息中包含集群的配置。例如,请求消息中包含集群包含的cpu数量、虚拟机数量、磁盘数量、网络资源数量。事务协调模块可以接收该请求消息,根据租户a所需的集群的配置,得到第一事务。该第一事务示例性地包含事务1、事务2、事务3、事务4。其中,事务1用于配置租户a所需的cpu,事务2用于配置租户a所述的虚拟机,事务3用于配置租户a所需的磁盘,事务4用于配置用户
所需的网络资源。
125.一种可能的场景中,事务1、事务2、事务3可以并行执行,而事务4在事务1和事务2之后执行。
126.设计2:事务协调模块接收第一事务。该第一事务可以来自租户,或者来自其他管理设备、或配置设备等。
127.例如,事务调度节点(可以看作管理设备)分析业务需求,得到第一事务。事务调度节点向事务调度模块发送第一事务,相应的,事务协调模块接收第一事务。
128.步骤s302:事务协调模块通过检查接口,实现在第一事务中对目标服务的检查。
129.其中,检查接口可以配置于事务适配模块中,如图1、或图2所示。
130.可选地,目标服务的接口经过封装得到该检查接口。一种可能的场景中,目标服务包含增读改删(create-read-update-delate,crud)接口,crud接口(或者crud接口中的部分接口)经过封装得到该检查接口。
131.其中,目标服务是多个服务中与第一事务相关的服务。可选的,服务可以包含云服务、微服务或者单体应用等中的一项或者多项。
132.例如,请参见图4,图4是本技术实施例提供的一种可能的服务的架构示意图。如图4所示的服务通过网络应用和数据库(database,db)来实现。网络应用中示例性地包含用户界面(user interface,ui)和模块(或称为功能模块),用户界面用于与用户进行交互,模块用于根据交互指令、或业务逻辑等实现对应的功能,从而向用户提供服务。db用于存储数据。
133.再如,请参见图5,图5是本技术实施例提供的又一种可能的服务的架构示意图。如图5所示的各个服务为微服务,微服务功能较简单,且微服务与微服务之间可以部署为松耦合的关系。可选地,微服务与微服务之间,支持通过表现层状态转化(representational state transfer,rest)进行互相通信。
134.事务协调模块对目标服务进行检查,可以确定目标服务的基本校验是否出现错误。进一步可选地,事务协调模块在检查通过的情况下再提交第一事务,可以提高第一事务提交成功的可能性。
135.可选的,对目标服务的检查可以包含一个或者多个检查项目。该一个或者多个检查项目可以是预先定义、预先配置或者接收用户输入得到的。
136.一种设计中,对目标服务的检查可以包含配额检查、重名检查、规格检查或鉴权等中的一项或者多项。其中,配额检查用于检查目标服务是否满足第一事务中所需的资源的额度,或者第一事务的请求者(例如租户、或用户等)是否具有使用该目标服务的额度。规格检查用于确定目标服务所提供的规格是否与请求者购买的规格(例如,磁盘可以包含铂金版本、企业版本、学生版本等多种规格)相符,或者额度是否一致等。鉴权用于确定权限以及事务的合法性等。
137.可选的,在检查包含多个检查项目时,多个检查项目可以分别具有不同的属性。例如,部分检查项目是必须通过才可以进行后续提交的检查项目,而部分检查项目可以是提醒性的检查项目,此时可以无需必须通过,而是在不通过时进行提醒。如此,可以满足用户对不同检查项目的重要性的需求,提高第一事务提交成功的可能性。
138.步骤s303:事务协调模块通过提交接口,提交第一事务。
139.例如,第一事务中包含创建n个虚拟机的事务,则事务协调模块通过提交接口,调用虚拟机相关的服务以向用户提供n个虚拟机实例。
140.可选的,事务协调模块可以在检查通过的情况下,通过提交接口提交第一事务。例如,事务协调模块可以监测返回的检查结果,在检查结果指示检查通过时则提交第一事务。或者,事务协调模块在开始检查的第一时长后,则提交第一事务。
141.一种可能的设计中,事务协调模块提交第一事务后,可以监测响应结果。具体的,事务协调模块可以通过检查接口来监测响应结果。例如,事务协调模块可以通过检查接口接收返回消息,该返回消息可以指示所述第一事务是否提交成功,因此,返回消息可以看作响应结果。例如,返回消息中包含第一信息,则指示提交成功。再如,返回消息中包含第二信息,则指示提交失败。如此,一方面,在第一事务提交成功时,可以及时反馈关于提交成功的提醒。另一方面,如果调用失败,可触发重试、或撤销等相关流程,提升事务处理效率。
142.可选的,若第一事务未成功提交,可以进行再次提交(或称为重试),即事务协调模块通过所述提交接口,再次提交所述第一事务。
143.进一步可选的,可以预先设置、预先定义、或通过用户配置得到第一阈值。若第一事务未成功提交且未成功提交的次数小于或者小于等于第一阈值,则再次提交第一事务。
144.可选的,一些可能的情况中,上述事务处理方法还可以包含步骤s304,具体如下:
145.步骤s304:事务协调模块通过撤销接口,回滚提交第一事务后的已执行操作。
146.具体的,事务协调模块可以通过撤销接口,撤销第一事务。
147.一种可能的情况中,若所述第一事务未成功提交,则所述事务协调模块通过所述撤销接口,回滚提交第一事务后的已执行操作。
148.示例性的,第一事务可以包含一个事务,此时若第一事务未成功提交,则回滚提交第一事务后的已执行操作,满足系统的一致性要求。
149.示例性的,第一事务可以包含多个事务,而第一事务中的某一个或者某几个事务未成功提交,从而使得第一事务未成功提交,此时可以将前序已执行完成的事务同步回滚,保证提交操作和撤回操作的幂等,满足系统的一致性要求。
150.又一种可能的情况中,若第一事务的未成功提交次数大于等于或大于第一阈值,则所述事务协调模块通过所述撤销接口,回滚提交第一事务后的已执行操作。
151.例如,可以预先设置、协议定义或者接收用户输入上述第一阈值,在未成功提交次数大于或大于等于第一阈值时,触发撤销操作。
152.如此,通过检查-提交-撤销(check,commit,cancel,或者简称为3c)模型来对事务进行处理,可以满足系统的一致性要求,还可以避免对目标服务的侵入式修改,从而具有较强的扩展性。
153.在事务协调模块监测响应结果的情况下,响应结果还可以指示提交失败的原因。可选的,所述事务协调模块通过所述撤销接口,基于所述失败原因对应的回滚策略,回滚提交第一事务后的已执行操作。
154.图3所示的实施例中,事务协调模块可以获取涉及目标服务的第一事务,在提交事务之前,先对目标服务进行检查,然后提交第一事务,以完成对事务的处理。一方面,经过对目标服务的检查,可以提高事务成功提交的可能性,提高事务处理的效率,提升系统的稳定性。另一方面,对于已经提交过的事务,可以通过检查阶段来避免重复提交,满足事务处理
的一致性要求,提升系统的稳定性。
155.此外,本技术的检查接口、提交接口等配置在事务适配模块中,而无需对目标服务的接口进行更改,无需侵入目标服务本身,兼容性高,降低了系统的改造、升级的成本。尤其对于云服务、微服务模型,具有较高的兼容性。
156.上述详细说明了本方案的实施例,以下结合具体事务对本方案的方法进行进一步说明。一种场景中,高阶服务可以提供创建实例的服务,而创建实例的服务具体通过多个微服务来实现。通过如图6所示的事务处理方法,可以在不侵入多个微服务的基础上实现事务处理,提高事务处理的效率。
157.请参见图6,图6是本技术实施例提供的又一种可能的事务处理方法的流程图。图6所示的步骤可以包含步骤s601-步骤s613。应理解,本技术为了方便描述,故通过s601至s613这一顺序进行描述,并不旨在限定一定通过上述顺序进行执行。对于上述一个或多个步骤的执行的先后顺序、执行的时间、执行的次数等不做限定。步骤s601-步骤s613具体如下:
158.步骤s601:事务协调模块获取第一事务。
159.其中,第一事务可以包含多个事务,例如包含事务1,事务2和事务3。
160.例如,事务1可以包含创建kubernetes集群实例,事务2可以是云硬盘(elastic volume service,evs)部署,事务3可以是创建服务组件。
161.步骤s602:事务协调模块提及对事务1相关的服务进行检查。
162.具体的,事务协调模块调用事务适配模块a中check接口,实现在事务1中对服务的检查。
163.如此,可以有概率避免在实例创建过程中,因为检查项目未通过而导致事务失败。
164.可选的,事务适配模块a中可以包含上下文,该上下文用于存储或记录业务数据、密钥、通信参数等中的一项或者多项。
165.可选的,事务协调模块可以监测检查结果,如步骤s605所示。
166.步骤s603:事务协调模块对事务2相关的服务进行检查。
167.具体的,事务协调模块调用事务适配模块b中check接口,实现在事务2中对服务的检查。
168.可选的,事务协调模块可以监测检查结果,如步骤s606所示。
169.步骤s604:事务协调模块对事务3相关的服务进行检查。
170.具体的,事务协调模块调用事务适配模块c中check接口,实现在事务3中对服务的检查。
171.可选的,事务协调模块可以监测检查结果,如步骤s607所示。
172.可选的,图6所示的方法可以包含步骤s605-步骤s607中的部分或者全部步骤。此处的可选的可以理解为,事务协调模块可以执行该步骤s605-步骤s607中的部分或者全部步骤,也可以不执行上述步骤。该步骤s605-步骤s607具体如下:
173.步骤s605:事务协调模块接收来自事务适配模块a的响应(response)。
174.例如,事务协调模块通过事务适配模块中的检查接口接收服务的响应,该响应可以指示检查结果。
175.步骤s606:事务协调模块接收来自事务适配模块b的response。
176.步骤s607:事务协调模块接收来自事务适配模块c的response。
177.步骤s608:事务协调模块提交(commit)事务1。
178.步骤s609:事务协调模块commit事务2。
179.可选的,图6所示的方法可以包含步骤s610和/或步骤s611,具体如下:
180.步骤s610:事务协调模块接收来自事务适配模块a的response。
181.例如,事务协调模块通过事务适配模块a中的commit接口接收服务的响应,该响应可以指示提交结果。
182.步骤s611:事务协调模块接收来自事务适配模块b的response。
183.步骤s612:事务协调模块commit事务3。
184.可选的,图6所示的方法可以包含步骤s613,具体如下:
185.步骤s613:事务协调模块接收来自事务适配模块c的response。
186.如此,通过图6所示的方法可以完成对第一事务的提交,而无需对目标服务的接口进行更改,无需侵入服务本身,兼容性高,降低了系统的改造、升级的成本。另一方面,经过对目标服务的检查,可以提高事务成功提交的可能性,提高事务处理的效率,提升系统的稳定性。
187.一种可能的设计中,上述对事务提交的响应可能指示提交未完成或者提交失败。此时可以通过撤销接口来回滚已执行的操作,满足系统的一致性要求。
188.示例性的,以图6所示的方法流程为例,若步骤s613中的响应指示事务3提交失败,则需要撤销事务3的已执行操作,并回滚已执行完成的事务1和事务2,满足系统的一致性要求。
189.可选的,请参见图7,图7是本技术实施例提供的又一种可能的事务处理方法的流程示意图,如图6所示的方法还可以包含图7所示的步骤s701-步骤s706中的部分或者全部步骤,步骤s701-步骤s707具体如下:
190.步骤s701:事务协调模块撤销(cancel)事务3。
191.步骤s702:事务适配模块回滚事务3的已执行操作。
192.步骤s703:事务协调模块cancel事务2。
193.步骤s704:事务适配模块回滚事务2的已执行操作。
194.步骤s705:事务协调模块cancel事务1。
195.步骤s706:事务适配模块回滚事务1的已执行操作。
196.如此,第一事务中的某一个或者某几个事务未成功提交,使得第一事务未成功提交时,可以将前序已执行完成的事务回滚,保证提交操作和撤回操作的幂等,满足系统的一致性要求。
197.例如,若创建服务组件失败,在进行回滚时,将创建服务组件过程中的已执行操作、已创建的kubernetes集群实例、已部署的evs实例一起回滚清除,满足分布式事务的一致性需求。
198.上述详细阐述了本技术实施例的方法,下面提供本技术实施例的装置。
199.请参见图8,图8是本技术实施例提供的一种事务处理装置80的结构示意图。该事务处理装置80可以包括事务协调模块801和事务适配模块802。该事务处理装置80用于实现前述的事务处理方法,例如图3、图6或者图7所示实施例中的事务处理方法。
200.这里需要说明的是,上述多个单元的划分仅是一种根据功能进行的逻辑划分,不作为对事务处理装置80具体的结构的限定。在具体实现中,其中部分功能模块可能被细分为更多细小的功能模块,部分功能模块也可能组合成一个功能模块,但无论这些功能模块是进行了细分还是组合,事务处理装置80在进行事务处理的过程中所执行的大致流程是相同的。
201.一种可能的实施方式中,所述事务适配模块802包含多个通信接口803,所述多个通信接口803包含检查接口和提交接口,所述多个通信接口803中每个通信接口用于调用目标服务:
202.所述事务协调模块801,用于:
203.获取第一事务;
204.通过所述检查接口,实现在第一事务中对所述目标服务的检查;
205.通过所述提交接口,提交所述第一事务。
206.在一种可能的实施方式中,所述目标服务可以包含云服务、微服务、单体应用等服务。
207.在一种可能的实施方式中,上述方法通过系统的应用层实现。
208.在一种可能的实施方式中,所述事务协调模块还用于:
209.监测响应结果,所述响应结果用于指示所述第一事务是否提交成功。
210.在又一种可能的实施方式中,所述多个接口还包括撤销接口,所述事务协调模块801,还用于:
211.若所述第一事务未成功提交,或者,第一事务的未成功提交次数大于或大于等于第一阈值,则通过所述撤销接口,回滚提交第一事务后的已执行操作。
212.在又一种可能的实施方式中,所述提交响应结果还指示提交失败的原因;所述事务协调模块801还用于:
213.通过所述撤销接口,基于所述失败原因对应的回滚策略,回滚提交第一事务后的已执行操作。
214.在又一种可能的实施方式中,所述事务协调模块801还用于:
215.若所述第一事务未成功提交,则通过所述提交接口,再次提交所述第一事务。
216.在又一种可能的实施方式中,所述多个接口通过封装所述目标服务对应的增读改删(create-read-update-delate,crud)接口得到。
217.在又一种可能的实施方式中,所述对所述目标服务的检查,包括以下检查内容中的一项或者多项:
218.配额检查、重名检查、规格检查或鉴权。
219.在又一种可能的实施方式中,所述事务协调模块801,还用于:
220.分析所述功能需求,得到一个或者多个事务;
221.将所述一个或者多个事务进行排序,得到所述第一事务。
222.请参见图9,图9是本技术实施例提供的一种计算设备90的结构示意图,该计算设备90可以为独立设备(例如服务器、或用户设备等等中的一个或者多个),也可以为独立设备内部的部件(例如芯片、软件模块或者硬件模块等)。该计算设备90可以包括至少一个处理器901。可选的还可以包括至少一个存储器903。进一步可选的,计算设备90还可以包括通
信接口902。更进一步可选的,还可以包含总线904,其中,处理器901、通信接口902和存储器903通过总线904相连。
223.其中,处理器901是进行算术运算和/或逻辑运算的模块,具体可以是中央处理器(central processing unit,cpu)、图片处理器(graphics processing unit,gpu)、微处理器(microprocessor unit,mpu)、专用集成电路(application specific integrated circuit,asic)、现场可编程逻辑门阵列(field programmable gate array,fpga)、复杂可编程逻辑器件(complex programmable logic device,cpld)、协处理器(协助中央处理器完成相应处理和应用)、微控制单元(microcontroller unit,mcu)等处理模块中的一种或者多种的组合。
224.通信接口902可以用于为所述至少一个处理器提供信息输入或者输出。和/或,所述通信接口902可以用于接收外部发送的数据和/或向外部发送数据,可以为包括诸如以太网电缆等的有线链路接口,也可以是无线链路(wi-fi、蓝牙、通用无线传输、车载短距通信技术以及其他短距无线通信技术等)接口。可选的,通信接口902还可以包括与接口耦合的发射器(如射频发射器、天线等),或者接收器等。
225.存储器903用于提供存储空间,存储空间中可以存储操作系统和计算机程序等数据。存储器903可以是随机存储记忆体(random access memory,ram)、只读存储器(read-only memory,rom)、可擦除可编程只读存储器(erasable programmable read only memory,eprom)、或便携式只读存储器(compact disc read-only memory,cd-rom)等等中的一种或者多种的组合。
226.该计算设备90中的至少一个处理器901用于执行前述的事务处理方法,例如图2所示实施例所描述的事务处理方法。
227.可选的,处理器901,可以是专门用于执行这些方法的处理器(便于区别称为专用处理器),也可以是通过调用计算机程序来执行这些方法的处理器,例如通用处理器。可选的,至少一个处理器还可以既包括专用处理器也包括通用处理器。可选的,在计算设备包括至少一个存储器903的情况下,上述计算机程序可以存在存储器903中。
228.本技术还提供了一种算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在至少一个处理器上运行时,实现前述的事务处理方法,例如图3、图6或者图7所示的事务处理方法。
229.本技术还提供了一种计算机程序产品,该计算机程序产品包括计算机指令,在被计算设备执行时,实现前述的事务处理方法,例如图3、图6或者图7所示的事务处理方法。
230.本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
231.本技术中实施例提到的“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b、或c中的至少一项(个),可以表示:a、b、c、(a和b)、(a和c)、(b和c)、或(a和b和c),其中a、b、c可以是单个,也可以是多个。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a、同时存在a和b、单独存
在b这三种情况,其中a、b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
232.以及,除非有相反的说明,本技术实施例使用“第一”、“第二”等序数词是用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。例如,第一事务和第二事务,只是为了便于描述,而并不是表示这第一事务和第二事务的事务结构、重要程度等的不同,在某些实施例中,第一事务和第二事务还可以是同样的事务。
233.上述实施例中所用,根据上下文,术语“当
……
时”可以被解释为意思是“如果
……”
或“在
……
后”或“响应于确定
……”
或“响应于检测到
……”
。以上所述仅为本技术的可选实施例,并不用以限制本技术,凡在本技术的构思和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
234.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。