一. 前言
本文接前文2PC,介绍2PC的增强算法3PC(Three-phase Commit)。2PC算法是一个低延时的共识算法,但是对于节点出错较为脆弱。本文介绍2PC的增强算法3PC,通过一个额外的阶段提升节点容错性能,但是会损失一些延时。
二. 3PC和2PC的区别
2PC可能存在的问题在于当组织者做出提交的决定并发送给节点们,如果某些节点出现问题未收到消息,是无法得到判断的。因此我们在这里加入一个额外的阶段,即3PC。我们将第二阶段的“提交”拆分成两个子阶段
- 准备提交阶段。当收到了第一阶段的同意消息后,组织者发送消息给所有节点申明自己准备提交
- 收到了大家的回复之后,正式向所有节点提交新的value
这样做的好处在于通过一个中间的确认状态,我们可以减少由于节点或者组织者的突然出错带来的算法失败或者出错的情况。
三. 参考文献
【1】https://www.the-paper-trail.org/post/2008-11-29-consensus-protocols-three-phase-commit/