Raft 内部有一种心跳机制,如果存在 leader,那么它就会周期性地向所有 follower 发送心跳,来维持自己的地位。如果 follower 一段时间没有收到心跳,那么他就会认为系统中没有可用的 leader 了,然后开始进行选举。
开始一个选举过程后,follower 先增加自己的当前任期号,并转换到 candidate 状态。然后投票给自己,并且并行地向集群中的其他服务器节点发送投票请求(RequestVoteRPC
对于没有成为 follower 的节点,对于同一个任期,会按照先来先得的原则投出自己的选票