Skip to content

32 分布式共识(下):Multi Paxos、Raft与Gossip,分布式领域的基石

你好,我是周志明,这节课我们继续学习分布式共识算法。

在上节课的最后,我通过一个批准阶段重复失败例子,和你介绍了Basic Paxos的活锁问题,两个提案节点互不相让地提出自己的提案,抢占同一个值的修改权限,导致整个系统在持续性地“反复横跳”,从外部看就像是被锁住了。

同时,我还讲过一个观点,分布式共识的复杂性,主要来源于网络的不可靠、请求的可并发,这两大因素。活锁问题和许多Basic Paxos异常场景中所遭遇的麻烦,都可以看作是源于任何一个提案节点都能够完全平等地、与其他节点并发地提出提案而带来的复杂问题。

为此,Lamport专门设计(“专门设计”的意思是,在Paxos的论文中Lamport随意提了几句可以这么做)了一种Paxos的改进版本“Multi Paxos”算法,希望能够找到一种两全其美的办法:既不破坏Paxos中“众节点平等”的原则,又能在提案节点中实现主次之分,限制每个节点都有不受控的提案权利。

这两个目标听起来似乎是矛盾的,但现实世界中的选举,就很符合这种在平等节点中挑选意见领袖的情景。

Multi Paxos

Multi Paxos对Basic Paxos的核心改进是,增加了“选主”的过程: