【技术实现步骤摘要】
本专利技术涉及分布式数据库领域的事务处理
,尤其涉及一种分布式事务回滚方法及装置。
技术介绍
事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。分布式事务处理是指一个事务可能涉及多个数据库操作,分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务的决定必须产生统一的结果(全部提交或全部回滚)。目前,大部分主流单机数据库都能很好的保证事务的特性,但是在分布式数据库中实现分布式事务却面临着很多难题,其中关键的一个难题是如何有效地回滚分布式事务。分布式事务有别于单机事务最大的不同是要在多个数据库节点同时进行提交,如果都能够成功,那么不需要进行其他后续操作;但一旦某个数据库节点因某种异常造成提交失败,那么其他数据库节点也要保证提交给它们的事务能停止执行或者及时回滚。由于数据库节点发生错误的随机性和发生异常的类型众多,因此如何能有效的回滚分布式事务成为保证事务一致性的一个关键问题。目前业界使用的最多的就是由X/Open组织定义的X/OpenDTP(DistributedTransactionProcessing,分布事务处理)模型。该模型中有三个角色:AP(Application,应用程序),也就是业务层。哪些操作属于一个事务,就是AP定义的。RM(ResourceManager,资源管理器),一般是数据库,也可以是其他的资源管理器,如消息队列,例如JMS(JavaMessageService,Java消息服务)数据源、文件系统 ...
【技术保护点】
一种分布式事务回滚方法,包括:事务管理器向和第一事务相关的数据库节点的资源管理器发起第一事务的分支事务的提交请求;所述事务管理器当收到任一所述资源管理器发来的提交第一事务的分支事务失败的响应时,向其它正在提交第一事务的分支事务、或者提交第一事务的分支事务成功的资源管理器发起第一事务的分支事务的回滚请求。
【技术特征摘要】
1.一种分布式事务回滚方法,包括:事务管理器向和第一事务相关的数据库节点的资源管理器发起第一事务的分支事务的提交请求;所述事务管理器当收到任一所述资源管理器发来的提交第一事务的分支事务失败的响应时,向其它正在提交第一事务的分支事务、或者提交第一事务的分支事务成功的资源管理器发起第一事务的分支事务的回滚请求。2.如权利要求1所述的方法,其特征在于,所述事务管理器向和第一事务相关的数据库节点的资源管理器发起第一事务的分支事务的提交请求前还包括:所述事务管理器为所述第一事务生成全局唯一的事务标识;所述方法还包括:所述事务管理器在所述第一事务的分支事务的提交请求中携带所述第一事务的事务标识;在所述第一事务的分支事务的回滚请求中携带所述第一事务的事务标识,以及发起所述第一事务的分支事务的提交请求的时刻。3.如权利要求1所述的方法,其特征在于,向其它正在提交第一事务的分支事务、或者提交第一事务的分支事务成功的资源管理器发起第一事务的分支事务的回滚请求后还包括:所述事务管理器汇总所述资源管理器反馈的回滚结果;如果存在回滚失败的资源管理器,则将连接回滚失败的资源管理器对应的数据库节点,锁定回滚失败所涉及的表。4.一种分布式事务回滚方法,包括:资源管理器收到事务管理器发送的第一事务的分支事务的回滚请求后,如果所述第一事务的分支事务已经提交,则筛选出所述第一事务的分支事务对应的事务日志;根据筛选出的事务日志中记录的数据和执行语句,生成反向执行语句,
\t将生成的反向执行语句作为一个事务逆序执行。5.如权利要求4所述的方法,其特征在于:所述反向执行语句是指和原执行语句实现相反功能的语句;所述逆序执行是指和提交时的执行顺序相反。6.如权利要求4所述的方法,其特征在于:所述第一事务的分支事务的回滚请求中携带所述第一事务的事务标识,以及发起所述第一事务的分支事务的提交请求的时刻;所述筛选出所述第一事务的分支事务对应的事务日志包括:通过解析出的所述回滚请求中发起第一事务的分支事务的提交请求的时刻,在保存每个事务日志分块的开始位置和事务日志分块中第一个事件发生的时刻的列表中选取事务日志分块,确定所选取的事务日志分块的开始位置;从所确定的事务日志分块的开始位置开始扫描,找到所述第一事务的事务标识对应的事务日志分块。7.如权利要求4所述的方法,其特征在于,将生成的反向执行语句作为一个事务逆序执行后还包括:当所述反向执行语句全部执行成功时,向所述事务管理器反馈表示回滚成功的回滚结果;当所述反向执行语句没有全部执行成功时,向所述事务管理器反馈表示回滚失败的回滚结果,并携带执行失败的反向执行语句和所涉及的表。8.如权利要求4所述的方法,其特征在于,所述将生成的反向执行语句作为一个事务逆序执行包括:所述资源管理器连接对应的数据库节点,以事务为单位提交生成的反向执行语句;所述资源管理器对所对应的数据库节点逆序执行所生成的反向执行语句,并从所述数据库节点接收所述反向执行语句的执行结果。9.如权利要求4所述的方法,其特征在于,所述资源管理器收到事务管理器发送的第一事务的分支事务的回滚请求前还包括:所述资源管理器收到所述事务管理器发起的分支事务提交请求后,向对应的数据库节点提交分支事务,根据执行...
【专利技术属性】
技术研发人员:张宗禹,贾新华,陈河堆,白涛,郭龙波,
申请(专利权)人:中兴通讯股份有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。