最近的任务是里了解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进行对接。

转载于:https://www.cnblogs.com/gnodev/p/3817323.html

X/Open DTP模型与XA协议的学习笔记相关推荐

  1. CTFHUB http协议题目 学习笔记 详细步骤 请求方式 302跳转 cookie 基础认证 响应源代码

    CTFHUB http协议题目 学习笔记 详细步骤 请求方式 302跳转 cookie 基础认证 响应源代码 WEB-HTTP协议 1-请求方式 2-302跳转 3.cookie 4.基础认证 5.响 ...

  2. [Simulink] 基于模型的测试与验证学习笔记_Step 4:Testing By Simulation

    文章目录 仿真测试 Test Harness 创建Test Harness 导入测试用例 构建Test Harness模型 执行测试.分析结果 利用SDI进行结果的验证 Model Verficati ...

  3. 吴恩达深度学习 | (20) 序列模型专项课程第一周学习笔记

    课程视频 第一周PPT汇总 吴恩达深度学习专项课程共分为五个部分,本篇博客将介绍第五部分序列模型专项的第一周课程:循环序列模型. 目录 1. 为什么选择序列模型? 2. 数学符号 3. 循环神经网络模 ...

  4. [Simulink] 基于模型的测试与验证学习笔记_Step 3: Detecting Desig Errors

    文章目录 Simulink Design Verifier 对模型做死逻辑检测 问题分析 模型除以零的检测 自动设计错误检测 总结 [注] 本文为2018 Mathworks 年会上机教程学习笔记, ...

  5. 《趣谈网络协议》学习笔记 DAY08

    内容摘录自极客时间课程<趣谈网络协议>,如有侵权,请及时联系删除. 目录 RPC协议综述 远程调用需要解决的5个问题 协议约定问题 RPC调用标准 传输问题 ONC RPC的类库 服务发现 ...

  6. 【常见总线接口协议】学习笔记2

    https://www.cnblogs.com/zhjblogs/p/12422331.html https://www.cnblogs.com/zhjblogs/p/12464843.html ht ...

  7. 如何学习网络协议(学习笔记)

    引: 抓包软件---tcp状态转换..构造包--->2011-12-31 15:51:26 一个前辈写的网络协议学习方法 分类: Linux开发c/c++2008-10-02 00:35 257 ...

  8. 物联网协议之CoAP协议开发学习笔记之术语解释

    哪有什么天生如此,只是我们天天坚持. -Zhiyuan 此文章主要总结CoAP协议的术语解释: 只在网上找到了[RFC2616] 的解释,但是这些都是通用的 本文档要求读者熟悉[RFC2616]中讨论 ...

  9. HTTP协议从入门到大牛,初识HTTP协议(学习笔记)

    HTTP数据传输协议 当访问一个网页时,浏览器会向服务器发起一条HTTP请求,接着服务器会去寻找相应的资源,如果请求成功,就会把这个对象,对象类型,对象长度以及其他的信息放在HTTP响应中,发送给客户 ...

最新文章

  1. SAP MM 物料号到物料的库存转移过账里的差异
  2. Objective-C:保留计数器思想的详解(对象的保留和所有权的释放)
  3. exit()函数详解与Exit() 和 Return() 的区别
  4. BeagleBone Black QNX6.6 BSP中IPL的完善
  5. html5数组查找第二大数,2021-06-29:在两个都有序的数组中找整体第K小的数。
  6. Silverlight, B/S or C/S?
  7. SpringBoot 读取资源文件
  8. mysql创建全文索引
  9. 人生:沉得住气,方成得了器!
  10. Log4j2日志框架集成Slf4j日志门面
  11. AI驱动智能化日志分析 : 通过决策树给日志做聚类分析
  12. 阿里云蒋江伟:什么是真正的云原生?
  13. Educoder Java面向对象 - 常用类
  14. python psutil 汇总 tcy
  15. Scrapy——基本用法(命令行工具、Item、Spiders)
  16. 服务器用户名 administrator 修改,windows2003中Administrator用户名与密码修改图解Windows服务器操作系统 -电脑资料...
  17. HTML中的盒子模型
  18. C语言 用switch语句算工资
  19. List/Map 遍历
  20. VS 和VC 的区别

热门文章

  1. sharding jdbc:分库、分表;读写分离;
  2. 理解js中的this指向以及call,apply,bind方法
  3. C++深入理解虚函数
  4. ASP.NET MVC3中Controller与View之间的数据传递总结
  5. app——分享wap站,数据处理页面展示
  6. 前端ajax封装对象数组,后台的取法
  7. java判断一个类是否公共类
  8. QTP中使用ExecuteFile加载vbs脚本
  9. Ubuntu NEF to JPEG(Linux NEF 原生格式转jpeg)
  10. MongoDB 聚合操作