RAFT算法中失联Follower能否成为Leader?集群双Leader场景问询
在RAFT算法中,失联Follower能否在原Leader正常运行时成为新Leader?
针对你描述的场景,该失联的Candidate有可能被选为新Leader,具体逻辑如下:
- 任期触发的状态变化:失联的Follower因收不到Leader心跳超时后,会将自身任期号自增(比如从原任期
T变为T+1),然后以Candidate身份向其他在线Follower发起投票请求(RequestVote)。 - 在线Follower的投票决策:在线Follower此时仍在接收原Leader的心跳(任期为
T),但收到Candidate的T+1任期投票请求时,会先将自身任期更新为更高的T+1,并告知原Leader该新任期;由于自身在T+1任期内尚未投过票,且Candidate的日志与自身完全同步(场景中所有节点日志已更新至最新),满足RAFT要求的“Candidate日志至少与自身一样新”的条件,因此会为该Candidate投票。 - 原Leader的状态转变:原Leader收到在线Follower返回的
T+1任期后,会立即将自身任期更新为T+1,并从Leader退化为Follower,停止发送心跳包。 - Leader选举结果:当失联Candidate收到超过集群半数节点的投票后,就会正式成为新任期的Leader,并开始向所有节点(包括原Leader)发送心跳包,维护自身的Leader身份。
内容的提问来源于stack exchange,提问作者Lahiru Chandima
相关产品推荐
相关产品推荐

