CN112835688A - 分布式事务处理方法、设备及存储介质 - Google Patents
分布式事务处理方法、设备及存储介质 Download PDFInfo
- Publication number
- CN112835688A CN112835688A CN202110139205.8A CN202110139205A CN112835688A CN 112835688 A CN112835688 A CN 112835688A CN 202110139205 A CN202110139205 A CN 202110139205A CN 112835688 A CN112835688 A CN 112835688A
- Authority
- CN
- China
- Prior art keywords
- sub
- transaction
- execution
- target
- processes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种分布式事务处理方法、设备及存储介质。在本申请的一些实施例中,分布式事务处理设备接收事务请求端发送的分布式事务的启动请求;根据启动请求,获取预先配置的多个子流程的执行顺序;根据多个子流程的执行顺序,依序执行多个子流程;在目标子流程执行失败后,增加判断是否满足重试的条件,在满足重试的条件的情况下,对目标子流程执行重试操作,在子流程执行失败后增加判断是否满足回滚条件,在满足回滚条件的情况下,从目标子流程开始逆向执行所有已执行子流程的回滚操作,增加分布式事务执行成功的概率,减少因分布式系统的不稳定导致数据不一致性的概率,提升分布式系统故障场景下的自愈能力,提高事务的执行效率。
Description
技术领域
本申请涉及分布式计算领域的技术,尤其涉及一种分布式事务处理方法、设备及存储介质。
背景技术
分布式系统架构中,整个业务流程由多个业务节点提供多个服务共同完成,一个业务逻辑往往需要操作多个服务上的数据。为了保证多个服务的数据一致性,通常需要引入分布式事务机制来处理,每个事务包含着多个节点上的不同业务操作,事务的执行结果只能全部成功或者全部失败。
目前,基于Saga理论的事务模型,将一个长的、执行多个步骤的事务T拆分为多个子事务:t1,t2,...,tm-1,tm,tm+1,...,tn;与此同时,定义每个子事务的回滚逻辑(又称补偿事务):c1,c2,...,cm-1,cm,cm+1,...,cn。上述事务T可以认为是一个完整的分布式事务,每个子事务t认为是事务中的一个步骤,当t1,t2,...,tn这些子事务执行完成后,认为事务T执行完成,达到业务处理目标,并达成业务数据一致性的目标。当某个子事务,例如tm+1在执行过程中失败时,需要依次执行cm,cm-1,...,c2,c1这一系列的补偿事务,完成补偿事务的处理后,整个事务回滚结束,恢复到执行开始前的状态。
基于Saga理论的事务模型,对任意子事务来说,在该子事务执行失败后均需要针对该子事务执行回滚操作,这种处理流程比较繁琐,不够简化,影响事务的执行效率。
发明内容
本申请的多个方面提供一种分布式事务处理方法、设备及存储介质,重新规范子事务执行失败后的处理逻辑,提高事务的执行效率。
本申请实施例提供一种分布式事务处理方法,包括:
接收事务请求端发送的分布式事务的启动请求,所述分布式事务包括多个子流程;
根据所述启动请求,获取预先配置的所述多个子流程的执行顺序;
根据所述多个子流程的执行顺序,依序执行所述多个子流程;
若存在目标子流程执行失败,则判断所述目标子流程是否满足重试的条件;
若是,则对所述目标子流程执行重试操作。
可选地,判断所述目标子流程是否满足重试的条件,包括:
调用执行所述目标子流程过程中使用的RPC接口,得到所述目标子流程对应的网络通信结果;
若网络通信结果为网络通信超时,则所述目标子流程满足重试的条件。
可选地,在对所述目标子流程执行重试操作之后,所述方法还包括:
记录所述目标子流程的重试次数;
若所述目标子流程的重试次数超过设定次数,则向目标管理设备发送提醒指令,以提醒管理人员执行维护操作。
可选地,所述分布式事务还包括:至少部分子流程对应的补偿流程,在判断所述目标子流程是否满足重试的条件之后,所述方法还包括:
若否,则按照所述目标子流程对应的至少一个目标补偿流程的执行顺序,对所述分布式事务执行回滚操作。
可选地,按照所述目标子流程对应的至少一个目标补偿流程的执行顺序,对所述分布式事务执行回滚操作,包括:
若当前已执行的子流程中存在对应补偿流程,则获取至少一个已执行子流程对应的补偿流程作为至少一个目标补偿流程;
按照所述至少一个目标补偿流程的执行顺序依次执行所述至少一个目标补偿流程;所述至少一个目标补偿流程的执行顺序与对应的至少一个已执行子流程的执行顺序相反;
其中,当前已执行的子流程包括目标子流程,或者同时包括目标子流程和在目标子流程之前已执行的其它子流程。
可选地,还包括:
若当前已执行的子流程中不存在对应补偿流程,则停止执行所述分布式事务的回滚操作。
可选地,还包括:
响应事务恢复请求,获取分布式事务对应的至少一个尚未成功执行的子流程,其中,事务恢复请求是在分布式事务系统重启后生成的;
根据所述至少一个尚未成功执行的子流程的执行顺序,执行所述尚未成功执行的子流程。
可选地,在获取启动请求之前,所述方法还包括:
将分布式事务拆分为多个子流程;
为所述多个子流程中的至少部分子流程,设置补偿流程,以及设定所述多个子流程和所述补偿流程的执行顺序,并为所述多个子流程配置执行所需的参数。
本申请实施例还提供一种分布式事务处理设备,包括:事务管理引擎和事务执行引擎;
所述事务管理引擎,用于接收事务请求端发送的分布式事务的启动请求,所述分布式事务包括多个子流程;根据所述启动请求,获取预先配置的所述多个子流程的执行顺序;调用事务执行引擎依序执行所述多个子流程;
所述事务执行引擎,用于根据所述多个子流程的执行顺序,依序执行所述多个子流程;若存在目标子流程执行失败,判断所述目标子流程是否满足重试的条件;若是,则对所述目标子流程执行重试操作。
可选地,所述分布式事务处理设备还包括:事务数据仓库;
所述事务数据仓库,用于存储分布式事务的多个子流程和多个子流程中的至少部分子流程对应的补偿流程,多个子流程和所述补偿流程的执行顺序;在分布式事务启动后,向事务管理引擎发送分布式事务的多个子流程以及多个子流程的执行顺序。
可选地,
所述事务管理引擎,还用于在分布式事务启动后,从事务数据仓库获取多个子流程与多个子流程的执行顺序,以及接收事务执行引擎返回的所述多个子流程的执行结果;
所述事务数据仓库,还用于接收事务管理引擎返回的子流程的执行结果,并更新分布式事务的执行状态。
可选地,还包括:事务恢复引擎;
所述事务恢复引擎,用于响应事务恢复请求,从事务数据仓库中读取所述分布式事务至少一个尚未成功执行的子流程以及至少一个尚未成功执行的子流程的执行顺序,其中,事务恢复请求是在分布式事务系统重启后生成的,并向事务管理引擎发送事务重启请求;
所述事务管理引擎,还用于接收事务恢复引擎发送的事务重启请求,调用事务执行引擎根据至少一个尚未成功执行的子流程的执行顺序执行所述至少一个尚未成功执行的子流程;
所述事务执行引擎,还用于根据至少一个尚未成功执行的子流程的执行顺序执行所述至少一个尚未成功执行的子流程,并向事务管理引擎返回至少一个尚未成功执行的子流程的执行结果。
可选地,所述事务管理引擎接收事务执行引擎返回的所述多个子流程的执行结果之后,还用于:
若接收到事务执行引擎发送的至少一个子流程执行出错的执行结果,则生成所述分布式事务的事务执行失败结果,并向事务请求端发送所述事务执行失败结果;
若接收到事务执行引擎发送的所述分布式事务的所有子流程的执行结果均为子流程执行成功的执行结果,则生成所述分布式事务的事务执行成功结果,并向事务请求端发送所述事务执行成功结果。
可选地,所述事务执行引擎,判断所述目标子流程是否满足重试的条件,具体用于:
调用执行所述目标子流程过程中使用的RPC接口,得到所述目标子流程对应的网络通信结果;
若网络通信结果为网络通信超时,则所述目标子流程满足重试的条件。
可选地,所述事务执行引擎在对所述目标子流程执行重试操作之后,还可用于:
记录所述目标子流程的重试次数;
若目标子流程的重试次数超过设定次数,则向目标管理设备发送提醒指令,以提醒管理人员执行维护操作。
可选地,所述分布式事务还包括:至少部分子流程对应的补偿流程,
所述事务管理引擎,还用于从事务数据仓库获取所述至少部分子流程对应的补偿流程以及至少部分子流程对应的补偿流程的执行顺序;
所述事务执行引擎,在判断所述目标子流程是否满足重试的条件之后,还可用于:
若否,则按照所述目标子流程对应的至少一个目标补偿流程的执行顺序,对所述分布式事务执行回滚操作。
可选地,所述事务执行引擎,按照所述目标子流程对应的至少一个目标补偿流程的执行顺序,对所述分布式事务执行回滚操作,具体用于:
若当前已执行的子流程中存在对应补偿流程,则获取至少一个已执行子流程对应的补偿流程作为至少一个目标补偿流程;
按照所述至少一个目标补偿流程的执行顺序依次执行所述至少一个目标补偿流程;所述至少一个目标补偿流程的执行顺序与对应的至少一个已执行子流程的执行顺序相反;
其中,当前已执行的子流程包括目标子流程,或者同时包括目标子流程和在目标子流程之前已执行的其它子流程。
可选地,所述事务执行引擎,还用于:
若当前已执行的子流程中不存在对应补偿流程,则停止执行所述分布式事务的回滚操作。
本申请实施例还提供一种分布式事务处理设备,包括:存储器和处理器;
所述存储器,用于存储一条或多条计算机指令;
所述处理器,用于执行所述一条或多条计算机指令以用于:
接收事务请求端发送的分布式事务的启动请求,所述分布式事务包括多个子流程;
根据所述启动请求,获取预先配置的所述多个子流程的执行顺序;
根据所述多个子流程的执行顺序,依序执行所述多个子流程;
若存在目标子流程执行失败,则判断所述目标子流程是否满足重试的条件;
若是,则对所述目标子流程执行重试操作。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,当所述计算机程序被一个或多个处理器执行时,致使所述一个或多个处理器执行上述的方法中的步骤。
在本申请的一些实施例中,分布式事务处理设备接收事务请求端发送的分布式事务的启动请求;根据启动请求,获取预先配置的多个子流程的执行顺序;根据多个子流程的执行顺序,依序执行多个子流程;在目标子流程执行失败后,增加判断是否满足重试的条件,在满足重试的条件的情况下,对目标子流程执行重试操作,在子流程执行失败后增加判断是否满足回滚条件,在满足回滚条件的情况下,从目标子流程开始逆向执行所有已执行子流程的回滚操作,增加分布式事务执行成功的概率,减少因分布式系统的不稳定导致数据不一致性的概率,提升分布式系统故障场景下的自愈能力,提高事务的执行效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1a为本申请示例性实施例提供的分布式事务处理方法的流程示意图;
图1b为本申请示例性实施例提供的子流程和补偿流程的执行顺序示意图;
图2为本申请示例性实施例提供一种分布式事务处理设备的示意图;
图3为本申请示例性实施例提供的另一种分布式事务处理设备的示意图;
图4为本申请示例性实施例提供的另一种分布式事务处理设备。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在单机场景下,数据的事务一致性通常可以通过关系型数据库来保障。关系型数据库引入了事务的概念来保证事务一致性,一个事务包含事务ID、业务系统中的相关计算、以及对数据修改的SQL,当业务系统认为自身计算业务处理成功并且数据库系统认为所有SQL都执行成功时,会触发事务提交动作,此时所有对数据库的修改一次写入数据库,确保事务相关的数据一致性。如果某个SQL执行失败、或者业务处理逻辑认为当前处理失败,则发起事务回滚动作,所有已提交的SQL都不予执行,整个数据库中的数据状态回退到事务发生前的状态,这种性质通常称作数据的原子性、一致性、隔离性和持久性。
基于上述这套机制,关系型数据库提出了数据的ACID语义,即数据原子性、数据一致性、数据隔离性、数据持久性四个语义,上述语义保障了银行等金融系统的稳定运行。对于现代管理信息系统来说,上述关系型数据库提供的能力基本可以满足需求,让管理信息系统得以蓬勃发展。
当管理信息系统进入云计算领域,作为对于云计算基础设施进行管理的信息系统时,上述关系型数据库提供的ACID能力保障范围变得不够用了,导致这种问题的主要原因是云计算管理系统在本质上是一个分布式计算系统,这个分布式计算系统由一台或多台物理主机组成集群,并且由物理主机上运行的一个或多个进程共同组成,这些进程有些是给用户使用的虚拟机进程、有些是用于调度和管理虚拟机、虚拟化磁盘等虚拟资源的管理子系统,这些进程大多数不会将数据存储在关系型数据库,也不会和关系型数据库有任何关联,所以无法享受关系型数据库提供的ACID能力的便利性。
涉及云计算领域的管理子系统包括:云计算管理子系统、计算资源管理子系统、存储资源管理子系统、网络资源管理子系统等几个子系统组成。其中,云计算管理子系统是通常的信息管理系统,有管理界面、使用关系型数据库存储数据,与其他子系统通信,完成整个云计算管理的业务目标;计算资源管理子系统会与虚拟化基础设施提供的计算虚拟化接口通信,根据管理员的需求在物理机上模拟多台虚拟机出来,管理这些虚拟机的生命周期;存储资源管理子系统会将集群中的磁盘、外置存储整合为称作存储池的抽象概念,然后在存储池的基础上划分为多个独立的存储区域,这些存储区域学名称为块设备,也可以称作虚拟的磁盘,虚拟磁盘可以挂载到计算资源管理子系统模拟的虚拟机上,虚拟机可以读写虚拟磁盘中的数据,读写体验与通常的PC机读取物理磁盘完全一致;网络资源管理子系统会与集群中各物理服务器进行通信,通过管理其网卡、网络通信策略等方式实现虚拟机之间网络通信的互通和隔离。
从上面的介绍可以看出,在云计算领域下,除了云计算管理子系统可以和管理信息系统沾点边之外,其他的子系统均为技术子系统,数据通常不是由关系型数据库来存储,甚至不需要持久化存储任何信息(例如对于计算管理子系统来说,集群中某台物理主机重启后,上面虚拟全部都不存在了,只需要重新启动就好)。
对于云计算管理子系统来说,其业务职责是调用其他所有子系统,实现相关的业务编排,以创建虚拟机为例,云计算管理子系统需要执行如下处理实现:
步骤1:与存储资源管理子系统交互,创建运行虚拟机所需的虚拟磁盘;
步骤2:与网络资源管理子系统交互,申请虚拟机运行所需的IP地址或网卡;
步骤3:与计算资源管理子系统交互,申请虚拟机运行所需的CPU、内存,并整合已经申请的磁盘、网卡,启动虚拟机进程。
完成上述动作后,可以向业务使用人员交付一台可用的虚拟机,业务人用人员可以通过远程登录等技术登录虚拟机实现自身的使用目标。
从上述流程可以看出,整个虚拟机创建流程会分为多个子步骤,每个子步骤都涉及不同子系统的远程调用,每个子系统都有在调用过程中执行失败的可能、而且不能保证每个远程调用都能立即返回(例如创建一块1GB大小的虚拟磁盘,耗时可能要好几秒)。如果没有一套良好的事务一致性保障机制,云计算管理子系统将会错误百出,例如执行完步骤2后云计算管理子系统宕机又没有良好的处理,则原有创建的虚拟磁盘、虚拟网卡将成为无法给其他磁盘使用,久而久之会占用大量的系统资源,导致最终系统将无法使用。
在本申请一些实施例中,将整个虚拟的创建流程看做一个广义的事务,整个事务执行成功后,向用户交付一台可用的虚拟机,当整个事务的任何一个组成部分因为某种原因失败后,可以对事务执行回滚,并清理已经创建的所有资源,将整个系统的数据状态恢复到事务发生之前。
进一步,在本申请实施例中,采用Saga理论将一个长的、执行多个步骤的事务T拆分为多个原子的子事务:
t1,t2,...,tm-1,tm,tm+1,...,tn;
在拆分的同时,定义每个子事务的回滚逻辑(又称补偿事务):
c1,c2,...,cm-1,cm,cm+1,...,cn;
其中,n,m为正整数,且n>m。
上述事务T可以认为是一个完整的分布式事务,每个子事务t认为是事务T中的一个步骤,当t1,t2,...,tn这些子事务执行完成后,认为事务T执行完成,达到业务处理目标,并达成业务数据一致性的目标。
当某个子事务,例如tm+1在执行过程中失败时,可以依次执行cm+1,cm,cm-1,...,c2,c1这一系列的补偿事务,完成补偿事务的处理后,整个事务回滚结束,恢复到执行事务T开始前的状态。
以创建虚拟机的过程举例,创建虚拟机的整个步骤为创建磁盘-->创建网卡-->申请计算资源三个步骤,这三个步骤的可以拆分为三个子任务t,同时也很容易的识别出每个步骤的补偿事务为释放计算资源-->释放网卡-->释放磁盘。当上述创建虚拟机的三个步骤中的任意一个步骤执行失败时,会按照上述顺序执行补偿事务,最终达到所有资源都释放成功的目的。
在本申请上述实施例中,采用Saga理论在一定程度上可以解决云计算场景下事务一致性的问题。但是,在实际应用中,却发现存在一些不太理想的情况,例如,某些子事务无法回滚,有些子事务不需要回滚。于是本案发明人对Saga理论进行了深入分析和研究,发现Saga理论本身只考虑了事务的拆解和事务的补偿理论,并未对其中的异常场景进行工程化的指导建议,例如:是否所有子事务都可回滚,在工程中经常遇到的是,创建业务的子事务可以回滚,但删除业务的子事务通常无法回滚,原因很简单,已经删除的数据是没办法恢复的,如果可以恢复,说明业务执行的是软删除,而不是物理删除;当某个子事务t执行失败后,是否一定要回滚,例如因为网络超时原因导致的失败通常不用回滚,而是要重试;以及当系统重启后,如何恢复正在运行事务的执行。
上述理论中描述的处理方式在实际工程化落地时会遇到某些子流程无法补偿,或者以什么条件判断是否补偿、补偿失败后如何处理等问题,业务开发人员处理这些问题时整体工作效率会降低,本发明通过提出一套可落地的框架来解决这些问题,让业务开发人员专注于自身业务,提升其工作效率。
鉴于上述,在本申请另一些实施例中,对基于Saga理论的分布式事务解决方案做了进一步改进,具体为:对分布式事务进行拆分得到多个子流程,并预先配置多个子流程的执行顺序;进一步,针对子流程执行失败的情况,在回滚操作的基础上增加了重试操作。这样在子流程执行失败后,增加判断是否满足重试的条件,在满足重试的条件的情况下,对目标子流程执行重试操作,而并非在子流程执行失败后一定要执行回滚操作,增加分布式事务执行成功的概率,提高事务的执行效率。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1a为本申请示例性实施例提供的分布式事务处理方法的流程示意图;如图1a所示,该方法包括:
S101:接收事务请求端发送的分布式事务的启动请求,分布式事务包括多个子流程;
S102:根据启动请求,获取预先配置的多个子流程的执行顺序;
S103:根据多个子流程的执行顺序,依序执行多个子流程;
S104:若存在目标子流程执行失败,判断目标子流程是否满足重试的条件,若是,则执行S105,若否,则执行S106;
S105:对目标子流程执行重试操作;
S106:按照目标子流程对应的至少一个目标补偿流程的执行顺序,对分布式事务执行回滚操作。
在本实施例中,上述方法的执行主体分布式计算设备,由一台或多台物理主机组成集群,并且由物理主机上运行的一个或多个进程共同组成,这些进程有些是给用户使用的虚拟机进程,有些是用于调度和管理虚拟机、虚拟化磁盘等虚拟资源的管理子系统。本申请实施例,可以应用于多种分布式计算场景下,特别是云计算或微服务场景下事务一致性的问题。
需要说明的是,分布式事务指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上,且属于不同的应用,分布式事务需要保证这些操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。在大多数分布式计算场景中,业务上通常不要求所有分布于不用位置的节点、数据的状态实时一致,即整个系统基本可用,在一段时间内某些节点的数据不一致不影响全局,可以在有限的时间内达到最终一致性就行了。
需要说明的是,子流程重试,是指重新执行当前子流程的操作。事务回滚,基于Saga理论的事务模型,将一个长的、执行多个步骤的事务T拆分为多个子事务:t1,t2,...,tm-1,tm,tm+1,...,tn;与此同时,定义每个子事务的回滚逻辑(又称补偿事务):c1,c2,...,cm-1,cm,cm+1,...,cn。上述事务T可以认为是一个完整的分布式事务,每个子事务t认为是事务中的一个步骤,当t1,t2,...,tn这些子事务执行完成后,认为事务T执行完成,达到业务处理目标,并达成业务数据一致性的目标。当子事务tm+1在执行过程中失败时,需要依次执行cm+1,cm,cm-1,...,c2,c1这一系列的补偿事务,完成补偿事务的处理后,整个事务回滚结束;依次执行cm+1,cm,cm-1,...,c2,c1这一系列的补偿事务的过程称为事务回滚。
在分布式计算设备运行之前,需要预先将分布式事务拆分为多个子流程,为多个子流程配置补偿流程,以及配置多个子流程的执行顺序和补偿流程的执行顺序。一种可实现的方式为,将分布式事务拆分为多个子流程;为多个子流程中的至少部分子流程,设置补偿流程,以及设定多个子流程和补偿流程的执行顺序,并为多个子流程配置执行所需的参数。需要说明的是,创建业务的子流程,可以设置补偿流程,而删除业务的子流程,已经删除的数据是没办法恢复的,因此,对于删除业务的子流程来说,不需要设置补偿流程。
下面以分布式事务为创建虚拟机为例进行说明:
创建虚拟机子流程的拆分原则为每个子流程也必须是一个完整的业务流程,即子流程也需要体现一定的事务性。可选地,创建虚拟机的流程拆分为创建磁盘、创建网卡和申请计算资源三个子流程;相应地,三个子流程对应的补偿流程分别为释放磁盘、释放网卡、释放计算资源三个补偿流程。特别地,并不是所有子流程都存在补偿流程,删除业务的子流程可以不存在补偿流程;例如,分布式事务为删除虚拟机,则删除虚拟机的流程拆分为释放磁盘、释放网卡、释放计算资源三个子流程,在这种情况下,三个子流程均不存在子流程。显而易见,也会存在部分子流程没有补偿流程的情形。
接着,图1b为本申请示例性实施例提供的子流程和补偿流程的执行顺序示意图。如图1b所示,设定所有子流程和补偿流程的执行顺序,其中,子流程的执行顺序和补偿流程的执行顺序相反。例如,三个子流程的执行顺序为:创建磁盘、创建网卡和申请计算资源;三个补偿流程的执行顺序为:释放计算资源、释放网卡和释放磁盘;图中实线箭头方向代表三个子流程的执行顺序,虚线箭头方向代表三个补偿流程的执行顺序。
最后,配置多个子流程配置事务执行所需的参数,用户通过设定输入参数,向分布式计算设备请求与输入参数适配的资源。事务执行所需的参数包括但不限于:CPU数量、内容容量、磁盘容量和网卡IP地址等参数信息。用户根据需求修改参数可以配置不同的虚拟机。
在分布式事务配置完成之后,将分布式事务发送至分布式事务处理设备,分布式事务处理设备将分布式事务存储至事务数据仓库中。
在本实施例中,事务请求端向分布式事务处理设备发送启动请求,分布式事务处理设备接收事务请求端发送的分布式事务的启动请求,根据启动请求,获取预先配置的多个子流程的执行顺序;根据多个子流程的执行顺序,依序执行多个子流程;若存在目标子流程执行失败,判断目标子流程是否满足重试的条件;若是,则对目标子流程执行重试操作;若否,则按照目标子流程对应的至少一个目标补偿流程的执行顺序,对分布式事务执行回滚操作。本申请实施例在目标子流程执行失败后,增加判断是否满足重试的条件,在满足重试的条件的情况下,对目标子流程执行重试操作,在子流程执行失败后回滚操作的基础上增加重试操作,增加分布式事务执行成功的概率,提高事务的执行效率。
需要说明的是,本申请对事务请求端的实现形式不作限定,事务请求端的形式可以为用户终端或者请求节点。例如,用户通过用户终端主动向分布式事务处理设备发起创建虚拟机的启动请求,分布式事务处理设备接收该启动请求后,执行创建虚拟机的操作,并向用户终端反馈最终的执行结果;或者,请求节点响应删除虚拟机的周期到达指令,向分布式事务处理设备发起删除虚拟机的启动请求,分布式事务处理设备接收该启动请求后,执行删除虚拟机的操作,并向请求节点反馈最终的执行结果。进一步,本申请对用户终端的类型不作限定,可以为计算机设备或者手持设备,其实现形式可以有多种,例如可以是智能手机,个人电脑,平板电脑和智能音箱等;本申请同时对请求节点的类型不作限定,请求节点可以任意类型节点。
在上述实施例中,判断目标子流程是否满足重试的条件。一种可实现的方式为,调用执行目标子流程过程中使用的RPC接口,得到目标子流程对应的网络通信结果;若网络通信结果为网络通信超时,则目标子流程满足重试的条件;若网络通信结果为网络通信正常,还需要由当前业务特点,需要业务编写子流程结果状态判断脚本,这个脚本如果不存在,则认为不满足重试条件,如果这个脚本存在,则以这个脚本的执行结果判断是否可以重试。需要说明的是,RPC(Remote Procedure Call,远程过程调用),在分布式场景下,多个子系统或子服务之间的通信方式是RPC调用,远程过程调用有三种状态:成功、失败和未知;其中,调用执行目标子流程过程中使用的RPC接口,若调用结果为成功状态或者失败状态,则网络通信结果为网络通信正常,目标子流程不满足重试的条件;若调用结果为未知状态,则网络通信结果为网络通信超时,则目标子流程满足重试的条件。
在上述实施例中,对目标子流程执行重试操作,记录目标子流程的重试次数;若目标子流程的重试次数超过设定次数,则向目标管理设备发送提醒指令,以提醒管理人员执行维护操作。例如,设定次数为2次,目标子流程的重试次数达到3次时,分布式事务处理设备向目标管理设备发送提醒指令,目标管理设备接收到提醒指令后,展示提示内容,以提醒管理人员执行维护操作。本申请实施例对提示内容的实现形式不作限定,提示内容的实现形式包括但不限于:邮件,短信和弹窗。本申请实施例对设定次数不作限定,设定次数可以根据实际情况作出调整。
在上述实施例中,按照目标子流程对应的至少一个目标补偿流程的执行顺序,对分布式事务执行回滚操作。若当前已执行的子流程中存在对应补偿流程,则获取至少一个已执行子流程对应的补偿流程作为至少一个目标补偿流程;按照至少一个目标补偿流程的执行顺序依次执行至少一个目标补偿流程。若当前已执行的子流程中不存在对应补偿流程,则停止执行分布式事务的回滚操作。
可选地,按照目标子流程对应的至少一个目标补偿流程的执行顺序,对分布式事务执行回滚操作,并生成子流程执行出错结果。一种可实现的方式为,若当前已执行的子流程中存在对应补偿流程,则获取至少一个已执行子流程对应的补偿流程作为至少一个目标补偿流程;按照至少一个目标补偿流程的执行顺序依次执行至少一个目标补偿流程;至少一个目标补偿流程的执行顺序与对应的至少一个已执行子流程的执行顺序相反;其中,当前已执行的子流程包括目标子流程,或者同时包括目标子流程和在目标子流程之前已执行的其它子流程。例如,创建虚拟机的流程拆分为创建磁盘、创建网卡和申请计算资源三个子流程;相应地,三个子流程对应的补偿流程分别为释放磁盘、释放网卡、释放计算资源三个补偿流程;创建网卡这个子流程执行失败,在执行回滚操作时,获取创建网卡和创建磁盘这两个子流程对应的释放网卡和释放网卡这两个目标补偿流程,按照释放网卡、释放网卡执行顺序依次这两个补偿流程。
可选地,若当前已执行的子流程中不存在对应补偿流程,则停止执行分布式事务的回滚操作。例如,分布式事务为删除虚拟机,删除虚拟机的流程拆分为释放磁盘、释放网卡、释放计算资源三个子流程;释放磁盘这个子流程执行失败,在执行回滚操作时,不存在补偿流程,则分布式事务处理设备停止执行分布式事务的回滚操作。
在上述分布式事务执行完成后,分布式计算设备根据子流程的执行结果,向事务请求端反馈事务执行结果。若存在子流程执行出错的执行结果,生成分布式事务的事务执行失败结果,并向事务请求端发送事务执行失败结果;若接收到事务执行引擎发送的多个子流程的执行结果均为子流程执行成功的执行结果,则生成分布式事务的事务执行成功结果,并向事务请求端发送事务执行成功结果。其中,子流程执行出错包括第一次执行子流程执行失败和重试子流程这两种情形。
在分布式事务执行的整个过程中,不断更新事务数据仓库中的分布式事务的执行状态。需要说明的是,分布式事务的执行状态,是指分布式事务的整体运行状态,包括但不限于以下几种:当前即将执行的子流程是哪个,分布式事务是否结束,事务执行的最终执行结果是成功还是失败。分布式事务的执行结果,是指分布式事务在执行所有子流程后的最终执行结果,包括两种执行结果:事务执行成功和事务执行失败。子流程的执行结果,是指当前执行的子流程的执行结果,包括三种执行结果:子流程执行结果包括重试子流程、子流程执行出错和子流程执行成功。
分布式事务处理设备在执行分布式事务处理的过程中,可能会存在重启操作。当系统重启后,分布式事务处理设备响应事务恢复请求,获取分布式事务对应的至少一个尚未成功执行的子流程,其中,事务恢复请求是在分布式事务系统重启后生成的;根据至少一个尚未成功执行的子流程的执行顺序,执行至少尚未成功执行的子流程。例如,当系统重启后,分布式事务处理设备响应事务回复请求,从事务数据仓库中获取分布式事务尚未成功执行的子流程;按照前述各实施例的子流程的执行逻辑,继续执行尚未成功执行的子流程,其中,分布式事务的子流程的执行过程可参见前述各实施例,在此不再赘述。
在本申请上述方法实施例中,分布式事务处理设备接收事务请求端发送的分布式事务的启动请求;根据启动请求,获取预先配置的多个子流程的执行顺序;根据多个子流程的执行顺序,依序执行多个子流程;在目标子流程执行失败后,增加判断是否满足重试的条件,在满足重试的条件的情况下,对目标子流程执行重试操作,在子流程执行失败后回滚操作的基础上增加重试操作,增加分布式事务执行成功的概率,提高事务的执行效率。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤101至步骤103的执行主体可以为设备A;又比如,步骤101和102的执行主体可以为设备A,步骤103的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
基于以上分布式事务处理方法的实施例,上述分布式事务处理方法可以在分布式事务处理设备上部署的多个事务引擎中执行,详细内容参见图2和图3分布式事务处理设备的实施例。其中,图2和图3所示分布式事务处理设备的软件架构仅为可以执行上述实施例提供的分布式事务处理方法的一种示例,并不限于此,上述实施例提供的分布式事务处理方法同样可以采用其它软件架构执行,本申请实施例重点以图2和图3所示分布式软件架构为例进行说明。
图2为本申请示例性实施例提供一种分布式事务处理设备200的示意图,如图2所示,该分布式事务处理设备200,包括:事务管理引擎21、事务执行引擎22和事务数据仓库23。
在本实施例中,事务管理引擎21,接收事务请求端发送的分布式事务的启动请求,分布式事务包括多个子流程;根据启动请求,获取预先配置的多个子流程的执行顺序;调用事务执行引擎22依序执行多个子流程,并接收事务执行引擎22返回的多个子流程的执行结果。
在本实施例中,事务执行引擎22,根据多个子流程的执行顺序,依序执行多个子流程;若存在目标子流程执行失败,判断目标子流程是否满足重试的条件;若是,则对目标子流程执行重试操作并生成重试目标子流程的执行结果,以及将重试目标子流程的执行结果返回至事务管理引擎21。其中,子流程执行结果包括重试子流程、子流程执行出错、子流程执行成功的结果。
在本实施例中,事务数据仓库23,用于存储分布式事务的多个子流程和多个子流程中的至少部分子流程对应的补偿流程,多个子流程和补偿流程的执行顺序,以及接收事务管理引擎返回的子流程的执行结果,并更新分布式事务的执行状态;以及在分布式事务启动后,向事务管理引擎21发送多个子流程与多个子流程的执行顺序,以及至少部分子流程对应的补偿流程以及至少部分子流程对应的补偿流程的执行顺序。
在分布式计算设备运行之前,需要预先将分布式事务拆分为多个子流程,为多个子流程配置补偿流程,以及配置多个子流程的执行顺序和补偿流程的执行顺序。一种可实现的方式为,将分布式事务拆分为多个子流程;为多个子流程中的至少部分子流程,设置补偿流程,以及设定多个子流程和补偿流程的执行顺序,并为多个子流程配置执行所需的参数。
下面以分布式事务为创建虚拟机为例进行说明:
创建虚拟机子流程的拆分原则为每个子流程也必须是一个完整的业务流程,即子流程也需要体现一定的事务性。可选地,创建虚拟机的流程拆分为创建磁盘、创建网卡和申请计算资源三个子流程;相应地,三个子流程对应的补偿流程分别为释放磁盘、释放网卡、释放计算资源三个补偿流程。特别地,并不是所有子流程都存在补偿流程,删除业务的子流程可以不存在补偿流程;例如,分布式事务为删除虚拟机,则删除虚拟机的流程拆分为释放磁盘、释放网卡、释放计算资源三个子流程,在这种情况下,三个子流程均不存在子流程。显而易见,也会存在部分子流程没有补偿流程的情形。
接着,设定所有子流程和补偿流程的执行顺序,其中,子流程的执行顺序和补偿流程的执行顺序相反。例如,三个子流程的执行顺序为:创建磁盘、创建网卡和申请计算资源;三个补偿流程的执行顺序为:释放计算资源、释放网卡和释放磁盘。
最后,配置多个子流程配置事务执行所需的参数,用户通过设定输入参数,向分布式计算设备请求与输入参数适配的资源。事务执行所需的参数包括但不限于:CPU数量、内容容量、磁盘容量和网卡IP地址等参数信息。用户根据需求修改参数可以配置不同的虚拟机。
在分布式事务配置完成之后,将分布式事务发送至分布式事务处理设备,分布式事务处理设备将分布式事务存储至事务数据仓库23中。
以下说明分布式事务处理的详细过程:
在本实施例中,事务请求端向分布式事务处理设备的事务管理引擎21发送分布式事务的启动请求,事务管理引擎21接收事务请求端发送的分布式事务的启动请求,事务管理引擎21根据启动请求,从事务数据仓库23中获取预先配置的多个子流程的执行顺序;事务管理引擎21根据多个子流程的执行顺序,调度事务执行引擎22依序执行多个子流程;事务执行引擎22在多个子流程执行的过程中,若存在目标子流程执行失败,事务执行引擎22判断目标子流程是否满足重试的条件;若是,则事务执行引擎22对目标子流程执行重试操作;若否,则向事务管理引擎21发送子流程执行出错的结果,按照目标子流程对应的至少一个目标补偿流程的执行顺序,继续调用事务执行引擎22对分布式事务执行回滚操作。本申请实施例在目标子流程执行失败后,增加判断是否满足重试的条件,在满足重试的条件的情况下,对目标子流程执行重试操作,在子流程执行失败后回滚操作的基础上增加重试操作,增加分布式事务执行成功的概率,提高事务的执行效率。
需要说明的是,本申请对事务请求端的实现形式不作限定,事务请求端的形式可以为用户终端或者请求节点。例如,用户通过用户终端主动向分布式事务处理设备发起创建虚拟机的启动请求,分布式事务处理设备接收该启动请求后,执行创建虚拟机的操作,并向用户终端反馈最终的执行结果;或者,请求节点响应删除虚拟机的周期到达指令,向分布式事务处理设备发起删除虚拟机的启动请求,分布式事务处理设备接收该启动请求后,执行删除虚拟机的操作,并向请求节点反馈最终的执行结果。进一步,本申请对用户终端的类型不作限定,可以为计算机设备或者手持设备,其实现形式可以有多种,例如可以是智能手机,个人电脑,平板电脑和智能音箱等;本申请同时对请求节点的类型不作限定,请求节点可以任意类型节点。
在上述实施例中,事务执行引擎22执行子流程共生成三种执行结果:子流程执行结果包括重试子流程、子流程执行出错、子流程执行成功。下面对事务执行引擎22执行子流程的过程以及事务执行引擎22生成以上几种执行结果的后续处理流程依次作出说明。
事务执行引擎22执行目标子流程,在目标子流程执行成功的情况下,事务执行引擎22生成子流程执行成功的结果,事务执行引擎22将子流程执行成功的结果返回至事务管理引擎21。事务管理引擎21接收到子流程执行成功的结果后,事务管理引擎21判断分布式事务是否结束;若是,则事务管理引擎21结束分布式事务处理流程;若否,事务管理引擎21选择下一个待执行的子流程,调用事务执行引擎22继续执行待执行的子流程。
事务执行引擎22目标子流程,若目标子流程执行失败,事务执行引擎22判断子流程是否满足重试的条件;若是,则对子流程执行重试操作并生成重试子流程的结果;若否,则对分布式事务执行回滚操作并生成子流程执行出错的结果。
可选地,若引擎事务执行引擎22生成子流程执行出错的结果,事务执行引擎22将子流程执行出错的结果返回至事务管理引擎21;事务管理引擎21接收到子流程执行出错的结果,事务管理引擎21判断当前已执行的子流程中是否存在对应补偿流程,可选地,若当前已执行的子流程中存在对应补偿流程,则事务管理引擎21获取至少一个已执行子流程对应的补偿流程作为至少一个目标补偿流程,按照至少一个目标补偿流程的执行顺序依次调度事务执行引擎22执行至少一个目标补偿流程;至少一个目标补偿流程的执行顺序与对应的至少一个已执行子流程的执行顺序相反;例如,创建虚拟机的流程拆分为创建磁盘、创建网卡和申请计算资源三个子流程;相应地,三个子流程对应的补偿流程分别为释放磁盘、释放网卡、释放计算资源三个补偿流程;事务执行引擎22创建网卡这个子流程执行失败,在执行回滚操作时,事务管理引擎21获取创建网卡和创建磁盘这两个子流程对应的释放网卡和释放网卡这两个目标补偿流程,按照释放网卡、释放网卡执行顺序依次调度事务执行引擎22执行这两个补偿流程。可选地,若当前已执行的子流程中不存在对应补偿流程,则事务管理引擎21停止执行分布式事务的回滚操作。例如,分布式事务为删除虚拟机,删除虚拟机的流程拆分为释放磁盘、释放网卡、释放计算资源三个子流程;释放磁盘这个子流程执行失败,在执行回滚操作时,不存在补偿流程,则事务管理引擎21停止执行分布式事务的回滚操作。
可选地,事务执行引擎22生成子流程执行重试子流程的结果,将子流程执行重试子流程的结果返回至事务管理引擎21。
在上述实施例中,事务执行引擎22判断目标子流程是否满足重试的条件。一种可实现的方式为,事务执行引擎22调用执行目标子流程过程中使用的RPC接口,得到目标子流程对应的网络通信结果;若网络通信结果为网络通信超时,则目标子流程满足重试的条件;若网络通信结果为网络通信正常,还需要由当前业务特点,需要业务编写子流程结果状态判断脚本,这个脚本如果不存在,则认为不满足重试条件,如果这个脚本存在,则以这个脚本的执行结果判断是否可以重试。需要说明的是,RPC(Remote Procedure Call,远程过程调用),在分布式场景下,多个子系统或子服务之间的通信方式是RPC调用,远程调用有三种状态:成功、失败和未知;其中,调用执行目标子流程过程中使用的RPC接口,若调用结果成功状态或者失败状态,则网络通信结果为网络通信正常,目标子流程不满足重试的条件;若调用结果为未知状态,则网络通信结果为网络通信超时,则目标子流程满足重试的条件。
进一步,在上述实施例中,对目标子流程执行重试操作,记录目标子流程的重试次数;若目标子流程的重试次数超过设定次数,则向目标管理设备发送提醒指令,以提醒管理人员执行维护操作。例如,设定次数为2次,目标子流程的重试次数达到3次时,分布式事务处理设备向目标管理设备发送提醒指令,目标管理设备接收到提醒指令后,展示提示内容,以提醒管理人员执行维护操作。本申请实施例对提示内容的实现形式不作限定,提示内容的实现形式包括但不限于:邮件,短信和弹窗。本申请实施例对设定次数不作限定,设定次数可以根据实际情况作出调整。
在上述实施例中,事务管理引擎21按照目标子流程对应的至少一个目标补偿流程的执行顺序,调用事务执行引擎22对分布式事务执行回滚操作。若事务管理引擎21判断当前已执行的子流程中存在对应补偿流程,则获取至少一个已执行子流程对应的补偿流程作为至少一个目标补偿流程;按照至少一个目标补偿流程的执行顺序调用事务执行引擎22依次执行至少一个目标补偿流程。若事务管理引擎21判断当前已执行的子流程中不存在对应补偿流程,则停止执行分布式事务的回滚操作。
可选地,事务管理引擎21按照目标子流程对应的至少一个目标补偿流程的执行顺序,调度事务执行引擎22对分布式事务执行回滚操作,事务执行引擎22生成子流程执行出错结果。一种可实现的方式为,若事务管理引擎21判断当前已执行的子流程中存在对应补偿流程,则获取至少一个已执行子流程对应的补偿流程作为至少一个目标补偿流程;按照至少一个目标补偿流程的执行顺序调度事务执行引擎22依次执行至少一个目标补偿流程;至少一个目标补偿流程的执行顺序与对应的至少一个已执行子流程的执行顺序相反;其中,当前已执行的子流程包括目标子流程,或者同时包括目标子流程和在目标子流程之前已执行的其它子流程。例如,创建虚拟机的流程拆分为创建磁盘、创建网卡和申请计算资源三个子流程;相应地,三个子流程对应的补偿流程分别为释放磁盘、释放网卡、释放计算资源三个补偿流程;事务执行引擎22在创建网卡这个子流程执行失败,事务执行引擎22向事务管理引擎21返回子流程执行出错的结果,执行回滚操作时,事务管理引擎21获取创建网卡和创建磁盘这两个子流程对应的释放网卡和释放网卡这两个目标补偿流程,按照释放网卡、释放网卡执行顺序依次调用事务执行引擎22执行这两个补偿流程。
可选地,若事务管理引擎21判断当前已执行的子流程中不存在对应补偿流程,则事务管理引擎21停止执行分布式事务的回滚操作。例如,分布式事务为删除虚拟机,删除虚拟机的流程拆分为释放磁盘、释放网卡、释放计算资源三个子流程;释放磁盘这个子流程执行失败,在执行回滚操作时,不存在补偿流程,则分布式事务处理设备停止执行分布式事务的回滚操作。
在上述分布式事务执行完成后,分布式计算设备根据子流程的执行结果,向事务请求端反馈事务执行结果。事务管理引擎21若判断出存在子流程执行出错的执行结果,生成分布式事务的事务执行失败结果,并向事务请求端发送事务执行失败结果;若事务管理引擎21接收到事务执行引擎22发送的多个子流程的执行结果均为子流程执行成功的执行结果,则生成分布式事务的事务执行成功结果,并向事务请求端发送事务执行成功结果。其中,子流程执行出错包括第一次执行子流程执行失败和重试子流程这两种情形。
在分布式事务执行的整个过程中,事务管理引擎21不断更新事务数据仓库23中的分布式事务的执行状态。
图3为本申请示例性实施例提供的另一种分布式事务处理设备300的示意图,如图3所示,该分布式事务处理设备300,包括:事务管理引擎31、事务执行引擎32、事务恢复引擎33和事务数据仓库34。
在本实施例中,事务管理引擎31,接收事务请求端发送的分布式事务的启动请求,分布式事务包括多个子流程;根据启动请求,获取预先配置的多个子流程的执行顺序;调用事务执行引擎32依序执行多个子流程,并接收事务执行引擎32返回的多个子流程的执行结果。
在本实施例中,事务执行引擎32,根据多个子流程的执行顺序,依序执行多个子流程;若存在目标子流程执行失败,判断目标子流程是否满足重试的条件;若是,则对目标子流程执行重试操作并生成重试目标子流程的执行结果,以及将重试目标子流程的执行结果返回至事务管理引擎31。其中,子流程执行结果包括重试子流程、子流程执行出错、子流程执行成功的结果。
在本实施例中,事务数据仓库34,用于存储分布式事务的多个子流程和多个子流程中的至少部分子流程对应的补偿流程,多个子流程和补偿流程的执行顺序,以及分布式事务的执行状态;以及在分布式事务启动后,向事务管理引擎21发送多个子流程与多个子流程的执行顺序,以及至少部分子流程对应的补偿流程以及至少部分子流程对应的补偿流程的执行顺序。
在本实施例中,事务恢复引擎32,用于响应事务恢复请求,从事务数据仓库中读取分布式事务对应的至少一个尚未成功执行的子流程以及至少一个尚未成功执行的子流程的执行顺序,其中,事务恢复请求是在分布式事务系统重启后生成的,并向事务管理引擎31发送事务重启请求,事务管理引擎31,接收事务恢复引擎32发送的事务重启请求,调用事务执行引擎32根据至少一个尚未成功执行的子流程的执行顺序执行至少一个尚未成功执行的子流程;事务执行引擎32,根据至少一个尚未成功执行的子流程的执行顺序执行至少一个尚未成功执行的子流程,并向事务管理引擎31返回至少一个尚未成功执行的子流程的执行结果。
在本实施例中,分布式事务处理设备在执行分布式事务处理的过程中,可能会存在重启操作。当系统重启后,分布式事务处理设备响应事务恢复请求,事务恢复引擎33从事务数据仓库34获取分布式事务对应的至少一个尚未成功执行的子流程,其中,事务恢复请求是在分布式事务系统重启后生成的;事务管理引擎31根据至少一个尚未成功执行的子流程的执行顺序,调用事务执行引擎32执行至少一个尚未成功执行的子流程。例如,当系统重启后,分布式事务处理设备响应事务回复请求,事务恢复引擎33从事务数据仓库34中获取分布式事务对应的尚未成功执行的子流程,并向事务管理引擎31发送事务重启请求;事务管理引擎31接收事务重启请求,按照前述分布式事务的处理方法的各实施例的子流程的执行逻辑,调用事务管理引擎继续执行至少一个尚未成功执行的子流程,其中,分布式事务的子流程的执行过程可参见前述各实施例,在此不再赘述。
图4为本申请示例性实施例提供的另一种分布式事务处理设备的示意图。如图4所示,该分布式事务处理设备包括:存储器401和处理器402。另外,该分布式事务处理设备还包括电源组件403、通信组件404等必要组件。
存储器401,用于存储计算机程序,并可被配置为存储其它各种数据以支持在分布式事务处理设备上的操作。这些数据的示例包括用于在分布式事务处理设备上操作的任何应用程序或方法的指令。
存储器401,可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
通信组件404,用于与其他设备进行数据传输。
处理器402,可执行存储器401中存储的计算机指令,以用于:接收事务请求端发送的分布式事务的启动请求,分布式事务包括多个子流程;根据启动请求,获取预先配置的多个子流程的执行顺序;根据多个子流程的执行顺序,依序执行多个子流程;若存在目标子流程执行失败,判断目标子流程是否满足重试的条件;若是,则对目标子流程执行重试操作。
可选地,处理器402在判断目标子流程是否满足重试的条件时,具体用于:调用执行目标子流程过程中使用的RPC接口,得到目标子流程对应的网络通信结果;若网络通信结果为网络通信超时,则目标子流程满足重试的条件。
可选地,处理器402在对目标子流程执行重试操作之后,还可用于:记录目标子流程的重试次数;若目标子流程的重试次数超过设定次数,则向目标管理设备发送提醒指令,以提醒管理人员执行维护操作。
可选地,分布式事务还包括:至少部分子流程对应的补偿流程,处理器402在判断目标子流程是否满足重试的条件之后,还可用于:若否,则按照目标子流程对应的至少一个目标补偿流程的执行顺序,对分布式事务执行回滚操作。
可选地,处理器402在按照目标子流程对应的至少一个目标补偿流程的执行顺序,对分布式事务执行回滚操作时,具体用于:若当前已执行的子流程中存在对应补偿流程,则获取至少一个已执行子流程对应的补偿流程作为至少一个目标补偿流程;按照至少一个目标补偿流程的执行顺序依次执行至少一个目标补偿流程;至少一个目标补偿流程的执行顺序与对应的至少一个已执行子流程的执行顺序相反;其中,当前已执行的子流程包括目标子流程,或者同时包括目标子流程和在目标子流程之前已执行的其它子流程。
可选地,处理器402,还可用于:若当前已执行的子流程中不存在对应补偿流程,则停止执行分布式事务的回滚操作。
可选地,处理器402,还可用于:响应事务恢复请求,获取分布式事务对应的至少一个尚未成功执行的子流程,其中,事务恢复请求是在分布式事务系统重启后生成的;根据至少一个尚未成功执行的子流程的执行顺序,执行至少一个尚未成功执行的子流程。
可选地,处理器402在获取启动请求之前,还可用于:将分布式事务拆分为多个子流程;为多个子流程中的至少部分子流程,设置补偿流程,以及设定多个子流程和补偿流程的执行顺序,并为多个子流程配置执行所需的参数。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质。当计算机可读存储介质存储计算机程序,且计算机程序被一个或多个处理器执行时,致使一个或多个处理器执行图1a方法实施例中的各步骤。
上述图4中的通信组件被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G/LTE、5G等移动通信网络,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
上述图4中的电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
上述分布式事务处理设备,还可以包括显示器和音频组件。
其中,显示器包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
音频组件,可被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(MIC),当音频组件所在设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信号。
在本申请上述设备实施例中,分布式事务处理设备接收事务请求端发送的分布式事务的启动请求;根据启动请求,获取预先配置的多个子流程的执行顺序;根据多个子流程的执行顺序,依序执行多个子流程;在目标子流程执行失败后,增加判断是否满足重试的条件,在满足重试的条件的情况下,对目标子流程执行重试操作,在子流程执行失败后回滚操作的基础上增加重试操作,增加分布式事务执行成功的概率,提高事务的执行效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (20)
1.一种分布式事务处理方法,其特征在于,包括:
接收事务请求端发送的分布式事务的启动请求,所述分布式事务包括多个子流程;
根据所述启动请求,获取预先配置的所述多个子流程的执行顺序;
根据所述多个子流程的执行顺序,依序执行所述多个子流程;
若存在目标子流程执行失败,则判断所述目标子流程是否满足重试的条件;
若是,则对所述目标子流程执行重试操作。
2.根据权利要求1所述的方法,其特征在于,判断所述目标子流程是否满足重试的条件,包括:
调用执行所述目标子流程过程中使用的RPC接口,得到所述目标子流程对应的网络通信结果;
若网络通信结果为网络通信超时,则所述目标子流程满足重试的条件。
3.根据权利要求1所述的方法,其特征在于,在对所述目标子流程执行重试操作之后,所述方法还包括:
记录所述目标子流程的重试次数;
若所述目标子流程的重试次数超过设定次数,则向目标管理设备发送提醒指令,以提醒管理人员执行维护操作。
4.根据权利要求1所述的方法,其特征在于,所述分布式事务还包括:至少部分子流程对应的补偿流程,在判断所述目标子流程是否满足重试的条件之后,所述方法还包括:
若否,则按照所述目标子流程对应的至少一个目标补偿流程的执行顺序,对所述分布式事务执行回滚操作。
5.根据权利要求4所述的方法,其特征在于,按照所述目标子流程对应的至少一个目标补偿流程的执行顺序,对所述分布式事务执行回滚操作,包括:
若当前已执行的子流程中存在对应补偿流程,则获取至少一个已执行子流程对应的补偿流程作为至少一个目标补偿流程;
按照所述至少一个目标补偿流程的执行顺序依次执行所述至少一个目标补偿流程;所述至少一个目标补偿流程的执行顺序与对应的至少一个已执行子流程的执行顺序相反;
其中,当前已执行的子流程包括目标子流程,或者同时包括目标子流程和在目标子流程之前已执行的其它子流程。
6.根据权利要求5所述的方法,其特征在于,还包括:
若当前已执行的子流程中不存在对应补偿流程,则停止执行所述分布式事务的回滚操作。
7.根据权利要求1所述的方法,其特征在于,还包括:
响应事务恢复请求,获取分布式事务对应的至少一个尚未成功执行的子流程,其中,事务恢复请求是在分布式事务系统重启后生成的;
根据所述至少一个尚未成功执行的子流程的执行顺序,执行所述至少一个尚未成功执行的子流程。
8.根据权利要求1所述的方法,其特征在于,在获取启动请求之前,所述方法还包括:
将分布式事务拆分为多个子流程;
为所述多个子流程中的至少部分子流程,设置补偿流程,以及设定所述多个子流程和所述补偿流程的执行顺序,并为所述多个子流程配置执行所需的参数。
9.一种分布式事务处理设备,包括:事务管理引擎和事务执行引擎;
所述事务管理引擎,用于接收事务请求端发送的分布式事务的启动请求,所述分布式事务包括多个子流程;根据所述启动请求,获取预先配置的所述多个子流程的执行顺序;调用事务执行引擎依序执行所述多个子流程;
所述事务执行引擎,用于根据所述多个子流程的执行顺序,依序执行所述多个子流程;若存在目标子流程执行失败,判断所述目标子流程是否满足重试的条件;若是,则对所述目标子流程执行重试操作。
10.根据权利要求9所述的设备,其特征在于,所述分布式事务处理设备还包括:事务数据仓库;
所述事务数据仓库,用于存储分布式事务的多个子流程和多个子流程中的至少部分子流程对应的补偿流程,多个子流程和所述补偿流程的执行顺序;在分布式事务启动后,向事务管理引擎发送分布式事务的多个子流程以及多个子流程的执行顺序。
11.根据权利要求10所述的设备,其特征在于,
所述事务管理引擎,还用于在分布式事务启动后,从事务数据仓库获取多个子流程与多个子流程的执行顺序,以及接收事务执行引擎返回的所述多个子流程的执行结果;
所述事务数据仓库,还用于接收事务管理引擎返回的子流程的执行结果,并更新分布式事务的执行状态。
12.根据权利要求10所述的设备,其特征在于,还包括:事务恢复引擎;
所述事务恢复引擎,用于响应事务恢复请求,从事务数据仓库中读取所述分布式事务至少一个尚未成功执行的子流程以及至少一个尚未成功执行的子流程的执行顺序,其中,事务恢复请求是在分布式事务系统重启后生成的,并向事务管理引擎发送事务重启请求;
所述事务管理引擎,还用于接收事务恢复引擎发送的事务重启请求,调用事务执行引擎根据至少一个尚未成功执行的子流程的执行顺序执行所述至少一个尚未成功执行的子流程;
所述事务执行引擎,还用于根据至少一个尚未成功执行的子流程的执行顺序执行所述至少一个尚未成功执行的子流程,并向事务管理引擎返回至少一个尚未成功执行的子流程的执行结果。
13.根据权利要求10所述的设备,其特征在于,所述事务管理引擎接收事务执行引擎返回的所述多个子流程的执行结果之后,还用于:
若接收到事务执行引擎发送的至少一个子流程执行出错的执行结果,则生成所述分布式事务的事务执行失败结果,并向事务请求端发送所述事务执行失败结果;
若接收到事务执行引擎发送的所述分布式事务的所有子流程的执行结果均为子流程执行成功的执行结果,则生成所述分布式事务的事务执行成功结果,并向事务请求端发送所述事务执行成功结果。
14.根据权利要求9所述的设备,其特征在于,所述事务执行引擎,判断所述目标子流程是否满足重试的条件,具体用于:
调用执行所述目标子流程过程中使用的RPC接口,得到所述目标子流程对应的网络通信结果;
若网络通信结果为网络通信超时,则所述目标子流程满足重试的条件。
15.根据权利要求9所述的设备,其特征在于,所述事务执行引擎在对所述目标子流程执行重试操作之后,还可用于:
记录所述目标子流程的重试次数;
若目标子流程的重试次数超过设定次数,则向目标管理设备发送提醒指令,以提醒管理人员执行维护操作。
16.根据权利要求10所述的设备,其特征在于,所述分布式事务还包括:至少部分子流程对应的补偿流程,
所述事务管理引擎,还用于从事务数据仓库获取所述至少部分子流程对应的补偿流程以及至少部分子流程对应的补偿流程的执行顺序;
所述事务执行引擎,在判断所述目标子流程是否满足重试的条件之后,还可用于:
若否,则按照所述目标子流程对应的至少一个目标补偿流程的执行顺序,对所述分布式事务执行回滚操作。
17.根据权利要求16所述的设备,其特征在于,所述事务执行引擎,按照所述目标子流程对应的至少一个目标补偿流程的执行顺序,对所述分布式事务执行回滚操作,具体用于:
若当前已执行的子流程中存在对应补偿流程,则获取至少一个已执行子流程对应的补偿流程作为至少一个目标补偿流程;
按照所述至少一个目标补偿流程的执行顺序依次执行所述至少一个目标补偿流程;所述至少一个目标补偿流程的执行顺序与对应的至少一个已执行子流程的执行顺序相反;
其中,当前已执行的子流程包括目标子流程,或者同时包括目标子流程和在目标子流程之前已执行的其它子流程。
18.根据权利要求17所述的设备,其特征在于,所述事务执行引擎,还用于:
若当前已执行的子流程中不存在对应补偿流程,则停止执行所述分布式事务的回滚操作。
19.一种分布式事务处理设备,其特征在于,包括:存储器和处理器;
所述存储器,用于存储一条或多条计算机指令;
所述处理器,用于执行所述一条或多条计算机指令以用于:
接收事务请求端发送的分布式事务的启动请求,所述分布式事务包括多个子流程;
根据所述启动请求,获取预先配置的所述多个子流程的执行顺序;
根据所述多个子流程的执行顺序,依序执行所述多个子流程;
若存在目标子流程执行失败,则判断所述目标子流程是否满足重试的条件;
若是,则对所述目标子流程执行重试操作。
20.一种存储有计算机程序的计算机可读存储介质,其特征在于,当所述计算机程序被一个或多个处理器执行时,致使所述一个或多个处理器执行权利要求1-8任一项所述的方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110139205.8A CN112835688A (zh) | 2021-02-01 | 2021-02-01 | 分布式事务处理方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110139205.8A CN112835688A (zh) | 2021-02-01 | 2021-02-01 | 分布式事务处理方法、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112835688A true CN112835688A (zh) | 2021-05-25 |
Family
ID=75931459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110139205.8A Pending CN112835688A (zh) | 2021-02-01 | 2021-02-01 | 分布式事务处理方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112835688A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113420011A (zh) * | 2021-06-29 | 2021-09-21 | 平安消费金融有限公司 | redis事务回滚方法、装置、计算机设备和存储介质 |
CN113467898A (zh) * | 2021-09-02 | 2021-10-01 | 北京开科唯识技术股份有限公司 | 多方协同业务处理方法及系统 |
CN113485998A (zh) * | 2021-07-27 | 2021-10-08 | 中国银行股份有限公司 | Redis事务处理方法及装置、电子设备、存储介质 |
CN113823025A (zh) * | 2021-08-24 | 2021-12-21 | 广州市瑞立德信息系统有限公司 | 一种命令重试方法、系统、设备及存储介质 |
CN113900840A (zh) * | 2021-12-08 | 2022-01-07 | 浙江新华移动传媒股份有限公司 | 一种分布式事务最终一致性处理方法及装置 |
CN114090194A (zh) * | 2021-11-24 | 2022-02-25 | 中国银行股份有限公司 | 一种实现分布式事务一致性的方法及装置 |
CN114971163A (zh) * | 2022-04-13 | 2022-08-30 | 中移互联网有限公司 | 重新发起业务请求的执行方法及执行装置 |
CN115756768A (zh) * | 2023-01-10 | 2023-03-07 | 深圳复临科技有限公司 | 基于saga的分布式事务处理方法、装置、设备及介质 |
CN116069868A (zh) * | 2023-03-13 | 2023-05-05 | 徐工汉云技术股份有限公司 | 基于企业微服务的分布式柔性事务处理方法和装置 |
CN116126481A (zh) * | 2023-02-06 | 2023-05-16 | 安芯网盾(北京)科技有限公司 | 分布式长事务的处理方法及装置 |
-
2021
- 2021-02-01 CN CN202110139205.8A patent/CN112835688A/zh active Pending
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113420011A (zh) * | 2021-06-29 | 2021-09-21 | 平安消费金融有限公司 | redis事务回滚方法、装置、计算机设备和存储介质 |
CN113485998A (zh) * | 2021-07-27 | 2021-10-08 | 中国银行股份有限公司 | Redis事务处理方法及装置、电子设备、存储介质 |
CN113823025A (zh) * | 2021-08-24 | 2021-12-21 | 广州市瑞立德信息系统有限公司 | 一种命令重试方法、系统、设备及存储介质 |
CN113467898A (zh) * | 2021-09-02 | 2021-10-01 | 北京开科唯识技术股份有限公司 | 多方协同业务处理方法及系统 |
CN114090194A (zh) * | 2021-11-24 | 2022-02-25 | 中国银行股份有限公司 | 一种实现分布式事务一致性的方法及装置 |
CN113900840A (zh) * | 2021-12-08 | 2022-01-07 | 浙江新华移动传媒股份有限公司 | 一种分布式事务最终一致性处理方法及装置 |
CN114971163A (zh) * | 2022-04-13 | 2022-08-30 | 中移互联网有限公司 | 重新发起业务请求的执行方法及执行装置 |
CN114971163B (zh) * | 2022-04-13 | 2023-08-18 | 中移互联网有限公司 | 重新发起业务请求的执行方法及执行装置 |
CN115756768A (zh) * | 2023-01-10 | 2023-03-07 | 深圳复临科技有限公司 | 基于saga的分布式事务处理方法、装置、设备及介质 |
CN116126481A (zh) * | 2023-02-06 | 2023-05-16 | 安芯网盾(北京)科技有限公司 | 分布式长事务的处理方法及装置 |
CN116126481B (zh) * | 2023-02-06 | 2023-08-25 | 安芯网盾(北京)科技有限公司 | 分布式长事务的处理方法及装置 |
CN116069868A (zh) * | 2023-03-13 | 2023-05-05 | 徐工汉云技术股份有限公司 | 基于企业微服务的分布式柔性事务处理方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112835688A (zh) | 分布式事务处理方法、设备及存储介质 | |
US10824981B2 (en) | Transaction orchestration for microservice | |
CN111813601B (zh) | 有状态分布式集群的微服务回滚方法及装置 | |
CN111784329B (zh) | 业务数据的处理方法和装置、存储介质、电子装置 | |
US11659021B2 (en) | Asynchronous distributed modular function calling | |
CN111078506A (zh) | 业务数据跑批任务监控方法及装置 | |
CN109614271A (zh) | 多个集群数据一致性的控制方法、装置、设备及存储介质 | |
US8719622B2 (en) | Recording and preventing crash in an appliance | |
CN112015657A (zh) | 自动化测试数据管理方法及系统 | |
CN112181723A (zh) | 一种金融灾备方法、装置、存储介质及电子设备 | |
CN111352719A (zh) | 交易簿记服务数据处理方法、装置及系统 | |
CN111930624B (zh) | 测试链路报文数据处理方法及装置 | |
CN113094571A (zh) | 多平台对账方法及装置 | |
CN116257466A (zh) | 内存访问方法、计算节点及相关单元与存储介质 | |
US10728323B2 (en) | Method and apparatus for operating infrastructure layer in cloud computing architecture | |
CN114064343B (zh) | 一种区块链的异常处置方法及装置 | |
CN111209342B (zh) | 分布式系统、数据同步与节点管理方法、设备及存储介质 | |
CN112416641B (zh) | 主从架构中被控端节点重启检测方法及主控端节点 | |
CN113138717A (zh) | 节点部署方法、设备及存储介质 | |
CN111324386B (zh) | 分身应用程序的启动方法、装置、电子设备及存储介质 | |
CN111435320B (zh) | 一种数据处理方法及其装置 | |
CN113377385A (zh) | 客户端自动部署方法及装置 | |
CN114048177B (zh) | 分享方法及装置、电子设备、存储介质及程序产品 | |
CN114765596B (zh) | 社交关系的构建方法、装置、服务器及存储介质 | |
CN106899650B (zh) | 一种更新数据方法与装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |