简介
3PC 是对 2PC 协议的一个拓展,目的是解决 2PC 在 coordinator 失败,然后产生新的 coordinator 时产生的 block 问题。——即新的 coordinator 仅凭自己的信息无法确定集群当前的状态,必须等待(block
)所有其他节点返回。
假设:
- 不能发生网络分区(network partition)
3PC 仅是一个理论,在实际生产中没有发现实际的应用
图解
缺点
- 网络延时,3PC 最少需要 3个RTT,这造成了处理一个事务会花费很长的时间。
参考
https://en.wikipedia.org/wiki/Three-phase_commit_protocol
https://www.geeksforgeeks.org/three-phase-commit-protocol/
https://courses.cs.vt.edu/~cs5204/fall00/distributedDBMS/sreenu/3pc.html