分布式事务处理和XA接口_MQ, Tuxedo及OLTP讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MQ, Tuxedo及OLTP讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4262 | 回复: 1   主题: 分布式事务处理和XA接口        下一篇 
chong.zhang
注册用户
等级:上尉
经验:627
发帖:25
精华:0
注册:1970-1-1
状态:离线
发送短消息息给chong.zhang 加好友    发送短消息息给chong.zhang 发消息
发表于: IP:您无权察看 2014-4-30 16:03:14 | [全部帖] [楼主帖] 楼主

分布式事务处理(Distributed Transation Processing-DTP)指一个事务可能涉及多个数据库操作。要求保证交易动作必须全部成功或者全部失败,不能存在“部分成功”的情况。

处理分布式事务,Tuxedo提出了XA协议,并交给X/Open组织,作为资源管理器(数据库)与事务管理器的接口标准。目前,Oracle、Informix、DB2和Sybase等各大数据库厂家都提供对XA的支持。

XA协议定义了交易中间件与数据库之间的接口规范(即接口函数),交易中间件用它来通知数据库事务的开始、结束以及提交、回滚等。 XA 接口函数由数据库厂商提供。

通常情况下,交易中间件与数据库通过 XA 接口规范,使用两阶段提交来完成一个全局事务, XA 规范的基础是两阶段提交协议。
在第一阶段,交易中间件请求所有相关数据库准备提交(预提交)各自的事务分支,以确认是否所有相关数据库都可以提交各自的事务分支。当某一数据库收到预提交后,如果可以提交属于自己的事务分支,则将自己在该事务分支中所做的操作固定记录下来,并给交易中间件一个同意提交的应答,此时数据库将不能再在该事务分支中加入任何操作,但此时数据库并没有真正提交该事务,数据库对共享资源的操作还未释放(处于上锁状态)。如果由于某种原因数据库无法提交属于自己的事务分支,它将回滚自己的所有操作,释放对共享资源上的锁,并返回给交易中间件失败应答。
在第二阶段,交易中间件审查所有数据库返回的预提交结果,如所有数据库都可以提交,交易中间件将要求所有数据库做正式提交,这样该全局事务被提交。而如果有任一数据库预提交返回失败,交易中间件将要求所有其它数据库回滚其操作,这样该全局事务被回滚。

XA 规范对应用来说,最大好处在于事务的完整性由交易中间件和数据库通过 XA 接口控制, 应用只需要关注与数据库的应用逻辑的处理,而无需过多关心事务的完整性,应用设计开发会简化很多。




赞(0)    操作        顶端 
koei
版主
等级:大校
经验:4180
发帖:7
精华:0
注册:2011-7-21
状态:离线
发送短消息息给koei 加好友    发送短消息息给koei 发消息
发表于: IP:您无权察看 2014-5-2 6:58:53 | [全部帖] [楼主帖] 2  楼

楼主要有图示就好了,就清晰多了。

另外,xa类的函数和tx类的函数,有什么不同么?



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论