oracle xa dtp,Part 0: X/Open DTP分布式事务处理模型

“声明:由于个人水平有限,文中若存在不妥过错误之处,欢迎大家拍砖,并且一起讨论,交流。在文中会引用其他专家学者的观点和理论等内容,如文中出现版权问题,请联系我,我将以最快的速度删除。”

1. DTP模型定义

X/Open DTP Model是X/Open 这个组织定义的一套分布式事务的标准规范,其定义了分布式事务处理的一套规范和API接口,具体的实现由各厂商进行实现。

b2fa97f71824

DTP模型中的核心组件及相互关系 (图片来源于网络)

在DTP模型中定义了3个核心组件:

# AP(Application Program)应用程序,AP组件定义了分布式事务(也即全局事务)的边界(即事务的开始和结束)以及组成事务的具体操作(Actions);

# RMs(Resource Managers)资源管理器,RM指的是诸如MySQL、Oracle这样的数据库或者相应的数据库驱动或可访问的文件系统或者打印机服务器,用以提供访问数据库资源的接口;

# TM(Transaction Manager)事务管理器,TM是分布式事务的协调者,其负责为分布式事务分配事务ID,监控事务的执行过程,负责事务的完成和容错工作。TM管理的分布式事务可以跨多个RM,TM还管理2PC协议,协调分布式事务的提交/回滚决策。

b2fa97f71824

可跨TM域的DTP模型中的核心组件及相互关系(图片来源于网络)

除核心的3个组件外,DTP模型还提供了一个用于跨TM域通信的组件CRM。

# CRM(Communication Resource Manager)容许DTP模型示例内和实例间的访问(通过OSI TP服务)。如图3-2所示,DTP模型实例间的交互必须经过CRM。

在DTP模型中使用了2种通信规范:

# TX规范,其定义了用于在AP组件和TM组件之间的通讯API规范;

# XA(eXtended Architecture)规范,其定义了2PC协议以及用于在TM和RM之间通信的API规范。

2. 模型原理

从上面的模型定义可以看出,DTP模型通过定义一组组件以及组件之间的通信规范来制定了一种分布式事务的处理模型,但是DTP模型并没有给出具体的实现。

具体的说来,在DTP模型中,AP负责定义分布式事务中的操作(通常是数据库操作)以及分布式事务的起始开关并通过TX规范的API向TM发起分布式事务管理请求;TM通过TX规范API接受AP的分布式事务起始请求并为分布式事务分配事务ID,然后,TM在通过XA规范API与RM通信进行相关数据库操作的管理(如成功/失败状态)、根据RM返回的操作状态角色分布式事务的结果并进行事务决策(Commit/Rollback),同时,TM还要能够提供一定的容错支持以容忍RM的错误(如Fail-Recovery);RM则接受AP的数据库操作请求,进行本地SQL执行(保证本地事务),并通过XA规范API向TM反馈事务执行结果。

b2fa97f71824

DTP模型中的API(图片来源于网络)

如图3-2所示,DTP模型中TX规范定义了1,2,4,6这4个主要接口用于事务的整体管理。XA协议定义了7,8,9,10这4个API来控制RM本地事务的提交/回滚。其中,XA规范的一种实现就是2PC协议。

3. 模型流程

DTP模型中的组件之间的信息交互和具体流程如图3-3所示。

b2fa97f71824

DTP模型分布式事务涉及的组件交互流程

从图3-3中可以看出,DTP中的分布式事务(即全局事务)的执行流程如下:

(1)首先,在系统中的所有RM通过XA规范提供的API向TM注册,即RM涉及的分支事务处理将纳入到TM统一管理;

(2)然后,AP开启全局事务,AP通过TX规范提供的API向TM申请全局事务的开启,此时,全局事务正式开启。TM会返回其为本次全局事务分配的全局事务ID,即XID,给提出全局事务的AP;

(3)接着,AP根据获取到的XID开始其操作序列,具体的操作就是向不同的RM发送SQL操作请求;

(4)然后,RM根据接受的来自AP的SQL操作请求进行本地数据库操作(即执行本地事务)。RM在执行本地事务时会通过TM提供的XA规范API提交分支事务请求(请求中携带XID)。TM在接收到RM的分支事务请求后,分配分支事务ID并将其反馈给相应的RM;

(5)TM与RM进行基于2PC协议的事务预提交,及进行Prepare操作;

(6)当TM根据RM Prepare操作的执行情况决策出现有分支事务已经全部完成Prepare操作,如果是,那么TM向AP发送Commit决策结果;否则,那么TM向AP发送Rollback决策结果。当进行2PC协议时,如果RM出现故障,TM负责协调故障处理,保证其决策可进行;

(7)当AP接收到TM的决策时,如果后续还有分支事务需要执行,那么AP继续步骤③;否则,AP决策分布式事务的结果是Commit还是Rollback。

(8)如果AP决定Commit/Rollback分布式事务,那么它将通过TX规范API通知TM,最终的执行决定由TM通过2PC协议通知RM完成;

(9)最后,RM向TM提出注销申请,TM注销已注册的RM;AP向TM提交分布式事务结束请求,TM结束分布式事务。

4. TX协议规范

TX协议规范定义了AP和TM之间的API,如tx_begin( )、tx_end()、tx_info()等接口用以开启、结束和查询分布式事务。

5. XA协议规范

XA协议规范定义了RM和TM之间的API,如ax_reg(),ax_unreg(),xa_start(),xa_open(),xa_end(),xa_cloase()等操作用以协调分支事务的执行。

6. Thread of Control

在DTP模型中,Thread of Control是一个系统进程/线程,其拥有一块地址空间和相应的资源锁以及事务涉及的上下文信息。分布式事务的关键就是TM、AP、RM都在这个Thread of Control的上下文中,这样通过XID就可以识别同一个分布式事务环境。在DTP模型中,可能存在多个并行的模型实例,所以通过Thread of Control可以区别不同的实例。一般来说,Thread of Control是运行在RM中的,AP和TM的请求将由同一个RM的Thread of Control处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值