分布式事务提交方法和装置制造方法及图纸

技术编号:5478776 阅读:298 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种分布式事务提交方法,所述分布式事务提交方法包括:步骤A:将分布式事务划分为多个子事务;步骤B:分阶段执行所述多个子事务,如果所述多个子事务中的一个执行失败,转入步骤C;如果所述多个子事务都执行成功,则转入步骤D;步骤C:回滚所述执行失败的子事务所在阶段和之前阶段中的所有子事务;步骤D:提交所述分布式事务需要的更新。应用本发明专利技术,可以提高分布式事务提交效率,能够及时结束事务及回滚,当组成分布式事务的事务分支很多时能按照顺序进行各个事务分支处理并在组成分布式事务的各事务分支之间共享数据,并且不需要异构数据库都支持XA协议就能够提供跨数据库平台的分布式事务提交。

【技术实现步骤摘要】

本专利技术涉及事务处理
,特别涉及一种分布式事务提交方法和装置
技术介绍
事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作 要么都做,要么都不做,是一个不可分割的工作单位。分布式事务处理是指一个事务可能涉 及多个数据库操作,分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所 做的所有动作,提交或回滚事务的决定必须产生统一的结果(全部提交或全部回滚)。在网络聊天系统中,用户数量巨大(上亿用户),需要将用户信息分别存储在不同 的数据库中,数据的分布同时按照用户和业务来进行。例如有两个用户A和用户B,分别都 有个人信息和好友信息,用户A的个人信息存储在用户数据库(UserDB) 1中,用户B的个人 信息存储在herDB2中,用户A的好友信息存储在好友数据库(BuddyDB) 1中,用户B的好 友信息存储在BuddyDB2中,这就是分布式数据库。这些数据库可以是异构的,例如^erDB 采用 Sql Server,而 BuddyDB 采用的是 MySql。以网络聊天系统中添加好友这个应用为例对分布式事务进行说明,例如,用户A 添加用户B为好友,如果用户B同意,则同时需要在用户A的BuddyDBl中加入用户B的信 息和在用户B的BuddyDB2中添加用户A的信息,然后通知状态服务启动用户A对用户B在 线状态的订阅及用户B对用户A在线状态的订阅,通知聊天客户端刷新好友列表显示。如 果中间有某项工作出现异常,则后面的工作不需要再继续,整个事务回滚,保证了数据库的 一致性、服务及客户端显示的一致性,上述整个过程为一个分布式事务。X/0pen (即现在的Open Group)组织的建立是为了向UNIX环境提供标准。它主要 的目标是促进对UNIX语言、接口、网络和应用的开放式系统协议。X/Open组织定义了一个 X/0pen DTP (Distributed Transaction Processing,分布事务处理)模型包括应用程序、 事务管理器、资源管理器、通信资源管理器四部分。一般,事务管理器是交易中间件,资源管 理器是数据库,通信资源管理器是消息中间件。XA协议是指由X/Open组织提出的作为资源管理器与事务管理器之间进行通信的 接口标准的分布式交易处理规范。XA协议采用两阶段提交方式来管理分布式事务在第一阶段,交易中间件请求所有相关数据库准备提交(即预提交)各自的事务 分支,以确认是否所有相关数据库都可以提交各自的事务分支。当某一数据库收到预提交 后,如果可以提交属于自己的事务分支,则将自己在该事务分支中所做的操作固定记录下 来,并给交易中间件一个同意提交的应答,此时数据库将不能再在该事务分支中加入任何 操作,但此时数据库并没有真正提交该事务,数据库对共享资源的操作还未释放(即处于 锁定状态)。如果由于某种原因数据库无法提交属于自己的事务分支,它将回滚自己的所有 操作,释放对共享资源的锁定,并返回给交易中间件失败应答。在第二阶段,交易中间件审查所有数据库返回的预提交结果,如所有数据库都可 以提交,交易中间件将要求所有数据库做正式提交,这样该全局事务被提交。而如果有任一数据库预提交返回失败,交易中间件将要求所有其它数据库回滚其操作,这样该全局事务 被回滚。XA协议采用两阶段提交,预提交做不到按照顺序执行,比如不能实现A先执行,A 执行成功之后B、C才可以执行,B、C执行成功之后D才执行。当组成分布式事务的事务分支很多时,XA协议的所有事务分支都会预提交,预提 交效率很低,做不到及时结束事务及回滚,例如如果进行了预提交的事务A、B、C、D中的任 一个预执行出错,则全部需要进行回滚。XA协议中,组成分布式事务的各事务分支之间不能互相共享数据,比如,不能实现 从A的执行结果中获取需要的数据才能执行B。当处理异构数据库时,需要这些数据库都支持XA协议,但目前并不是所有的数据 库都支持XA协议。而且现有的分布式事务处理方案并不支持同时进行数据库的更新及服 务和客户端的更新。综上所述,现有分布式事务提交方法具有下述缺陷1、不能按照顺序进行各个事务分支处理;2、当组成分布式事务的事务分支很多时,分布式事务处理时效率很低,做不到及 时结束事务及回滚;3、组成分布式事务的各事务分支之间不能共享数据;4、异构数据库必须都支持XA协议;5、不支持同时进行数据库的更新及服务和客户端的更新。
技术实现思路
(一)要解决的技术问题本专利技术要解决的技术问题是,针对上述缺陷,如何提供一种分布式事务处理效率 高,能够及时结束事务及回滚的分布式事务提交方法和装置。(二)技术方案为解决上述技术问题,本专利技术提供了一种分布式事务提交方法,所述分布式事务 提交方法包括步骤A 将分布式事务划分为多个子事务;步骤B:分阶段执行所述多个子事务,如果所述多个子事务中的一个执行失败,转 入步骤C ;如果所述多个子事务都执行成功,则转入步骤D ;步骤C 回滚所述执行失败的子事务所在阶段和之前阶段中的所有子事务;步骤D 提交所述分布式事务需要的更新。优选地,在步骤B中,如果有多个子事务处于同一阶段,则并发执行所述多个子事务。优选地,步骤B中的所述分阶段执行多个子事务具体包括前一阶段的所有子事 务全部执行成功才开始执行后一阶段的子事务。优选地,在步骤B中,所述分布式事务提交方法进一步包括将前一阶段子事务的 执行结果提供给后一阶段执行的子事务的步骤。优选地,在步骤B之后,所述分布式事务提交方法进一步包括在数据库中保存每个子事务的动态信息的步骤。优选地,如果步骤D中所述分布式事务需要的更新提交失败,在步骤D之后,所述 分布式事务提交方法进一步包括以一个预定次数重试提交所述分布式事务需要的更新。优选地,所述更新包括但不限于数据库、缓存和客户端的更新。本专利技术还提供了一种分布式事务提交装置,所述分布式事务提交装置包括分布 式事务划分模块、与所述分布式事务划分模块相连接的分布式事务执行模块、分布式事务 回滚模块和分布式事务提交模块;所述分布式事务执行模块分别与所述分布式事务回滚模 块和所述分布式事务提交模块相连接;其中,所述分布式事务划分模块,用于将分布式事务划分为多个子事务,将所述多个子 事务分成多个阶段,并将每个子事务及其所在阶段信息发送到所述分布式事务执行模块、 所述分布式事务回滚模块和所述分布式事务提交模块;所述分布式事务执行模块,用于根据接收到的所述每个子事务及其所在阶段的信 息分阶段执行所述多个子事务,每个子事务执行成功后,向所述分布式事务提交模块发送 所述子事务执行成功的消息;如果在一个阶段中,所述多个子事务中的一个执行失败,则将 所述子事务执行失败的消息发送到所述分布式事务回滚模块;所述分布式事务回滚模块,用于根据接收到的子事务执行失败的消息将该子事务 所在阶段和之前阶段中的所有子事务回滚;所述分布式事务提交模块,用于接收到所有子事务执行成功的消息后,提交所述 分布式事务需要的更新。优选地,如果后一阶段中的子事务需要获得前一阶段中子事务的执行结果才能执 行,则所述分布式事务执行模块进一步用于将前一阶段子事务的执行结果提供给后一阶段 执行的子事务。优选地,所述分布式事务执行模块进一步用于在每个子事务执行完毕后,在本文档来自技高网
...

【技术保护点】
一种分布式事务提交方法,其特征在于,所述分布式事务提交方法包括:步骤A:将分布式事务划分为多个子事务;步骤B:分阶段执行所述多个子事务,如果所述多个子事务中的一个执行失败,转入步骤C;如果所述多个子事务都执行成功,则转入步骤D;步骤C:回滚所述执行失败的子事务所在阶段和之前阶段中的所有子事务;步骤D:提交所述分布式事务需要的更新。

【技术特征摘要】

【专利技术属性】
技术研发人员:高磊李春雷
申请(专利权)人:北京新媒传信科技有限公司
类型:发明
国别省市:11[]

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

1
相关领域技术
  • 暂无相关专利