Raft协议的集群中有三类角色:
- Leader,领导人
- Follower,群众
- Candidate,候选人
过程
刚启动时,所有集群角色都处于Follower状态,当发现没有Leader时,Follower会将自己作为Candidate发起竞选投票,当收到大多数Follower的投票时,会晋升为Leader,若有多个Candidate得票相同,双方等待一个随机后时间后,重新发起竞选。
当确定Leader之后,Leader每隔一段时间会想Follower发送心跳续约,来告诉Follower自己还存活,并负责日志转发。当Follower一段时间未收到Leader的心跳,则认为Leader可能挂了,会发起新的选举。