在具体的 Demo 之前,先来补充一点 XA 事务的知识:DTP 模型与 XA 规范。
DTP 模型与 XA 规范是由 X/Open 维护,也就是现在的 open group,官方网址:http://www.opengroup.org/。open group 是一个独立的组织,主要负责制定各种行业技术标准。由各大知名公司或者厂商进行支持,主要有如下公司:
open group 目前有八家公司,华为就是其中的一家。在分布式事务处理(Distributed Transaction Processing,简称DTP)方面,X/Open主要提供了以下参考文档:
- DTP 参考模型: https://pubs.opengroup.org/onlinepubs/9294999599/toc.pdf
- DTP XA规范: https://pubs.opengroup.org/onlinepubs/009680699/toc.pdf
DTP 模型
在《Distributed Transaction Processing: Reference Model 》 第3版中,规定了构成 DTP 模型的 5个基本元素:
- 应用程序(Application Program ,简称AP):用于定义事务边界(即定义事务的开始和结束),并且在事务边界内对资源进行操作,可以简单理解为我们的应用程序。
- 资源管理器(Resource Manager,简称RM):如数据库、文件系统等,并提供访问资源的方式。
- 事务管理器(Transaction Manager ,简称TM):负责分配事务唯一标识,监控事务的执行进度,并负责事务的提交、回滚等。
- 通信资源管理器(Communication Resource Manager,简称CRM):控制一个TM域(TM domain)内或者跨TM域的分布式应用之间的通信。
- 通信协议(Communication Protocol,简称CP):提供CRM提供的分布式应用节点之间的底层通信服务。
DTP 模型元素更深层次的东西可以参考 opengroup 的文档,接下来聊一聊 DTP 实例,一个 DTP 实例至少包含 AP、RMs、TM 三部分。如下图所示: