CN111475583B - 事务处理方法及装置 - Google Patents
事务处理方法及装置 Download PDFInfo
- Publication number
- CN111475583B CN111475583B CN202010567361.XA CN202010567361A CN111475583B CN 111475583 B CN111475583 B CN 111475583B CN 202010567361 A CN202010567361 A CN 202010567361A CN 111475583 B CN111475583 B CN 111475583B
- Authority
- CN
- China
- Prior art keywords
- transaction
- commit
- resource server
- state
- distributed
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 44
- 238000002360 preparation method Methods 0.000 claims abstract description 110
- 230000004044 response Effects 0.000 claims abstract description 22
- 238000012545 processing Methods 0.000 claims description 44
- 238000000034 method Methods 0.000 claims description 40
- 238000011084 recovery Methods 0.000 claims description 24
- 238000003860 storage Methods 0.000 claims description 8
- 238000005096 rolling process Methods 0.000 claims description 4
- 238000009826 distribution Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 12
- 238000002955 isolation Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书提供事务处理方法及装置,其中,该事务处理方法包括:响应于客户端对分布式事务的事务提交请求,确定与分布式事务对应的多个资源服务器,分布式事务包括多个分支事务;在准备阶段,记录分布式事务的提交日志,以及向每个资源服务器发送准备请求;若确认每个资源服务器对应的分支事务均准备成功,则向客户端返回分布式事务提交成功的消息;在提交阶段,向每个资源服务器发送提交请求,该提交请求用于使资源服务器提交对应的分支事务。根据本说明书实施例的技术方案,能够显著降低客户端的提交延迟。
Description
技术领域
本说明书实施例涉及计算机技术领域,特别涉及一种事务处理方法。本说明书实施例同时涉及一种事务处理装置,一种计算设备,以及一种计算机可读存储介质。
背景技术
随着互联网技术的发展,越来越多的业务部署在分布式系统上,如何在分布式系统上进行分布式事务的处理成了关注的焦点。
在一种技术方案中,分布式事务提交需要使用2PC(Two-Phase Commit,两阶段提交)协议来保证分布式事务的原子性和一致性,这导致在提交分布式事务时,需要至少等待两轮网络交互即2RTT(Round-Trip Time,往返时间),才能确保分布式事务提交成功。在分布式节点之间网络延迟较高的情况下,这种机制会导致分布式系统处理分布式事务的时延上升。
因此,如何降低分布式系统中事务处理的时延成为了亟待解决的技术难题。
发明内容
有鉴于此,本说明书实施例提供了一种事务处理方法。本说明书同时涉及一种事务处理装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种事务处理方法,应用于事务管理器端,所述方法包括:
响应于客户端对分布式事务的事务提交请求,确定与所述分布式事务对应的多个资源服务器,其中,所述分布式事务包括多个分支事务;
在准备阶段,记录所述分布式事务的提交日志,以及向每个所述资源服务器发送准备请求;
若确认每个所述资源服务器对应的分支事务均准备成功,则向所述客户端返回所述分布式事务提交成功的消息;
在提交阶段,向每个所述资源服务器发送提交请求,所述提交请求用于使所述资源服务器提交对应的所述分支事务。
根据本说明书实施例的第二方面,提供了另一种事务处理方法,应用于分布式系统,所述分布式系统包括事务管理器以及多个资源服务器,所述方法包括:
响应于客户端对分布式事务的事务提交请求,通过所述事务管理器确定与所述分布式事务对应的多个资源服务器,其中,所述分布式事务包括多个分支事务;
在准备阶段,记录所述分布式事务的提交日志,向每个所述资源服务器发送准备请求,以及在每个所述资源服务器上记录对应的分支事务的事务状态;
若确认每个所述资源服务器对应的分支事务均准备成功,则通过所述事务管理器向所述客户端返回所述分布式事务提交成功的消息;
在提交阶段,通过所述事务管理器向每个所述资源服务器发送提交请求,所述提交请求用于使所述资源服务器提交对应的所述分支事务。
根据本说明书实施例的第三方面,提供了一种事务处理装置,应用于事务管理器端,所述装置包括:
资源服务器确定模块,用于响应于客户端对分布式事务的事务提交请求,确定与所述分布式事务对应的多个资源服务器,其中,所述分布式事务包括多个分支事务;
准备阶段处理模块,用于在准备阶段,记录所述分布式事务的提交日志,以及向每个所述资源服务器发送准备请求;
返回模块,用于若确认每个所述资源服务器对应的分支事务均准备成功,则向所述客户端返回所述分布式事务提交成功的消息;
提交阶段处理模块,用于在提交阶段,向每个所述资源服务器发送提交请求,所述提交请求用于使所述资源服务器提交对应的所述分支事务。
根据本说明书实施例的第四方面,提供了另一种事务处理装置,包括:应用于分布式系统,所述分布式系统包括事务管理器以及多个资源服务器,所述装置包括:
资源服务器确定模块,用于响应于客户端对分布式事务的事务提交请求,通过所述事务管理器确定与所述分布式事务对应的多个资源服务器,其中,所述分布式事务包括多个分支事务;
准备阶段处理模块,用于在准备阶段,记录所述分布式事务的提交日志,向每个所述资源服务器发送准备请求,以及在每个所述资源服务器上记录对应的分支事务的事务状态;
返回模块,用于若确认每个所述资源服务器对应的分支事务均准备成功,则通过所述事务管理器向所述客户端返回所述分布式事务提交成功的消息;
提交阶段处理模块,用于在提交阶段,通过所述事务管理器向每个所述资源服务器发送提交请求,所述提交请求用于使所述资源服务器提交对应的所述分支事务。
根据本说明书实施例的第五方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令以实现以下步骤:
响应于客户端对分布式事务的事务提交请求,确定与所述分布式事务对应的多个资源服务器,其中,所述分布式事务包括多个分支事务;
在准备阶段,记录所述分布式事务的提交日志,以及向每个所述资源服务器发送准备请求;
在若确认每个所述资源服务器对应的分支事务均准备成功,则向所述客户端返回所述分布式事务提交成功的消息;
在提交阶段,向每个所述资源服务器发送提交请求,所述提交请求用于使所述资源服务器提交对应的所述分支事务。
根据本说明书实施例的第六方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现任意所述事务处理方法的步骤。
本说明书一实施例的技术方案,在准备阶段完成之后,若确认每个资源服务器均准备成功,则向用户返回分布式事务提交成功的消息,使得用户确认事务已提交的时间缩短,能够显著降低客户端的提交延迟。
附图说明
图1为一种技术方案中的2PC提交的流程示意图。
图2为本说明书一些实施例提供的事务处理方法的应用场景的示意图。
图3为本说明书一些实施例提供的事务处理方法的流程示意图。
图4为本说明书另一些实施例提供的事务处理方法的流程示意图。
图5为本说明书又一些实施例提供的事务处理方法的流程示意图。
图6为本说明书再一些实施例提供的事务处理方法的恢复过程的流程示意图。
图7为本说明书又一些实施例提供的事务处理方法的流程示意图。
图8为本说明书另一些实施例提供的事务处理方法的流程示意图。
图9为本说明书一些实施例提供的事务处理装置的结构示意图。
图10为本说明书另一些实施例提供的事务处理装置的结构示意图。
图11为本说明书一实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
事务:由多条SQL(Structured Query Language,结构化查询语言)语句组成的一个执行单元,具有原子性、一致性、隔离性、持久性4个特性。
XA事务:XA是一个分布式事务协议,所以XA 事务也称为分布式事务。XA 协议主要定义了事务管理器和资源服务器之间的接口。其中,资源服务器往往由数据库实现,如DB2、MySQL,事务管理器作为全局的调度者,负责各个资源服务器的本地资源的提交和回滚。XA事务是基于2PC协议实现的,可以保证数据的强一致性。
分布式事务:是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于分布式系统的不同节点之上。
分支事务:在分布式事务涉及的各个资源服务器上执行的与该分布式事务对应的本地事务,可以称为分支事务。
2PC:两阶段提交协议的缩写,2PC协议将事务提交分成准备(prepare)和提交(commit)两个阶段:prepare 阶段中,数据节点准备好所有事务提交所需的资源(例如写本地日志);commit阶段中,各个数据节点才真正提交事务。
准备阶段:即prepare阶段,两阶段提交的第一阶段,事务管理器收集所有资源服务器的投票结果。
提交阶段:即commit阶段,两阶段提交的第二阶段,事务管理器综合所有资源服务器的投票结果,然后通知参与事务的资源服务器提交事务。
RTT(Round-Trip Time,往返时间),在计算机网络中指请求发生到处理完成收到返回响应的时间。
准备中状态:即staging状态,描述的是分布式事务整体的一个状态(分布式事务管理器使用的),表示这个分布式事务没有完全提交完成,在准备进行中。
已提交状态:即Committed状态,表示已向用户返回了提交成功信息,该分布式事务可以提交。
DRDS:是一种分布式关系型数据库服务(Distributed Relational DatabaseService,DRDS),DRDS高度兼容MySQL协议和语法,支持自动化水平拆分、在线平滑扩缩容、弹性扩展、透明读写分离,具备数据库全生命周期运维管控能力。
TSO(TimeStamp组件,全局时间分配组件):用于分配不重复的递增时间戳,确定事务的先后顺序,从而确定事务之间的可见性。
目前,在提交分布式事务时一般使用2PC提交来保证分布式事务的原子性和一致性。参照图1所示,该分布式系统包括MySQL1、MySQL2、MySQL3这三个资源服务器或分片,MySQL1为分布式事务涉及的第一个资源服务器,作为主资源服务器,主资源服务器上使用普通单机事务,其他资源服务器上使用XA事务。在用户端向DRDS即事务管理器发起XA事务请求时,DRDS向所有参与分布式事务的资源服务器即MySQL1-MySQL3发送XA事务开始的指令。
进一步地,在用户端向DRDS发出对分布式事务的提交请求时,即在两阶段提交中:DRDS向除主资源服务器之外的资源服务器MySQL2和MySQL3发送XA事务结束(XA end)指令,并发送XA事务准备(即XA prepare)指令,使资源服务器进行准备prepare状态。DRDS等待所有资源服务器返回准备成功的消息后,在主资源服务器记录分布式事务的提交日志(提交日志用于故障恢复),再向资源服务器发送提交commit指令,所有资源服务器全部返回提交成功的消息后,向用户返回分布式事务提交成功的响应。在图1的技术方案中,完成提交需要至少两轮网络交互,时间延迟至少为2RTT。在分布式节点之间网络延迟较高的情况下,这种机制会导致分布式系统处理事务的延迟上升。
若分布式事务的多个分支事务均准备prepare成功,则该分布式事务一定可以提交commit成功,因此,可以在所有参与该分布式事务的资源服务器均成功进行准备prepare操作之后,直接向用户或客户端返回该分布式事务提交成功的消息。基于上述内容,本说明书实施例的基本思想在于:在准备阶段完成之后,若确认每个资源服务器均准备成功,则向用户返回分布式事务提交成功的消息。根据本说明书实施例中的技术方案,在准备阶段完成之后,若确认每个资源服务器均准备成功,则向用户返回分布式事务提交成功的消息,使得用户确认事务已提交的时间缩短,能够显著降低用户端或客户端的提交延迟。
在介绍了本说明书实施例的基本思想之后,下面将结合附图对本说明书的实施例中逐一进行详细说明。
图2为本说明书一些实施例提供的事务处理方法的应用场景的示意图。
参照图2所示,该应用场景包括客户端、DRDS、MySQL1至MySQL3,其中,客户端为应用程序客户端。客户端可以为应用程序例如购物应用程序客户端、支付应用程序客户端等,也可以为其他适当的应用程序客户端例如打车应用程序客户端或网银应用程序客户端,这同样在本说明书实施例的保护范围内。
DRDS为事务管理器,事务管理器负责协调和管理事务,事务管理器控制着全局事务,管理事务生命周期,并协调各个资源服务器。MySQL1至MySQL3为资源服务器,资源服务器为事务的参与者,一般情况下是指一个数据库实例,通过资源服务器对该数据库进行控制,资源服务器控制着分支事务。此外,MySQL1的连接2是用于记录提交日志的数据库连接,由于所有资源服务器上的事务都是XA事务,在XA end和XA prepare操作后,不允许通过MySQL1连接1写入数据,所有需要额外的MySQL1连接2来记录提交日志,MySQL1连接2可以使用自动提交auto commit事务。
进一步地,DRDS在接收到用户通过应用程序客户端发送对XA事务的事务提交请求之后,在准备阶段,记录该XA事务的提交日志,以及向MySQL1至MySQL3发送准备请求即XAend(XA结束)、XA prepare(XA准备)的SQL操作请求,该提交日志的内容包括:该XA事务的事务状态以及该XA事务涉及的MySQL1至MySQL3的标识信息。在准备阶段完成之后,若每个资源服务器对应的分支事务均准备成功,则向客户端返回分布式事务提交成功的消息。在提交阶段,向每个资源服务器即MySQL发送提交请求,该提交请求用于使MySQL提交对应的分支事务。
需要说明的是,虽然以MySQL数据库作为资源服务器来进行说明,但是本领域技术人员应该理解的是,资源服务器也可以为其他适当的数据库例如DB2数据库,本说明书实施例对此不进行特殊限定。
下面结合图2的应用场景,参考附图来描述根据本说明书的示例性实施例的事务处理方法。需要注意的是,上述应用场景仅是为了便于理解本说明书实施例的精神和原理而示出,本说明书的实施例在此方面不受任何限制。相反,本说明书的实施例可以应用于适用的任何场景。
图3示出了为根据本说明书一些实施例提供的一种事务处理方法的流程示意图,该事务处理方法可以应用于分布式系统的事务管理器端,该事务处理方法具体包括以下步骤S310至步骤S340。
参照图3所示,在步骤S310中,响应于客户端对分布式事务的事务提交请求,确定与分布式事务对应的多个资源服务器,其中,分布式事务包括多个分支事务。
在示例实施例中,客户端可以为应用程序例如购物应用程序客户端、支付应用程序客户端等,也可以为其他适当的应用程序客户端例如打车应用程序客户端或网银应用程序客户端,这同样在本说明书实施例的保护范围内。
在示例实施例中,分布式事务可以为在购物应用程序客户端上的下订单事务,在支付应用程序客户端的支付事务,或在支付应用程序客户端的转账事务等,本说明书实施例对此不进行特殊限定。分布式事务包括多个分支事务, 以客户端为购物应用程序客户端为例,分布式事务可以为在购物应用程序客户端上的下订单事务,下订单事务的多个分支事务可以包括:从该订单对应的商品的数据库中扣除该商品的分支事务;从该订单对应的买家账户扣款的分支事务;向该订单对应的卖家账户付款的分支事务等。
进一步地,在示例实施例中,在事务管理器端接收到客户端发送的对分布式事务的事务提交请求时,响应于该事务提交请求,确定该分布式事务对应的多个资源服务器。以客户端为购物应用程序客户端为例,在用户在客户端上点击确认下单的控件之后,客户端向事务管理器端发送对该下订单事务的事务提交请求,事务管理器响应于该事务提交请求,确定该下订单事务涉及的多个资源服务器,例如,多个资源服务器可以包括:存储订单对应的商品的数据库、存储订单对应的买家账户的数据库、存储订单对应的卖家账户的数据库等。
在步骤S320中,在准备阶段,记录该分布式事务的提交日志,以及向每个资源服务器发送准备请求。
在示例实施例中,在2PC提交的准备阶段,事务管理器在提交日志中记录分布式事务的事务状态以及多个资源服务器的标识信息。例如,可以在提交日志中记录以下内容:{事务状态:staging(准备中),资源服务器:[Res0,Res1,…]}。
进一步地,在示例实施例,在2PC提交的准备阶段,事务管理器向每个资源服务器发送准备请求。例如,向每个资源服务器发送XA end以及XA prepare指令,其中,XA end指令用于在资源服务器上结束一个分支事务,XA prepare指令用于告诉资源服务器准备提交一个分支事务,在准备之前,必须发出XA end指令通知各资源服务器此分支事务不会再有其他数据库操作,从而能够保证事务的隔离性。
在步骤S330中,若确认每个资源服务器对应的分支事务均准备成功,则向客户端返回分布式事务提交成功的消息。
在示例实施例中,在2PC提交的准备阶段完成之后,若多个资源服务器中每个资源服务器均向事务管理器返回分支事务准备成功的消息,则事务管理器向客户端返回分布式事务提交成功的消息。例如,在2PC提交的准备阶段完成之后,事务管理器接收到每个资源服务器返回的对应分支事务的准备结果例如准备成功或未准备成功,若所有资源服务器均返回准备成功的消息,则确定分布式事务一定能够提交成功,向客户端返回分布式事务提交成功的消息,使得客户端的提交时间缩短为2PC的1/2。
在步骤S340中,在提交阶段,向每个资源服务器发送提交请求,该提交请求用于使资源服务器提交对应的分支事务。
在示例实施例中,在2PC提交的提交阶段,事务管理器向每个资源服务器发送提交请求,该提交请求用于使资源服务器提交对应的分支事务。例如,事务管理器向每个资源服务器发送xa_commit指令,该xa_commit指令用于使资源服务器提交对应的分支事务。
根据图3的示例实施例中的技术方案,在准备阶段完成之后,若确认每个资源服务器均准备成功,则向用户返回分布式事务提交成功的消息,使得用户确认事务已提交的时间缩短,能够显著降低客户端的提交延迟。
进一步地,在示例实施例中,分布式事务的事务状态为准备中状态,该事务处理方法还包括:在提交阶段,将分布式事务的事务状态从准备中状态修改为已提交状态。例如,在提交阶段,根据分布式事务的事务标识获取该分布式事务的提交日志,将该提交日志中记录的该分布式事务的事务状态从准备中状态修改为已提交状态。
通过在提交阶段将分布式事务的事务状态从准备中状态修改为已提交状态,能够在故障恢复时确定是否已经向用户发送了事务提交成功的消息,从而能够确保事务的原子性和一致性。
此外,在示例实施例中,提交请求包括分布式事务的提交时间戳,该事务处理方法还包括:在将分布式事务的事务状态从准备中状态修改为所述已提交状态时,获取分布式事务的提交时间戳。通过为分布式事务分配时间戳,能够保证分布式事务的隔离性和一致性。
此外,在另一些实施例中,每个所述资源服务器上记录有对应的分支事务的事务状态,所述分支事务的事务状态包括准备成功状态或未准备成功状态。该事务处理方法还包括:在恢复过程中,基于所述资源服务器的标识信息,从每个所述资源服务器获取对应的分支事务的事务状态;若每个资源服务器对应的分支事务的事务状态均为准备成功状态,则向每个资源服务器发送提交请求;若多个资源服务器中至少一个资源服务器对应的分支事务的事务状态为未准备成功状态,则向各个资源服务器发送回滚请求。
图4为本说明书另一些实施例提供的事务处理方法的流程示意图。该事务处理方法可以应用于分布式系统的事务管理器端,该事务处理方法具体包括以下步骤S410至步骤S440。
参照图4所示,在步骤S410中,响应于客户端对分布式事务的事务提交请求,确定与所述分布式事务对应的多个资源服务器,其中,分布式事务包括多个分支事务。
在步骤S420中,在准备阶段,记录分布式事务的提交日志,以及向每个资源服务器发送准备请求,该提交日志的内容包括:该分布式事务的事务状态以及多个资源服务器的标识信息,分布式事务的事务状态为准备中状态。
在步骤S430中,在准备阶段完成之后,若每个资源服务器对应的分支事务均准备成功,则向客户端返回该分布式事务提交成功的消息。
在示例实施例中,步骤S410至步骤S430与步骤S310至步骤S330的实现过程以及实现效果类似,在此不再赘述。
在步骤S440中,在提交阶段,将分布式事务的事务状态从准备中状态修改为已提交状态。
在示例实施例中,在提交阶段,根据分布式事务的事务标识获取该分布式事务的提交日志,将该提交日志中记录的该分布式事务的事务状态从准备中状态即staging状态修改为已提交状态即committed状态。
在步骤S450中,在提交阶段,向每个资源服务器发送提交请求,该提交请求用于使资源服务器异步提交对应的分支事务。
在示例实施例中,在提交阶段,向每个资源服务器发送异步提交的提交请求例如xa_commit指令,使得资源服务器能够异步提交对应的分支事务。
根据图4的示例实施例中的技术方案,一方面,通过在提交阶段将分布式事务的事务状态从准备中状态修改为已提交状态,能够在故障恢复时确定是否已经向用户发送了事务提交成功的消息,从而能够确保事务的原子性和一致性;另一方面,由于采用异步提交,提交时间缩短,在相同并发情况下,相对于传统2PC方案能够提升系统的吞吐量。
此外,为了使顺序发生的事务的可见性和2PC一致,需要在待读取的数据被其他事务修改过,且修改数据的事务处于准备prepare状态的时候,需要等待该事务被2PC提交完成或被回滚,然后再进行读取。因此,在示例实施例中,接收对另一事务的事务处理请求,该另一事务的事务处理请求用于处理分布式事务的分支事务写入的数据;若该分支事务处于准备成功状态,即该另一事务处理的数据与该分支事务处理的数据存在冲突,则等待直到分布式事务被提交完成或被回滚,再处理该数据。可以基于CTS(commit timestamp,提交时间戳)的分布式事务机制来确定事务的提交时间戳。通过为分布式事务分配时间戳,能够保证分布式事务的隔离性和一致性。
在这种情况下,本示例实施例中,第二阶段的RTT会在下一个读取相同数据的事务进行额外等待,整体时间延迟退化为和2PC相同。
图5为本说明书又一些实施例提供的事务处理方法的流程示意图。
参照图5所示,在步骤S510中,接收用户对XA事务的提交请求。
在步骤S520中,确定该XA事务涉及的所有资源服务器。
在步骤S530中,记录该XA事务的提交日志,并向所有涉及的资源服务器发送准备请求。
在示例实施例中,在接收到用户对XA事务的提交请求时,会并行进行以下两个操作:(1)对所有涉及的资源服务器或分片进行XA end和XA prepare操作;(2)记录一条提交日志(记录到一个资源服务器上),内容包括分布式事务的事务状态为staging,和所有资源服务器的标识信息或对应分支事务的事务id。例如,在提交日志中记录以下内容:{事务状态:staging(准备中),资源服务器:[Res0,Res1,…]}。
在步骤S540中,确定是否每个资源服务器均返回准备成功,若是,则进行至步骤S550;若否,则进行至步骤S580。
在示例实施例中,若步骤S530中的两个操作都返回成功后,则认为该事务提交成功,向客户端返回事务提交成功的消息,否则回滚分布式事务。
在步骤S550中,向用户返回事务提交成功的消息。
在步骤S560中,将提交日志的事务状态从准备中状态变更为已提交状态。
在示例实施例中,异步将提交日志记录的事务状态修改为committed状态,并同时获取事务的提交时间戳即commit timestamp。
在步骤S570中,向所有涉及的资源服务器发送提交请求,该提交请求用于使资源服务器异步提交对应的分支事务。
在示例实施例中,该提交请求包含分布式事务的提交时间戳,以这个提交时间戳异步提交XA事务的各个分支事务。
在步骤S580中,回滚XA事务,向用户返回提交失败的消息。
根据图5的示例实施例中的技术方案,一方面,在准备阶段,在提交日志中记录分布式事务的事务状态,能够在恢复阶段确定是否已经向用户返回事务提交成功的消息;另一方面,在提交日志中记录分布式事务对应的多个资源服务器的标识信息,能够在恢复过程中确定分布式事务涉及的所有资源服务器,便于对分布式事务进行恢复处理;再一方面,在准备阶段完成之后,若每个资源服务器均准备成功,则向用户返回分布式事务提交成功的消息,使得用户确认事务已提交的时间缩短,能够显著降低客户端的提交延迟。
进一步地,基于CTS的分布式事务机制,当一个事务提交后,如果再在另一个事务中读取上一个事务写入的事务,如果之前读取数据的这个资源服务器或分片上的XA事务还是处于XA prepared状态(因为XA commit是异步进行的,很可能遇到还没异步XA commit的情况),则需要等待该XA事务被回滚或提交完成。这种情况下,这种情况原本方案需要等待的2个RT就会在下一个读取事务中等待。
图6为本说明书再一些实施例提供的事务处理方法的恢复过程的流程示意图。
参照图6所示, 在步骤S610中,在恢复过程中,查询提交日志中记录的所有资源服务器上的处于准备成功状态的分支事务。
在示例实施例中,在恢复过程中,通过XA recover指令使资源服务器返回所有已准备成功即处于prepared状态的分支事务的列表。
在步骤S615,根据准备成功的事务的标识信息查找对应的提交日志。
在步骤S620中,若查找到对应的提交日志,则进行至步骤S30;若未查找到对应的提交日志,则进行至步骤S625。
在步骤S625中,确认回滚分布式事务,向该分布式事务涉及的每个资源服务器发送回滚请求。
在步骤S630中,确定提交日志记录的事务状态是否为已提交状态即commited状态,若是,则进行至步骤S635;若否,说明事务状态为准备中状态即staging状态,则进行至步骤S640。
在步骤S635中,向分布式事务涉及的每个资源服务器发送提交请求,使每个资源服务器提交对应的分支事务。
在步骤S640中,获取提交日志中记录的该分布式事务涉及的多个资源服务器上处于准备成功prepared状态的分支事务。
在步骤S645中,确定和该分布式事务对应的多个分支事务是否均处于准备成功状态即prepared状态,若是,则进行至步骤S650;若否,则进行至步骤S660。
在步骤S650中,将提交日志中记录的事务状态变更为已提交状态。
在步骤S655中,向该分布式事务涉及的每个资源服务器发送提交请求。
在步骤S660中,确定回滚该分布式事务,向该分布式事务涉及的每个资源服务器发送回滚请求。
根据图6的示例实施例中技术方案,基于提交日志中的事务状态以及XA事务涉及的资源服务器的标识信息进行恢复处理,能够保障XA事务的原子性和持久性。
图7为本说明书又一些实施例提供的事务处理方法的流程示意图。
参照图7所示,在步骤S710中,用户端向DRDS发送对XA事务的事务提交请求。
在步骤S720中,DRDS响应于该事务提交请求,向该XA事务涉及的多个资源服务器发送准备请求,即向MySQL1至MySQL3发送XA end指令以及XA prepare指令。
进一步地,在步骤S720中,记录一条提交日志,提交日志的内容包括分布式事务的事务状态为staging,和所有资源服务器的标识信息或对应分支事务的事务id。例如,在提交日志中记录以下内容:{事务状态:staging(准备中),资源服务器:[Res0,Res1,…]}。一方面,在准备阶段,在提交日志中记录分布式事务的事务状态,能够在恢复阶段确定是否已经向用户返回事务提交成功的消息;另一方面,在提交日志中记录分布式事务对应的多个资源服务器的标识信息,能够在恢复过程中确定分布式事务涉及的所有资源服务器,便于对分布式事务进行恢复处理。
在步骤S730中,若XA事务涉及的多个资源服务器均返回准备成功的消息,则,向用户返回事务提交成功的消息。
在步骤S740中,异步将提交日志中的事务状态从准备中状态修改为已提交状态,从TSO获取提交时间戳。
在步骤S750中,异步向每个资源服务器发送提交请求即commit指令,
根据图7的示例实施例中的技术方案,一方面,在准备阶段完成之后,若每个资源服务器均准备成功,则向用户返回分布式事务提交成功的消息,使得用户确认事务已提交的时间缩短,能够显著降低客户端的提交延迟;另一方面,由于采用异步提交,提交时间缩短,在相同并发情况下,相对于传统2PC方案能够提升系统的吞吐量;再一方面,通过获取提交时间戳,能够确定事务之间的可见性,从而能够保证事务的隔离性。
图8为本说明书另一些实施例提供的事务处理方法的流程示意图。该事务处理方法应用于分布式系统,该分布式系统包括事务管理器以及多个资源服务器,该事务处理方法包括以下步骤S810至S840。
在步骤S810中,响应于客户端对分布式事务的事务提交请求,通过该事务管理器确定与分布式事务对应的多个资源服务器,其中,该分布式事务包括多个分支事务。
在示例实施例中,步骤S810与步骤S310的实现过程以及实现效果类似,在此不再赘述。
在步骤S820中,在准备阶段,记录分布式事务的提交日志,向每个资源服务器发送准备请求,以及在每个资源服务器上记录对应的分支事务的事务状态。
在示例实施例中,步骤S820与步骤S320的区别之处在于,在步骤S820中,在每个资源服务器上记录对应的分支事务的事务状态。例如,在分支事务准备成功之后,在资源服务器上记录对应的分支事务的事务状态为prepared状态。
在步骤S830中,在准备阶段完成之后,若每个资源服务器对应的分支事务均准备成功,则通过事务管理器向客户端返回分布式事务提交成功的消息。
在步骤S840中,在提交阶段,通过事务管理器向每个所述资源服务器发送提交请求,该提交请求用于使资源服务器提交对应的分支事务。
在示例实施例中,步骤S830和S840与步骤S330和S340的实现过程和实现效果类似,在此不再赘述。
根据图8的示例实施例中的技术方案,一方面,在准备阶段完成之后,若每个资源服务器均准备成功,则向用户返回分布式事务提交成功的消息,使得用户确认事务已提交的时间缩短,能够显著降低客户端的提交延迟;再一方面,在资源服务器上记录分支事务的事务状态,不需要在提交阶段修改提交日志中记录的分布式事务的全局事务状态,直接根据提交日志中记录的全局事务状态以及资源服务器上的分支事务状态,就能够判断是否提交或回滚该分布式事务。
在本说明书的一些实施例中,分支事务的事务状态包括准备成功状态或未准备成功状态,该事务处理方法还包括:在恢复过程中,基于所述资源服务器的标识信息,从每个所述资源服务器获取对应的分支事务的事务状态;若每个所述资源服务器对应的分支事务的事务状态均为准备成功状态,则向每个所述资源服务器发送所述提交请求;若所述多个资源服务器中至少一个资源服务器对应的分支事务的事务状态为未准备成功状态,则向各个所述资源服务器发送所述回滚请求。
在本说明书的一些实施例中,提交请求包括分布式事务的提交时间戳,该事务处理方法还包括:在提交阶段,获取分布式事务的提交时间戳。进一步地,使资源服务器提交对应的分支事务,包括:使资源服务器根据分布式事务的提交时间戳,异步提交对应的分支事务。
与上述方法实施例相对应,本说明书还提供了事务处理装置实施例,图9示出了本说明书一实施例提供的一种事务处理装置的结构示意图。如图9所示,该事务处理装置900应用于事务管理器端,该事务处理装置900包括:资源服务器确定模块910,用于响应于客户端对分布式事务的事务提交请求,确定与所述分布式事务对应的多个资源服务器,其中,所述分布式事务包括多个分支事务;准备阶段处理模块920,用于在准备阶段,记录所述分布式事务的提交日志,以及向每个所述资源服务器发送准备请求;返回模块930,用于若确认每个所述资源服务器对应的分支事务均准备成功,则向所述客户端返回所述分布式事务提交成功的消息;提交阶段处理模块940,用于在提交阶段,向每个所述资源服务器发送提交请求,所述提交请求用于使所述资源服务器提交对应的所述分支事务。
图10为本说明书另一些实施例提供的事务处理装置的结构示意图。参照图10所示,在本说明书的一些实施例中,所述提交日志的内容包括:所述分布式事务的事务状态,所述分布式事务的事务状态为准备中状态,所述装置900还包括:第一事务状态修改模块1010,用于在所述提交阶段,将所述分布式事务的事务状态从所述准备中状态修改为已提交状态。
在本说明书的一些实施例中,所述事务状态修改模块1010被配置为:异步将所述分布式事务的事务状态从所述准备中状态修改为已提交状态,所述使所述资源服务器提交对应的所述分支事务,包括:使所述资源服务器异步提交对应的所述分支事务。
在本说明书的一些实施例中,所述提交日志的内容还包括:所述多个资源服务器的标识信息,所述装置900还包括:日志查找模块,用于在恢复过程中,根据所述分布式事务的标识信息查找所述分布式事务的所述提交日志;回滚请求模块,用于若未查找到所述提交日志,则向每个所述资源服务器发送回滚请求,所述回滚请求用于使所述资源服务器回滚对应的所述分支事务;恢复模块,用于若查找到所述提交日志,则基于所述提交日志中记录的所述分布式事务的事务状态以及所述多个资源服务器的标识信息重新提交或回滚所述分布式事务。
在本说明书的一些实施例中,所述恢复模块被配置为:若所述分布式事务的事务状态为已提交状态,则向每个所述资源服务器发送重新提交请求;若所述分布式事务的事务状态为所述准备中状态,且每个所述资源服务器对应的分支事务的事务状态均为准备成功状态,则向各个所述资源服务器发送所述重新提交请求;若所述分布式事务的事务状态为所述准备中状态,且所述多个资源服务器中至少一个资源服务器对应的分支事务的事务状态为未准备成功状态,则向每个所述资源服务器发送所述回滚请求。
在本说明书的一些实施例中,所述装置900还包括:第二事务状态修改模块,用于若所述分布式事务的事务状态为所述准备中状态,且每个资源服务器对应的分支事务的事务状态均为准备成功状态,则将所述提交日志中记录的所述分布式事务的事务状态修改为所述已提交状态。
在本说明书的一些实施例中,所述提交请求包括所述分布式事务的提交时间戳,所述装置900还包括:时间戳获取模块,用于在将所述分布式事务的事务状态从所述准备中状态修改为所述已提交状态时,获取所述分布式事务的提交时间戳;所述使所述资源服务器提交对应的所述分支事务,包括:使所述资源服务器根据所述分布式事务的提交时间戳,异步提交对应的所述分支事务。
在本说明书的一些实施例中,所述时间戳获取模块被配置为:通过全局时间分配的方式,获取所述分布式事务的提交时间戳,其中,各个分布式事务的提交时间戳为不重复的递增时间戳。
在本说明书的一些实施例中,所述装置900还包括:请求接收模块,用于接收对另一事务的事务处理请求,所述另一事务的事务处理请求用于处理所述分布式事务的分支事务写入的数据;事务冲突处理模块,用于若所述分支事务处于准备成功状态,则等待直到所述分布式事务被提交完成或被回滚,再处理所述数据。
在本说明书的一些实施例中,每个所述资源服务器上记录有对应的分支事务的事务状态,所述分支事务的事务状态包括准备成功状态或未准备成功状态。
在本说明书的一些实施例中,所述装置900还包括:分支事务状态获取模块,用于在恢复过程中,基于所述资源服务器的标识信息,从每个所述资源服务器获取对应的分支事务的事务状态;提交请求发送模块,用于若每个所述资源服务器对应的分支事务的事务状态均为准备成功状态,则向每个所述资源服务器发送所述提交请求;回滚请求发送模块,用于若所述多个资源服务器中至少一个资源服务器对应的分支事务的事务状态为未准备成功状态,则向各个所述资源服务器发送所述回滚请求。
根据图9的示例实施例中的技术方案,在准备阶段完成之后,若确认每个资源服务器均准备成功,则向用户返回分布式事务提交成功的消息,使得用户确认事务已提交的时间缩短,能够显著降低客户端的提交延迟。
上述为本说明书实施例的一种事务处理装置的示意性方案。需要说明的是,该事务处理装置的技术方案与上述的事务处理方法的技术方案属于同一构思,事务处理装置的技术方案未详细描述的细节内容,均可以参见上述事务处理方法的技术方案的描述。
此外,本说明书的另一实施例中,还提供了另一种事务处理装置,所述事务处理装置应用于分布式系统,所述分布式系统包括事务管理器以及多个资源服务器,所述装置包括:资源服务器确定模块,用于响应于客户端对分布式事务的事务提交请求,通过所述事务管理器确定与所述分布式事务对应的多个资源服务器,其中,所述分布式事务包括多个分支事务;准备阶段处理模块,用于在准备阶段,记录所述分布式事务的提交日志,向每个所述资源服务器发送准备请求,以及在每个所述资源服务器上记录对应的分支事务的事务状态;返回模块,用于在所述准备阶段完成之后,若每个所述资源服务器对应的分支事务均准备成功,则通过所述事务管理器向所述客户端返回所述分布式事务提交成功的消息;提交阶段处理模块,用于在提交阶段,通过所述事务管理器向每个所述资源服务器发送提交请求,所述提交请求用于使所述资源服务器提交对应的所述分支事务。
根据示例实施例中的技术方案,一方面,在准备阶段完成之后,若每个资源服务器均准备成功,则向用户返回分布式事务提交成功的消息,使得用户确认事务已提交的时间缩短,能够显著降低客户端的提交延迟;另一方面,在资源服务器上记录分支事务的事务状态,不需要在提交阶段修改提交日志中记录的分布式事务的全局事务状态,直接根据提交日志中记录的全局事务状态以及资源服务器上的分支事务状态,就能够判断是否提交或回滚该分布式事务。
在本说明书一些实施例中,所述分支事务的事务状态包括准备成功状态或未准备成功状态,所述装置还包括:分支事务状态获取模块,用于在恢复过程中,基于所述资源服务器的标识信息,从每个所述资源服务器获取对应的分支事务的事务状态;提交请求发送模块,用于若每个所述资源服务器对应的分支事务的事务状态均为准备成功状态,则向每个所述资源服务器发送所述提交请求;回滚请求发送模块,用于若所述多个资源服务器中至少一个资源服务器对应的分支事务的事务状态为未准备成功状态,则向各个所述资源服务器发送所述回滚请求。
在本说明书一些实施例中,所述提交请求包括所述分布式事务的提交时间戳,所述装置还包括:提交时间戳获取模块,用于在所述提交阶段,获取所述分布式事务的提交时间戳,所述使所述资源服务器提交对应的所述分支事务,包括:使所述资源服务器根据所述分布式事务的提交时间戳,异步提交对应的所述分支事务。
图11示出了根据本说明书一实施例提供的一种计算设备1100的结构框图。该计算设备1100的部件包括但不限于存储器1110和处理器1120。处理器1120与存储器1110通过总线1130相连接,数据库1150用于保存数据。
计算设备1100还包括接入设备1140,接入设备1140使得计算设备1100能够经由一个或多个网络1160通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备1140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备1100的上述部件以及图11中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图11所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备1100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备1100还可以是移动式或静止式的服务器。
其中,处理器1120用于执行如下计算机可执行指令:响应于客户端对分布式事务的事务提交请求,确定与所述分布式事务对应的多个资源服务器,其中,所述分布式事务包括多个分支事务;在准备阶段,记录所述分布式事务的提交日志,以及向每个所述资源服务器发送准备请求;若确认每个所述资源服务器对应的分支事务均准备成功,则向所述客户端返回所述分布式事务提交成功的消息;在提交阶段,向每个所述资源服务器发送提交请求,所述提交请求用于使所述资源服务器提交对应的所述分支事务。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的事务处理方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述事务处理方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:响应于客户端对分布式事务的事务提交请求,确定与所述分布式事务对应的多个资源服务器,其中,所述分布式事务包括多个分支事务;在准备阶段,记录所述分布式事务的提交日志,以及向每个所述资源服务器发送准备请求;若确认每个所述资源服务器对应的分支事务均准备成功,则向所述客户端返回所述分布式事务提交成功的消息;在提交阶段,向每个所述资源服务器发送提交请求,所述提交请求用于使所述资源服务器提交对应的所述分支事务。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的事务处理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述事务处理方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书并不受所描述的动作顺序的限制,因为依据本说明书,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
Claims (17)
1.一种事务处理方法,应用于事务管理器端,所述方法包括:
响应于客户端对分布式事务的事务提交请求,确定与所述分布式事务对应的多个资源服务器,其中,所述分布式事务包括多个分支事务;
在准备阶段,记录所述分布式事务的提交日志,以及向每个所述资源服务器发送准备请求;
若确认每个所述资源服务器对应的分支事务均准备成功,则向所述客户端返回所述分布式事务提交成功的消息;
在提交阶段,向每个所述资源服务器发送提交请求,所述提交请求用于使所述资源服务器提交对应的所述分支事务,其中,每个所述资源服务器上记录有对应的分支事务的事务状态,所述分支事务的事务状态包括准备成功状态或未准备成功状态。
2.根据权利要求1所述的方法,其中,所述提交日志的内容包括:所述分布式事务的事务状态,所述分布式事务的事务状态为准备中状态,所述方法还包括:
在所述提交阶段,将所述分布式事务的事务状态从所述准备中状态修改为已提交状态。
3.根据权利要求2所述的方法,其中,所述将所述分布式事务的事务状态从所述准备中状态修改为已提交状态,包括:
异步将所述分布式事务的事务状态从所述准备中状态修改为已提交状态,
所述使所述资源服务器提交对应的所述分支事务,包括:
使所述资源服务器异步提交对应的所述分支事务。
4.根据权利要求2所述的方法,其中,所述提交日志的内容还包括:所述多个资源服务器的标识信息,所述方法还包括:
在恢复过程中,根据所述分布式事务的标识信息查找所述分布式事务的所述提交日志;
若未查找到所述提交日志,则向每个所述资源服务器发送回滚请求,所述回滚请求用于使所述资源服务器回滚对应的所述分支事务;
若查找到所述提交日志,则基于所述提交日志中记录的所述分布式事务的事务状态以及所述多个资源服务器的标识信息重新提交或回滚所述分布式事务。
5.根据权利要求4所述的方法,其中,所述基于所述提交日志中记录的所述分布式事务的事务状态以及所述多个资源服务器的标识信息重新提交或回滚所述分布式事务,包括:
若所述分布式事务的事务状态为已提交状态,则向每个所述资源服务器发送重新提交请求;
若所述分布式事务的事务状态为所述准备中状态,且每个所述资源服务器对应的分支事务的事务状态均为准备成功状态,则向各个所述资源服务器发送所述重新提交请求;
若所述分布式事务的事务状态为所述准备中状态,且所述多个资源服务器中至少一个资源服务器对应的分支事务的事务状态为未准备成功状态,则向每个所述资源服务器发送所述回滚请求。
6.根据权利要求4所述的方法,其中,所述方法还包括:
若所述分布式事务的事务状态为所述准备中状态,且每个资源服务器对应的分支事务的事务状态均为准备成功状态,则将所述提交日志中记录的所述分布式事务的事务状态修改为所述已提交状态。
7.根据权利要求2所述的方法,其中,所述提交请求包括所述分布式事务的提交时间戳,所述方法还包括:
在将所述分布式事务的事务状态从所述准备中状态修改为所述已提交状态时,获取所述分布式事务的提交时间戳;
所述使所述资源服务器提交对应的所述分支事务,包括:
使所述资源服务器根据所述分布式事务的提交时间戳,异步提交对应的所述分支事务。
8.根据权利要求7所述的方法,其中,所述获取所述分布式事务的提交时间戳,包括:
通过全局时间分配的方式,获取所述分布式事务的提交时间戳,其中,各个分布式事务的提交时间戳为不重复的递增时间戳。
9.根据权利要求1至8中任一项所述的方法,其中,所述方法还包括:
接收对另一事务的事务处理请求,所述另一事务的事务处理请求用于处理所述分布式事务的分支事务写入的数据;
若所述分支事务处于准备成功状态,则等待直到所述分布式事务被提交完成或被回滚,再处理所述数据。
10.根据权利要求1所述的方法,其中,所述方法还包括:
在恢复过程中,基于所述资源服务器的标识信息,从每个所述资源服务器获取对应的分支事务的事务状态;
若每个所述资源服务器对应的分支事务的事务状态均为准备成功状态,则向每个所述资源服务器发送所述提交请求;
若所述多个资源服务器中至少一个资源服务器对应的分支事务的事务状态为未准备成功状态,则向各个所述资源服务器发送回滚请求。
11.一种事务处理方法,应用于分布式系统,所述分布式系统包括事务管理器以及多个资源服务器,所述方法包括:
响应于客户端对分布式事务的事务提交请求,通过所述事务管理器确定与所述分布式事务对应的多个资源服务器,其中,所述分布式事务包括多个分支事务;
在准备阶段,记录所述分布式事务的提交日志,向每个所述资源服务器发送准备请求,以及在每个所述资源服务器上记录对应的分支事务的事务状态;
若确认每个所述资源服务器对应的分支事务均准备成功,则通过所述事务管理器向所述客户端返回所述分布式事务提交成功的消息;
在提交阶段,通过所述事务管理器向每个所述资源服务器发送提交请求,所述提交请求用于使所述资源服务器提交对应的所述分支事务,其中,每个所述资源服务器上记录有对应的分支事务的事务状态,所述分支事务的事务状态包括准备成功状态或未准备成功状态。
12.根据权利要求11所述的方法,其中,所述分支事务的事务状态包括准备成功状态或未准备成功状态,所述方法还包括:
在恢复过程中,基于所述资源服务器的标识信息,从每个所述资源服务器获取对应的分支事务的事务状态;
若每个所述资源服务器对应的分支事务的事务状态均为准备成功状态,则向每个所述资源服务器发送所述提交请求;
若所述多个资源服务器中至少一个资源服务器对应的分支事务的事务状态为未准备成功状态,则向各个所述资源服务器发送回滚请求。
13.根据权利要求11所述的方法,其中,所述提交请求包括所述分布式事务的提交时间戳,所述方法还包括:
在所述提交阶段,获取所述分布式事务的提交时间戳,
所述使所述资源服务器提交对应的所述分支事务,包括:
使所述资源服务器根据所述分布式事务的提交时间戳,异步提交对应的所述分支事务。
14.一种事务处理装置,应用于事务管理器端,所述装置包括:
资源服务器确定模块,用于响应于客户端对分布式事务的事务提交请求,确定与所述分布式事务对应的多个资源服务器,其中,所述分布式事务包括多个分支事务;
准备阶段处理模块,用于在准备阶段,记录所述分布式事务的提交日志,以及向每个所述资源服务器发送准备请求;
返回模块,用于确认每个所述资源服务器对应的分支事务均准备成功,则向所述客户端返回所述分布式事务提交成功的消息;
提交阶段处理模块,用于在提交阶段,向每个所述资源服务器发送提交请求,所述提交请求用于使所述资源服务器提交对应的所述分支事务,其中,每个所述资源服务器上记录有对应的分支事务的事务状态,所述分支事务的事务状态包括准备成功状态或未准备成功状态。
15.一种事务处理装置,应用于分布式系统,所述分布式系统包括事务管理器以及多个资源服务器,所述装置包括:
资源服务器确定模块,用于响应于客户端对分布式事务的事务提交请求,通过所述事务管理器确定与所述分布式事务对应的多个资源服务器,其中,所述分布式事务包括多个分支事务;
准备阶段处理模块,用于在准备阶段,记录所述分布式事务的提交日志,向每个所述资源服务器发送准备请求,以及在每个所述资源服务器上记录对应的分支事务的事务状态;
返回模块,用于若确认每个所述资源服务器对应的分支事务均准备成功,则通过所述事务管理器向所述客户端返回所述分布式事务提交成功的消息;
提交阶段处理模块,用于在提交阶段,通过所述事务管理器向每个所述资源服务器发送提交请求,所述提交请求用于使所述资源服务器提交对应的所述分支事务,其中,每个所述资源服务器上记录有对应的分支事务的事务状态,所述分支事务的事务状态包括准备成功状态或未准备成功状态。
16.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令以实现以下步骤:
响应于客户端对分布式事务的事务提交请求,确定与所述分布式事务对应的多个资源服务器,其中,所述分布式事务包括多个分支事务;
在准备阶段,记录所述分布式事务的提交日志,以及向每个所述资源服务器发送准备请求;
若确认每个所述资源服务器对应的分支事务均准备成功,则向所述客户端返回所述分布式事务提交成功的消息;
在提交阶段,向每个所述资源服务器发送提交请求,所述提交请求用于使所述资源服务器提交对应的所述分支事务,其中,每个所述资源服务器上记录有对应的分支事务的事务状态,所述分支事务的事务状态包括准备成功状态或未准备成功状态。
17.一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现权利要求1至10中任一项所述事务处理方法或权利要求11至13中任一项所述的事务处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010567361.XA CN111475583B (zh) | 2020-06-19 | 2020-06-19 | 事务处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010567361.XA CN111475583B (zh) | 2020-06-19 | 2020-06-19 | 事务处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111475583A CN111475583A (zh) | 2020-07-31 |
CN111475583B true CN111475583B (zh) | 2020-11-17 |
Family
ID=71764140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010567361.XA Active CN111475583B (zh) | 2020-06-19 | 2020-06-19 | 事务处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111475583B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111858629B (zh) * | 2020-07-02 | 2023-08-22 | 北京奥星贝斯科技有限公司 | 二阶段提交分布式事务更新数据库的实现方法和装置 |
CN111984388A (zh) * | 2020-08-27 | 2020-11-24 | 深圳壹账通智能科技有限公司 | 云环境分布式事务下数据一致性的协调方法及装置、介质 |
CN112181719A (zh) * | 2020-09-11 | 2021-01-05 | 北京金山云网络技术有限公司 | 一种数据处理方法、装置、设备及计算机可读存储介质 |
CN112162988A (zh) * | 2020-09-16 | 2021-01-01 | 中电信用服务有限公司 | 一种分布式事务的处理方法、装置和电子设备 |
CN113760924B (zh) * | 2020-10-28 | 2024-06-14 | 北京沃东天骏信息技术有限公司 | 一种分布式事务的处理方法和装置 |
CN114510495B (zh) * | 2022-04-21 | 2022-07-08 | 北京安华金和科技有限公司 | 一种数据库业务数据一致性处理方法和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105892957A (zh) * | 2016-06-14 | 2016-08-24 | 中山大学 | 一种基于动态分片的分布式事务执行方法 |
CN110990363A (zh) * | 2019-11-29 | 2020-04-10 | 交通银行股份有限公司 | 一种分布式数据库多线程协同事务日志回放方法、系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190005082A1 (en) * | 2017-07-03 | 2019-01-03 | Infosys Limited | Method and system for committing group atomic transaction in non-relational database |
-
2020
- 2020-06-19 CN CN202010567361.XA patent/CN111475583B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105892957A (zh) * | 2016-06-14 | 2016-08-24 | 中山大学 | 一种基于动态分片的分布式事务执行方法 |
CN110990363A (zh) * | 2019-11-29 | 2020-04-10 | 交通银行股份有限公司 | 一种分布式数据库多线程协同事务日志回放方法、系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111475583A (zh) | 2020-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111475583B (zh) | 事务处理方法及装置 | |
CN106357452B (zh) | 一种单点异构数据存储的高可用框架系统及其实现方法 | |
US20230106118A1 (en) | Distributed processing of transactions in a network using timestamps | |
KR101863398B1 (ko) | 다중-서버 예약 시스템 상의 동기화 메커니즘 시스템 및 방법 | |
US11429599B2 (en) | Method and apparatus for updating database by using two-phase commit distributed transaction | |
JP7549137B2 (ja) | トランザクション処理方法、システム、装置、機器、及びプログラム | |
CN112671950B (zh) | 基于区块链的域名处理方法、装置、电子设备和存储介质 | |
WO2018045758A1 (zh) | 一种数据存储方法及数据中心 | |
EP3786802A1 (en) | Method and device for failover in hbase system | |
CN112995262B (zh) | 分布式事务提交方法、系统及计算设备 | |
CN113010549A (zh) | 基于异地多活系统的数据处理方法、相关设备及存储介质 | |
WO2023082992A1 (zh) | 数据处理方法以及系统 | |
US20230072125A1 (en) | Data reading method, apparatus, and non-transitory computer readable medium | |
CN108228581B (zh) | Zookeeper兼容通信方法、服务器及系统 | |
WO2023185934A1 (zh) | 数据处理方法及装置 | |
CN112822091A (zh) | 一种消息处理方法和装置 | |
CN115617571A (zh) | 一种数据备份方法、装置、系统、设备及存储介质 | |
CN108460047B (zh) | 数据同步方法及设备 | |
CN113297231A (zh) | 数据库处理方法及装置 | |
CN110839064A (zh) | 一种分布式系统执行脚本的方法及装置 | |
US10728323B2 (en) | Method and apparatus for operating infrastructure layer in cloud computing architecture | |
CN115774754A (zh) | 基于分布式事务的元数据管理方法、装置、设备及介质 | |
US7260611B2 (en) | Multi-leader distributed system | |
CN111897839A (zh) | 一种数据处理方法及系统 | |
CN113761051A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |