繁体   English   中英

paxos 与 raft 用于领导选举

[英]paxos vs raft for leader election

看了paxos和raft paper后,有以下困惑:paxos paper只描述了单条日志条目的共识,相当于raft算法的leader选举部分。 在 raft 的 leader 选举中,paxos 的方法比简单的随机超时方法有什么优势?

最初的 Paxos 论文不使用稳定的领导者,这是一个常见的误解。 Paxos Made Simple第 6 页的“实现”一节中,Lamport 写道:

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

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

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

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

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

人们对此感到困惑,因为 Lamport 证明 Paxos 的方式是现在教授它的方式。 Lamport 证明了一类称为 Paxos 的应用程序的正确性,将其分解为一个可以推理的数学模型。 他在原论文《兼职议会》中称其为“单一法令会议”:

Paxon 宗教领袖要求数学家制定一个协议来选择主教会议的法令。 该协议的要求和假设与后来的议会的要求和假设基本相同,只是分类帐不包含一系列法令,而最多只有一个法令。 此处描述了由此产生的 Synod 协议; 议会协议在第 3 节中描述。

如果你觉得那句话令人困惑,别担心,这是一个糟糕的笑话; 从字面上看。 用我自己的话翻译一下:

“为了证明选择命令流的共识算法的正确性,我们可以首先证明选择单个命令的数学模型的正确性。 只要不违反单个命令数学模型的不变量,用于选择单个命令的数学模型就可以扩展到用于选择命令流的实用算法(第 3 节)。” – simbo1905

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

Paxon 议会必须通过一系列编号的法令,而不是仅仅通过一项法令。 正如在大会协议中一样,选举了一位主席。 任何想要通过法令的人都会通知总统,总统会为该法令分配一个编号并试图通过它。 从逻辑上讲,议会协议为每个法令编号使用了完整的 Synod 协议的单独实例。 然而,所有这些实例都选择了一个总统,他只执行了协议的前两个步骤一次。

为了说明这一点,最初的“The Part-Time Parliment”论文介绍了 Paxos,因为它的多度算法对计算机科学家来说很有趣; 议会协议。 那篇文章和澄清文件“Paxos Made Simple”都将 Paxos 定义为有一位杰出的领导者为命令流分配序列号。 此外,尊贵的领导者只有在担任领导职务时才会发送“准备”消息; 在那之后,在稳定状态下,杰出的领导者只流“接受”消息。 他还在论文的其他地方说要折叠角色并让所有服务器运行算法的所有三个角色。

你问“在 raft 的领导人选举中,Paxos 的方法比简单的随机超时方法有什么优势?” 我不确定你指的是什么方法? 使用 Paxos,您可以随机化超时并发出 Prepare 消息。 Paxos Made Simple 论文表明,只要您遵循确保安全的协议,您就可以自由地超时或其他一些更快的机制:

Fischer、Lynch 和 Patterson 的著名结果1意味着用于选举提议者的可靠算法必须使用随机性或实时性——例如,使用超时。 但是,无论选举成败,安全都是有保障的。

随机超时很容易编码并且很容易理解。 然而,在更糟糕的情况下,它们可能导致恢复的长时间延迟。 你不喜欢你可以使用你自己的领导人选举机制。 比如 这个

阅读问题和@simbo1905 的回答后,我觉得我必须投入 2 美分,因为我认为问题没有得到解答。

在 raft 的 leader 选举中,paxos 的方法比简单的随机超时方法有什么优势?

TL; DR:的Paxos是最佳的,但具有筏的活跃度较强的实用性保证。

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

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

可以证明,Paxos 共识算法的第 2 阶段在出现故障的情况下达成一致的任何算法的成本可能最低[2] 因此,Paxos 算法本质上是最优的。

所以 Paxos 以一种在没有故障时效率最高的方式来实现共识。

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

如果多个服务器认为他们是领导者,那么他们都可以在共识算法的同一个实例中提出值,这可能会阻止任何值被选中。 但是,安全性得到了保护——两个不同的服务器永远不会在选择作为第 i 个状态机命令的值上存在分歧。 只需要选举一个领导人来确保进展。

这意味着实际上Paxos 可以看到违反其活性保证的情况。

Raft 是 Paxos

8-O

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM