mlz*_*lz7 5 distributed-system consensus raft
我刚刚完成了草稿纸并开始实施。然而,我意识到我对一个关键细节有点困惑。raft 节点 \xe2\x80\x9c\xe2\x80\x9d 如何了解其对等节点?我在论文中没有看到\xe2\x80\x99 提到这一点,所以我认为它是特定于实现的,但在我看来,它导致了许多问题:
\n非常感谢对此的一些帮助。我真的很想完全理解 raft,并且很高兴能够实现它,但我对系统架构的这一部分有点迷失。对我来说,节点应该使用硬编码的网络位置进行静态配置似乎并不正确,因为在现实世界中,我绝对可以想象需要将新节点添加到现有集群中。谢谢!
\n成员变更是 Raft 协议的核心组件(在扩展论文的第 6 节中指定,并在 Diego\xe2\x80\x99s 论文中详细讨论)。但你提出了一些很好的问题。在实践中,肯定存在一些安全配置要求以及现实世界 Raft 实现中常见的一些不同方法。
\n一般来说,有几种方法可以引导 Raft 集群:使用标识集群每个成员的配置来初始化节点,或者使用单个节点启动集群并将节点添加到配置中(使用成员资格更改协议)以进行扩展集群达到其预期大小。两者都会给你相同的最终结果,它\xe2\x80\x99s只是一个偏好问题。
\n集群配置的一个要求是每个成员都有固定的身份。如果追随者确认其将条目持久化到某个索引i并且领导者标记该索引已提交,则领导者应该能够假设条目 1- i将永久存在于该追随者上,即使追随者重新启动也是如此。因此,具有该身份的副本必须始终具有该日志。
\n但这一要求给我们带来了成员变更的另一个用例:替换失败的成员。I\xe2\x80\x99d follower\xe2\x80\x99s 日志已损坏或主机崩溃且永远不会返回,只能通过执行成员资格更改协议来替换它:添加新副本并删除旧副本。同样,使用 Raft 文献中讨论的成员资格变更协议之一很重要。
\n请记住,更改集群中的节点数量也可能意味着仲裁大小也会发生变化,这就是导致成员资格更改难以处理的原因。当更改仲裁大小时,协议需要确保提交仍然存储在大多数节点上。为了安全地调整法定人数以避免中断,必须精确实施成员协议。
\n| 归档时间: |
|
| 查看次数: |
946 次 |
| 最近记录: |