raft 有关竞选超时 vs 心跳超时的疑惑

新手上路,请多包涵

raft协议这两个超时时间是比较重要的,看着有些疑惑,

  1. 集群刚启动的时候,心跳会超时,这时候follower是直接成为candidator么?还是还要在心跳超时的基础上等待一个竞选超时才变成 candidator?
  2. 成为candidator并且发送投票请求给follower,这个candidator这时候本身等待投票是有个超时的,这个超时也是竞选超时么?
  3. 心跳超时和竞选超时哪个大?心跳超时一般设置为多少?
  4. 集群已经正常运转leader刚挂掉的时候,我们是依靠心跳超时还是竞选超时来触发选举流程?
阅读 4.1k
1 个回答

1.心跳超时后,Follower 等待自身竞选超时后成为 Candidate 身份并发起选举。raft 使用了一个叫随机选举超时(randomize election timeout)的方式,使每个 server 的超时时间不一样,这样就避免了多个 Candidate 同时发起选举的问题。
2.选举也有时限,规定时间内没有获取到足够多的票数,则当前 Leader 选举竞选失败;但这个时限不是 election timeout ,election timeout 是指心跳超时后发起竞选的时限。
3.心跳超时可以自己配置,看你自己的网络规模和拓扑;竞选超时是随机的,大概在几十到几百毫秒;通常情况下,心跳超时比竞选超时长得多,心跳是秒级,竞选是毫秒级。
4.前面已经回答了,Follower 检测到心跳超时后,等待自身竞选超时后发起选举,也就是两个时限都超了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进