【数媒在线课堂】Raft 是如何选举领导者的

2025-03-03ASPCMS社区 - fjmyhfvclm

节点总是处于以下三种状态之一:跟随者、候选人或领导者。所有节点最初都是作为跟随者开始的。在这种状态下,他们可以接受来自领导者的日志条目(如果其中一个已经当选),或者为领导者投票。如果在一段时间内没有接收到日志条目或心跳(例如,5 秒),节点将自己提升到候选状态。在候选状态中,节点从其他节点请求选票。如果候选人获得法定人数的选票,那么他就被提升为领导者。领导者必须接受新的日志条目并将其复制到跟随者。

快照

如果一个排序节点宕机,它如何在重新启动时获得它丢失的日志?

虽然可以无限期地保留所有日志,但是为了节省磁盘空间,Raft 使用了一个称为 “快照” 的过程,在这个过程中,用户可以定义日志中要保留多少字节的数据。这个数据量将决定区块的数量(这取决于区块中的数据量。注意,快照中只存储完整的区块)。

例如,假设滞后副本 R1 刚刚重新连接到网络。它最新的区块是 100。领导者 L 位于第 196 块,并被配置为快照 20 个区块。R1 因此将从 L 接收区块 180,然后为区块 101 到 180 区块 分发 请求。然后 180 到 196 的区块将通过正常 Raft 协议复制到 R1。

全部评论