一种分布式事务回滚方法及装置制造方法及图纸

技术编号:15030753 阅读:101 留言:0更新日期:2017-04-05 08:09
一种分布式事务回滚方法及装置;方法包括:事务管理器向和第一事务相关的数据库节点的资源管理器发起第一事务的分支事务的提交请求;所述事务管理器当收到任一所述资源管理器发来的提交第一事务的分支事务失败的响应时,向其它正在提交第一事务的分支事务、或者提交第一事务的分支事务成功的资源管理器发起第一事务的分支事务的回滚请求。本发明专利技术能够有效解决目前分布式事务提交回滚技术方面的缺陷,从而提升分布式事务的可靠性和提交效率。

【技术实现步骤摘要】

本专利技术涉及分布式数据库领域的事务处理
,尤其涉及一种分布式事务回滚方法及装置。
技术介绍
事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。分布式事务处理是指一个事务可能涉及多个数据库操作,分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务的决定必须产生统一的结果(全部提交或全部回滚)。目前,大部分主流单机数据库都能很好的保证事务的特性,但是在分布式数据库中实现分布式事务却面临着很多难题,其中关键的一个难题是如何有效地回滚分布式事务。分布式事务有别于单机事务最大的不同是要在多个数据库节点同时进行提交,如果都能够成功,那么不需要进行其他后续操作;但一旦某个数据库节点因某种异常造成提交失败,那么其他数据库节点也要保证提交给它们的事务能停止执行或者及时回滚。由于数据库节点发生错误的随机性和发生异常的类型众多,因此如何能有效的回滚分布式事务成为保证事务一致性的一个关键问题。目前业界使用的最多的就是由X/Open组织定义的X/OpenDTP(DistributedTransactionProcessing,分布事务处理)模型。该模型中有三个角色:AP(Application,应用程序),也就是业务层。哪些操作属于一个事务,就是AP定义的。RM(ResourceManager,资源管理器),一般是数据库,也可以是其他的资源管理器,如消息队列,例如JMS(JavaMessageService,Java消息服务)数据源、文件系统等。TM(TransactionManager,事务管理器),接收AP的事务请求,对全局事务进行管理,管理事务分支状态,协调RM的处理,通知RM哪些操作属于哪些全局事务以及事务分支等。是整个事务调度模型的核心部分。XA协议是X/OpenDTP组织定义的两阶段提交协议,采用两阶段提交方式来管理分布式事务。在第一阶段,TM请求所有RM准备提交(即预提交)各自的事务分支,以确认是否所有相关RM都可以提交各自的事务分支。当局部RM收到预提交后,如果可以提交属于自己的事务分支,则将自己在该事务分支中所做的操作固定记录下来,并给TM一个同意提交的应答,此时RM将不能再在该事务分支中加入任何操作,但此时RM并没有真正提交该事务,RM对共享资源的操作还未释放(即处于锁定状态)。如果由于某种原因RM无法提交属于自己的事务分支,它将回滚自己的所有操作,释放对共享资源的锁定,并返回给TM失败应答。在第二阶段,TM审查所有RM返回的预提交结果,如所有RM都可以提交,TM将要求所有RM做正式提交,这样该全局事务被提交。而如果有任一RM预提交返回失败,TM将要求所有其它RM回滚其操作,这样该全局事务被回滚。但这种模式有几个明显的缺点,首先虽然采用这种两阶段提交的方式,但是仍然无法避免第二阶段时数据库节点发生异常,从而导致数据不一致的情况;其次,由于每次事务都采用两阶段提交,因此系统在提交事务时对每个相关的数据库节点要多产生一次交互过程,使得提交性能下降;再者,使用该模式必须要保证所有数据库节点支持XA协议。
技术实现思路
本专利技术要解决的技术问题是提供一种新型的分布式事务回滚方案,能够有效解决目前分布式事务提交回滚技术方面的缺陷,从而提升分布式事务的可靠性和提交效率。为了解决上述问题,采用如下技术方案。一种分布式事务回滚方法,包括:事务管理器向和第一事务相关的数据库节点的资源管理器发起第一事务的分支事务的提交请求;所述事务管理器当收到任一所述资源管理器发来的提交第一事务的分支事务失败的响应时,向其它正在提交第一事务的分支事务、或者提交第一事务的分支事务成功的资源管理器发起第一事务的分支事务的回滚请求。可选地,所述事务管理器向和第一事务相关的数据库节点的资源管理器发起第一事务的分支事务的提交请求前还包括:所述事务管理器为所述第一事务生成全局唯一的事务标识;所述方法还包括:所述事务管理器在所述第一事务的分支事务的提交请求中携带所述第一事务的事务标识;在所述第一事务的分支事务的回滚请求中携带所述第一事务的事务标识,以及发起所述第一事务的分支事务的提交请求的时刻。可选地,向其它正在提交第一事务的分支事务、或者提交第一事务的分支事务成功的资源管理器发起第一事务的分支事务的回滚请求后还包括:所述事务管理器汇总所述资源管理器反馈的回滚结果;如果存在回滚失败的资源管理器,则将连接回滚失败的资源管理器对应的数据库节点,锁定回滚失败所涉及的表。一种分布式事务回滚方法,包括:资源管理器收到事务管理器发送的第一事务的分支事务的回滚请求后,如果所述第一事务的分支事务已经提交,则筛选出所述第一事务的分支事务对应的事务日志;根据筛选出的事务日志中记录的数据和执行语句,生成反向执行语句,将生成的反向执行语句作为一个事务逆序执行。可选地,所述反向执行语句是指和原执行语句实现相反功能的语句;所述逆序执行是指和提交时的执行顺序相反。可选地,所述第一事务的分支事务的回滚请求中携带所述第一事务的事务标识,以及发起所述第一事务的分支事务的提交请求的时刻;所述筛选出所述第一事务的分支事务对应的事务日志包括:通过解析出的所述回滚请求中发起第一事务的分支事务的提交请求的时刻,在保存每个事务日志分块的开始位置和事务日志分块中第一个事件发生的时刻的列表中选取事务日志分块,确定所选取的事务日志分块的开始位置;从所确定的事务日志分块的开始位置开始扫描,找到所述第一事务的事务标识对应的事务日志分块。可选地,将生成的反向执行语句作为一个事务逆序执行后还包括:当所述反向执行语句全部执行成功时,向所述事务管理器反馈表示回滚成功的回滚结果;当所述反向执行语句没有全部执行成功时,向所述事务管理器反馈表示回滚失败的回滚结果,并携带执行失败的反向执行语句和所涉及的表。可选地,所述将生成的反向执行语句作为一个事务逆序执行包括:所述资源管理器连接对应的数据库节点,以事务为单位提交生成的反向执行语句;所述资源管理器对所对应的数据库节点逆序执行所生成的反向执行语句,并从所述数据库节点接收所述反向执行语句的执行结果。可选地,所述资源管理器收到事务管理器发送的第一事务的分支事务的回滚请求前还包括:所述资源管理器收到所述事务管理器发起的分支事务提交请求后,向对应的数据库节点提交分支事务,根据执行分支事务的结果反馈分支事务执行结果响应给所述事务管理器。一种分布式事务回滚装置,设置在事务管理器中,包括:提交发起模块,用于向和第一事务相关的数据库节点的资源管理器发起第一事务的分支事务的提交请求;回滚发起模块,用于当收到任一所述资源管理器发来的提交第一事务的分支事务失败的响应时,向其它正在提交第一事务的分支事务、或者提交第一事务的分支事务成功的资源管理器发起第一事务的分支事务的回滚请求。可选地,所述的装置还包括:标识生成模块,用于为所述第一事务生成全局唯一的事务标识;所述提交发起模块还用于在所述第一事务的分支事务的提交请求中携带所述第一事务的事务标识;所述回滚发起模块还用于在所述第一事务的分支事务的回滚请求中携带所述第一事务的事务标识,以及发起所本文档来自技高网
...

【技术保护点】
一种分布式事务回滚方法,包括:事务管理器向和第一事务相关的数据库节点的资源管理器发起第一事务的分支事务的提交请求;所述事务管理器当收到任一所述资源管理器发来的提交第一事务的分支事务失败的响应时,向其它正在提交第一事务的分支事务、或者提交第一事务的分支事务成功的资源管理器发起第一事务的分支事务的回滚请求。

【技术特征摘要】
1.一种分布式事务回滚方法,包括:事务管理器向和第一事务相关的数据库节点的资源管理器发起第一事务的分支事务的提交请求;所述事务管理器当收到任一所述资源管理器发来的提交第一事务的分支事务失败的响应时,向其它正在提交第一事务的分支事务、或者提交第一事务的分支事务成功的资源管理器发起第一事务的分支事务的回滚请求。2.如权利要求1所述的方法,其特征在于,所述事务管理器向和第一事务相关的数据库节点的资源管理器发起第一事务的分支事务的提交请求前还包括:所述事务管理器为所述第一事务生成全局唯一的事务标识;所述方法还包括:所述事务管理器在所述第一事务的分支事务的提交请求中携带所述第一事务的事务标识;在所述第一事务的分支事务的回滚请求中携带所述第一事务的事务标识,以及发起所述第一事务的分支事务的提交请求的时刻。3.如权利要求1所述的方法,其特征在于,向其它正在提交第一事务的分支事务、或者提交第一事务的分支事务成功的资源管理器发起第一事务的分支事务的回滚请求后还包括:所述事务管理器汇总所述资源管理器反馈的回滚结果;如果存在回滚失败的资源管理器,则将连接回滚失败的资源管理器对应的数据库节点,锁定回滚失败所涉及的表。4.一种分布式事务回滚方法,包括:资源管理器收到事务管理器发送的第一事务的分支事务的回滚请求后,如果所述第一事务的分支事务已经提交,则筛选出所述第一事务的分支事务对应的事务日志;根据筛选出的事务日志中记录的数据和执行语句,生成反向执行语句,
\t将生成的反向执行语句作为一个事务逆序执行。5.如权利要求4所述的方法,其特征在于:所述反向执行语句是指和原执行语句实现相反功能的语句;所述逆序执行是指和提交时的执行顺序相反。6.如权利要求4所述的方法,其特征在于:所述第一事务的分支事务的回滚请求中携带所述第一事务的事务标识,以及发起所述第一事务的分支事务的提交请求的时刻;所述筛选出所述第一事务的分支事务对应的事务日志包括:通过解析出的所述回滚请求中发起第一事务的分支事务的提交请求的时刻,在保存每个事务日志分块的开始位置和事务日志分块中第一个事件发生的时刻的列表中选取事务日志分块,确定所选取的事务日志分块的开始位置;从所确定的事务日志分块的开始位置开始扫描,找到所述第一事务的事务标识对应的事务日志分块。7.如权利要求4所述的方法,其特征在于,将生成的反向执行语句作为一个事务逆序执行后还包括:当所述反向执行语句全部执行成功时,向所述事务管理器反馈表示回滚成功的回滚结果;当所述反向执行语句没有全部执行成功时,向所述事务管理器反馈表示回滚失败的回滚结果,并携带执行失败的反向执行语句和所涉及的表。8.如权利要求4所述的方法,其特征在于,所述将生成的反向执行语句作为一个事务逆序执行包括:所述资源管理器连接对应的数据库节点,以事务为单位提交生成的反向执行语句;所述资源管理器对所对应的数据库节点逆序执行所生成的反向执行语句,并从所述数据库节点接收所述反向执行语句的执行结果。9.如权利要求4所述的方法,其特征在于,所述资源管理器收到事务管理器发送的第一事务的分支事务的回滚请求前还包括:所述资源管理器收到所述事务管理器发起的分支事务提交请求后,向对应的数据库节点提交分支事务,根据执行...

【专利技术属性】
技术研发人员:张宗禹贾新华陈河堆白涛郭龙波
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1