XA 规范
2PC
Two-Phase-Commitment-Protocol 两阶段提交协议 基于 XA 规范
准备阶段
TM先发送 prepare 消息给各个服务,完成 sql 执行,但没有提交
提交阶段
要是有任何一个库没有成功,就会发送消息给各个服务回滚数据库;
要是都成功, 就会发消息给各个服务提交数据库,分布式事务成功;
缺陷
- prepare 之后会锁定资源,别的接口访问时会阻塞
- TM是一个单点故障
- TM重新选举后正在进行的事务状态丢失
- 脑裂问题,前几个执行了commit消息,最后一个数据库挂了,数据就不一致了

