paxos vs raft for leader election

时间:2017-08-24 22:29:31

标签: distributed-system consensus paxos raft

阅读了paxos和筏纸后,我有以下困惑: paxos论文仅描述单日志条目的共识,这相当于筏算法的领导者选举部分。在木筏领导人选举中,paxos采用简单随机超时方法的优势是什么?

3 个答案:

答案 0 :(得分:11)

一种常见的误解是,原始的Paxos论文没有使用稳定的领导者。在第6页的Paxos Made Simple标题为“实施”的部分中,Lamport写道:

  

算法选择一个领导者,扮演角色   杰出的提议者和杰出的学习者。

这可以通过准备和承诺的第1阶段消息传递来实现。

然后在“实施状态机”部分的第9页和第10页,我们有:

  

在正常操作中,单个服务器被选为领导者,   作为杰出的提议者(唯一尝试的人)   在共识算法的所有实例中提出建议。

这里使用的术语是“状态机”,涵盖了明显的情况,例如键值存储或数据库服务器,我们复制应用于商店的操作日志。

人们对此感到困惑,因为Lamport证明Paxos的方式现在就是它的教学方式。 Lamport通过将其拆分为可以推理的数学模型,证明了一类被称为Paxos的应用程序的正确性。他在原始论文The Part-Time Parliament中称之为“单一法令大会”:

  帕克森宗教领袖要求数学家制定议定书   选择宗教会议的法令。协议的要求和   假设基本上与后来的议会相同   除了包含一系列法令,而不是包含一个法令   最多只能有一项法令。由此产生的Synod协议   这里描述;议会议定书在第3节中描述。​​

如果您发现该陈述令人困惑,请不要担心这是一个糟糕的笑话;从字面上。用我自己的话说这个翻译是:

  

“为了证明共识算法的正确性   选择命令流我们可以首先证明正确性   选择单个命令的数学模型。该   然后可以扩展用于选择单个命令的数学模型   用于选择命令流的实用算法(Section   3)只要假设单指令数学模型   没有违反。“ - simbo1905

为了证明我的解释,我们可以看看题为“多议会议会”的第3节,其中说:

  帕克森议会不得不通过一项法令而不是通过一项法令   一系列编号的法令。正如在议会议定书中,总统是   当选。任何想通过法令的人都会告知总统,   谁会为法令分配一个号码并试图通过它。   从逻辑上讲,议会议定书使用了一个单独的实例   完成每个法令号的Synod协议。但是,一个   总统被选中参加所有这些活动,并且他表演了   协议的前两个步骤只需一次。

为了解决这个问题,原来的“兼职议案”论文引入了Paxos因为它的多度算法而对计算机科学家感兴趣;议会议定书。这和澄清论文“Paxos Made Simple”都将Paxos定义为具有一个杰出的领导者,将序列号分配给命令流。此外,尊敬的领导者在领导时只发送“准备”信息;在稳定状态之后,尊贵的领导者仅流“接受”消息。他还说文章中的其他部分可以解除角色,让所有服务器都运行算法的所有三个角色。

答案 1 :(得分:3)

在阅读了问题和@ simbo1905的答案之后,我觉得我不得不投入2美分,因为我认为问题没有得到解决。

  

在筏领导者选举中,paxos的方法比简单的随机超时方法有什么优势?

tl; dr:Paxos是最佳选择,但木筏具有更强的实用活力保证。

有关更多信息,请继续阅读。

如Lamport在Paxos Made Simple第3节中所述,

  

可以证明,在出现故障[2]时,Paxos共识算法的第2阶段具有达成协议所需的任何算法的最低可能成本。因此,Paxos算法本质上是最佳的。

因此,Paxos以无故障时最大效率的方式实现共识。

另一方面在同一部分中,他也指出

  

如果多个服务器认为自己是领导者,那么它们都可以在共识算法的同一实例中提出值,这可能会阻止选择任何值。但是,安全性得以保留-两个不同的服务器将永远不会在选择作为第i个状态机命令的值上发生分歧。仅需选举一位领导人即可确保进步。

这实际上意味着 Paxos可以看到违反其生命力保证的行为。

答案 2 :(得分:-3)

筏是Paxos

8-O

...更具体地说,它是具有不同命名的多命令版本。