Paxos 的 活锁 与 FLP 理论的关系

工程实践中,实际上会引入leader,有leader时,只有leader才会提升epoch,避免活锁。此外,multi-paxos也会优化掉第一阶段。可以参考Paxos Made Live这篇文章(大约是)。
■网友
【Paxos 的 活锁 与 FLP 理论的关系】 FLP理论是说,在异步网络中,即使只有一个进程失败,也没有任何算法能保证非失败进程达成一致。Paxos中存在活锁,理论上的活锁会导致Paxos算法无法满足Termination属性,也就不算一个正确的一致性算法。Lamport在自己的论文中也提到FLP结果表明,不存在完全满足一致性的异步算法,因此他建议通过Leader来代替Paxos中的Proposer,以避免活锁,而Leader的选取也是一个一致性问题,理论上可能永远选不出Leader,工程中则通过随机或其他方式来选定,在一定概率上保证Termination。也就是说Paxos算法其实也不算理论上完全正确的,只是在工程实现中避免了一些理论上存在的问题。但这丝毫不影响Paxos的伟大性!


    推荐阅读