XA规范
XA是规范,目前主流数据库都实现了这种规范,实现的原理都是基于两阶段提交。
XA 规范 是 X/Open 组织定义的分布式事务处理(DTP,Distributed Transaction Processing)标准,XA 规范 描述了全局的TM与局部的RM之间的接口,几乎所有主流的数据库都对 XA 规范 提供了支持。
两阶段提交
- 正常情况
- 异常情况
一阶段
- 事务协调者通知每个事物参与者执行本地事务
- 本地事务执行完成后报告事务执行状态给事务协调者,此时 事务不提交,继续持有数据库锁
二阶段
- 事务协调者基于一阶段的报告来判断下一步操作
- 如果一阶段都成功,则通知所有事务参与者,提交事务
- 如果一阶段任意一个参与者失败,则通知所有事务参与者回滚事务
XA模式
Seata对原始的XA模式做了简单的封装和改造,以适应自己的事务模型