天天看点

分布式事务2PC协议之——XA方案概述举栗​​​​​​​总结

概述

2PC方案是在传统数据库层面实现的,如Oracle和MySQL都支持2PC协议,为了统一标准减少在行业内不必要的对接成本,需要制定标准化的处理模型以及接口标准,国际开放标准组织Open Group定义了分布式事务处理模型DTP(Distributed Transaction Processing Reference Model)。

2PC协议可以参考我的另一篇文章:分布式事务解决方案——2PC(两阶段提交)概念

举栗

用新用户注册送积分为例来解释一下XA方案

分布式事务2PC协议之——XA方案概述举栗​​​​​​​总结
  1. 应用程序(AP)连接用户库和积分库两个数据源
  2. 应用程序通过TM(事务管理器)通知用户库和积分库执行准备阶段的事务:通知RM新增用户,之后通知积分库RM为该用户新增积分,两个RM此时都没有提交事务,此时用户和积分的数据资源被锁定
  3. TM收到执行结果回复只要有一方失败则分别向其他所有的RM发起回滚事务,回滚完毕,数据库资源锁释放
  4. TM收到执行结果回复全部成功,此时向所有RM发起提交事务的指令,提交完毕,数据库资源锁释放

DTP模型角色定义如下:

  • AP(application program):即应用程序,可以理解为使用DTP分布式事务的程序
  • RM(Resource Manager):即资源管理器,可以理解为事务的参与者,一般情况下是指一个数据库实例,通过资源管理器对该数据库进行空值,资源管理器控制着各个分支事务
  • TM(Transaction Manager):事务管理器,负责协调和管理事务,事务管理器控制着全局事务,管理事务生命周期,并协调各个RM。全局事务是指分布式事务处理环境中,需要操作多个数据库共同完成一个工作,这个工作即是全局事务。

DTP模式定义TM和RM直接通讯的接口规范叫XA,简单理解为数据库提供的2PC接口协议,基于数据的XA协议来实现2PC协议又称为XA方案

以上三种角色之间的交互方式如下:

  • TM向AP提供应用程的编程接口,AP通过TM提交以及事务回滚
  • TM中间件通过XA协议接口来通知RM数据库事务的开始、结束以及提交和回滚等

​​​​​​​总结

整个2PC的事务流程涉及到三个角色AP、RM、TM。AP是使用2PC分布式事务的应用程序,TM是事务管理器,管理协调整个全局事务,RM是资源管理器,负责控制自身的分支事务。

  1. 在准备阶段RM执行实际的业务操作,但不是提交事务,资源锁定
  2. 在提交阶段TM会接受RM在准备阶段的执行回复,只要有任何一个RM执行失败,TM会通知所有的RM执行回滚操作,没有一个RM操作失败,TM将通知所有RM提交自身事务。提交所有事务之后数据库资源释放

XA方案的问题:

  1. 需要本地数据库支持XA协议
  2. 资源锁需要等到两个阶段都完成之后才能释放,性能受影响。

继续阅读