Raft 集群中的节点如何知道 "majority" 是什么?

How do nodes in a Raft cluster know what is the "majority"?

我正在阅读 Raft paper and following the secret life of data visualisation 似乎大多数在 Raft 中是至关重要的,无论是对于领导者选举还是追加条目请求。

我的问题是节点如何首先知道集群中的节点总数?是否定义了发现协议或必须在创建集群时配置节点数?或者 Raft 是否将此留给特定的 implementations?

我的下一个问题是这个数字是如何更新的(即追随者节点是如何标记为关闭的)尤其是在网络分区的情况下。

感谢指点!

它主要是特定于实现的。我看过的大多数都允许进行一些初始集群配置。一 运行ning,那些允许集群成员更改的通常会公开一些 API 来启动此操作,并且它们 运行 通过 raft 日志(参见 section 6)的成员。有时您被迫从单个节点开始并使用成员资格 API 将集群扩展到您想要的大小。

节点重启等临时事件不应反映在集群成员中。如果你想永久删除一个节点,因为它的硬件死了,那么你会使用上面提到的成员资格 api。