X/Open DTP模型与XA协议的学习笔记
2014-06-30 21:35
162 查看
最近的任务是里了解XA协议。要了解XA协议,必须先了解X/Open DTP模型,稍微总结一下:
X/Open DTP(Distributed Transaction Process)是一个分布式事务模型。这个模型主要使用了两段提交(2PC - Two-Phase-Commit)来保证分布式事务的完整性。在这个模型里面,有三个角色:
AP: Application,应用程序。也就是业务层。哪些操作属于一个事务,就是AP定义的。
TM: Transaction Manager,事务管理器。接收AP的事务请求,对全局事务进行管理,管理事务分支状态,协调RM的处理,通知RM哪些操作属于哪些全局事务以及事务分支等等。这个也是整个事务调度模型的核心部分。
RM:Resource Manager,资源管理器。一般是数据库,也可以是其他的资源管理器,如消息队列(如JMS数据源),文件系统等。
三者之间的关系如图:
一般的编程方式是这样的:
1. 配置TM,通过TM或者RM提供的方式,把RM注册到TM。可以理解为给TM注册RM作为数据源。一个TM可以注册多个RM。
1. AP从TM获取资源管理器的代理(例如:使用JTA接口,从TM管理的上下文中,获取出这个TM所管理的RM的JDBC连接或JMS连接)
2. AP向TM发起一个全局事务。这时,TM会通知各个RM。XID(全局事务ID)会通知到各个RM。
3. AP通过1中获取的连接,直接操作RM进行业务操作。这时,AP在每次操作时把XID(包括所属分支的信息)传递给RM,RM正是通过这个XID与2步中的XID关联来知道操作和事务的关系的。
4. AP结束全局事务。此时TM会通知RM全局事务结束。
5. 开始二段提交,也就是prepare - commit的过程。
XA协议(XA Specification),指的是TM和RM之间的接口。
其实这个协议只是定义了xa_和ax_系列的函数原型以及功能描述、约束和实施规范等。至于RM和TM之间通过什么协议通信,则没有提及。
目前知名的数据库,如Oracle, DB2等,都是实现了XA接口的,都可以作为RM。Tuxedo、TXseries等事务中间件可以通过XA协议跟这些数据源进行对接。
Tuxedo使用TMS(开关文件)进行对各个RM的注册。TMS文件生成通过一个类似编译链接的方式完成。(这点我有点不是十分确定。如有错误请各位纠正)。Tuxedo分为客户端和服务端程序。按照我的理解,客户端就是AP,服务端是TM
JTA(Java Transaction API)是符合X/Open DTP的一个编程模型,事务管理和资源管理器支架也是用了XA协议。
WebSphere本身也实现了JTA接口,其中TM和RM之间也是使用XA协议和二段提交。
WebSphere也可以通过XMLlink/XMLlink Wrapper和Tuxedo实现对接。
WebLogic可以通过WTC(WebLogic Tuxedo Connector)和Tuxedo进行对接。
X/Open DTP(Distributed Transaction Process)是一个分布式事务模型。这个模型主要使用了两段提交(2PC - Two-Phase-Commit)来保证分布式事务的完整性。在这个模型里面,有三个角色:
AP: Application,应用程序。也就是业务层。哪些操作属于一个事务,就是AP定义的。
TM: Transaction Manager,事务管理器。接收AP的事务请求,对全局事务进行管理,管理事务分支状态,协调RM的处理,通知RM哪些操作属于哪些全局事务以及事务分支等等。这个也是整个事务调度模型的核心部分。
RM:Resource Manager,资源管理器。一般是数据库,也可以是其他的资源管理器,如消息队列(如JMS数据源),文件系统等。
三者之间的关系如图:
一般的编程方式是这样的:
1. 配置TM,通过TM或者RM提供的方式,把RM注册到TM。可以理解为给TM注册RM作为数据源。一个TM可以注册多个RM。
1. AP从TM获取资源管理器的代理(例如:使用JTA接口,从TM管理的上下文中,获取出这个TM所管理的RM的JDBC连接或JMS连接)
2. AP向TM发起一个全局事务。这时,TM会通知各个RM。XID(全局事务ID)会通知到各个RM。
3. AP通过1中获取的连接,直接操作RM进行业务操作。这时,AP在每次操作时把XID(包括所属分支的信息)传递给RM,RM正是通过这个XID与2步中的XID关联来知道操作和事务的关系的。
4. AP结束全局事务。此时TM会通知RM全局事务结束。
5. 开始二段提交,也就是prepare - commit的过程。
XA协议(XA Specification),指的是TM和RM之间的接口。
其实这个协议只是定义了xa_和ax_系列的函数原型以及功能描述、约束和实施规范等。至于RM和TM之间通过什么协议通信,则没有提及。
目前知名的数据库,如Oracle, DB2等,都是实现了XA接口的,都可以作为RM。Tuxedo、TXseries等事务中间件可以通过XA协议跟这些数据源进行对接。
Tuxedo使用TMS(开关文件)进行对各个RM的注册。TMS文件生成通过一个类似编译链接的方式完成。(这点我有点不是十分确定。如有错误请各位纠正)。Tuxedo分为客户端和服务端程序。按照我的理解,客户端就是AP,服务端是TM
JTA(Java Transaction API)是符合X/Open DTP的一个编程模型,事务管理和资源管理器支架也是用了XA协议。
WebSphere本身也实现了JTA接口,其中TM和RM之间也是使用XA协议和二段提交。
WebSphere也可以通过XMLlink/XMLlink Wrapper和Tuxedo实现对接。
WebLogic可以通过WTC(WebLogic Tuxedo Connector)和Tuxedo进行对接。
相关文章推荐
- 计算机网络(自顶向下方法)学习笔记 1.5 协议层次和它们的服务模型
- OSI七层协议模型、TCP/IP四层模型学习笔记
- OSI七层协议模型、TCP/IP四层模型学习笔记
- OSI七层协议模型、TCP/IP四层模型学习笔记
- OSI七层协议模型、TCP/IP四层模型学习笔记
- OSI七层协议模型、TCP/IP四层模型学习笔记
- 产品生成器学习笔记---产品模型
- GMS学习笔记-6 利用概念模型建立MODFLOW模型
- MPEG4 & H.264学习笔记之二 ------ 视频编码基本概念及时域模型
- Cisco协议学习笔记(VTP)
- 学习笔记-地理数据模型
- WS-Addressing协议学习笔记
- [ASP.NET学习笔记之三十]ASP.NET 2.0的代码隐藏和编译模型
- Microsoft .NET 的企业解决方案模式 > Web 表示模式 > 模型-视图-控制器(学习笔记四)
- TCP/IP学习笔记之三 --- IP: 网际协议
- javascript 事件模型学习笔记
- TCP/IP协议详解卷1学习笔记_UDP协议
- http 协议学习笔记(一)
- SSL协议的学习笔记
- [CSS2盒模型]--div学习笔记一