阅读了paxos和筏纸后,我有以下困惑: paxos论文仅描述单日志条目的共识,这相当于筏算法的领导者选举部分。在木筏领导人选举中,paxos采用简单随机超时方法的优势是什么?
答案 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
...更具体地说,它是具有不同命名的多命令版本。