分布式事务2PC在提交前需要确认所有的子事务都已经完成准备,全部准备完成才能达到一起提交的效果,因此第一阶段和第二阶段的划分边界就是所有子事务的准备结果。
3PC到底改进了2PC的那些问题网上找了很多资料大概有以下几种说法
- 引入了超时机制
- 解决协调者单节点故障
- 预检查资源符合要求才后在第二步中才进行锁定,避免像2PC粗暴的一上来就锁定最后又因为不符合规则而被回滚导致资源被白白锁定降低了并非性能
但我对这些说法都表示疑问
- 2PC也可以在参与者和协调者以及本地事务之间引用超时机制
- 协调者完全可以独立部署群集高可用
- 2PC的准备阶段也可以先判断是否符合数据规则在决定是否锁定资源
所以这些应该都不3PC要解决的问题,因为在2PC里面也能解决。那么3PC真正要解决的问题又是什么呢?