【分布式事务系列】X/Open分布式事务模型实现步骤

374 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

X/Open分布式事务模型实现步骤

与本地事务原理基本相同,唯一不同是如果此时RM代表数据库,那TM能够管理多个数据库的事务,步骤如下:

  • 配置TM,把多个RM注册到TM,相当于TM注册RM作为数据源
  • AP从TM管理的RM中获取连接,如果RM是数据库则获取JDBC连接
  • AP向TM发起一个全局事务,生成全局事务ID(XID),XID会通知各个RM
  • AP通过第二步获取连接直接操作RM完成数据操作,AP在每次操作市会把XID传递给RM
  • AP结束全局事务,TM会通知各个RM全局事务的结束
  • 根据各个RM的事务执行结果,执行提交或回滚操作

在单机事务下,会存在跨库事务的可见性问题,导致无法实现多节点事务的全局可控。而TM就是一个全局事务管理器,它可管理多个资源管理器的事务,TM最终会根据各个分支事务的执行结果进行提交或者回滚,如果注册的所有分支事务中任何一个节点事务执行失败,为了保证数据的一致性,TM触发各个RM的事务回滚操作。

​ 注意点:TM和多个RM之间的事务控制,是基于XA协议来完成,XA协议是X/Open提出的分布式事务处理规范,是分布式事务处理的标准。Oracle、MySQL都实现了XA接口,因此它们都可以作为RM

两阶段提交协议

TM实现了多个RM事务管理,涉及到两个阶段的提交,第一阶段是事务的准备阶段,第二阶段是事务的提交或者回滚阶段,这两个阶段是由事务管理器发起操作。