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

标签 consensus raft

我正在阅读 Raft paper并关注 secret life of data visualisation似乎多数在 Raft 中至关重要,无论是领导选举还是追加条目请求。

我的问题是节点首先如何知道集群中的节点总数?是否定义了发现协议(protocol)或必须在创建集群时配置节点数量?还是 Raft 把这个留给特定的 implementations ?

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

感谢您的任何指针!

最佳答案

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

节点重新启动等暂时性事件不应反射(reflect)在集群成员资格中。如果你想永久删除一个节点,因为它的硬件已经死了,那么你可以使用上面提到的成员资格 api。

关于consensus - Raft 集群中的节点如何知道 "majority"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56003721/

相关文章:

algorithm - 在这种情况下,Paxos 代理的正确行为是什么?

distributed-computing - Raft 共识算法是拜占庭容错(bft)算法吗?

go - 简单的领导人选举(Stateless leader election)

algorithm - BFT与PBFT与BA共识算法

distributed-computing - 如果paxos "ignore"与acceptor 发送的最高提案编号不同步,是否会提出更新值的请求?

algorithm - 共识算法如何保证一致性?

consensus - raft算法如何在写入失败后节点故障的情况下保持强读一致性

mongodb - Raft Vs MongoDB 初选

replication - RAFT:提交条目的术语条件

kubernetes - etcd 可以检测问题并为其他集群选举领导人吗?