raft的一个基本逻辑是leader隔一段时间给所有的follower发心跳。如果follower长时间没收到心跳,就认为leader已经挂了,就发起投票选举新的leader。

在RaftCore的init方法里面

Nacos—— Raft 如何心跳保持

HeartBeat 就是leader的心跳定时任务

MasterElection 就是follower长时间没收到心跳就选举的定时任务


HeartBeat的sendBeat就是具体发送心跳信息了

Nacos—— Raft 如何心跳保持


follower收到心跳请求的时候

Nacos—— Raft 如何心跳保持

receivedBeat 方法会执行 resetLeaderDue();

Nacos—— Raft 如何心跳保持

follower就是根据这个变量判断是否要重新选leader的。

Nacos—— Raft 如何心跳保持

这样就全部串起来了

相关文章: