在leader 选举过程中:
1)heartbeat time interval 和 election time out 之间是如何抉择的?
2)为啥heartbeat time interval 一定小于 min(election time out)?
首先 这两个参数都在raftpaper里提到过, 与之相匹配的还有两个参数, 他们是成对出现的:
- heartbeat_timeout heartbeat_elapsed
- election_timeout election_elapsed
这2对参数在角色不一样时逻辑有点不一样, 先说leader:
leader 在每一个logic tick下, 如果:
- electionElapsed >= r.electionTimeout, 会发送localmsg pb.MsgCheckQuorum提醒自己检查下还是不是leader, 并且重置 electionElapsed, 如果检查不符合条件会把自己变为follower, 就没有 下面的逻辑了
- r.heartbeatElapsed >= r.heartbeatTimeout 发送心跳, 维持leader
follower , 在每一个logic tick下, 如果:
-
- electionElapsed >= r.electionTimeout, 重置 electionElapsed 将自己变为candidate
-
- 收到了消息, 重置自己的electionElapsed, 保持自己时follower.
candidate 相似.
2 个赞
是不是如下情况
1)只有leader 才发送heartbeat 心跳来检查,flower 不需要发送heartbeat?
2)为啥heartbeat time interval 一定小于 min(election time out)?
3)当heartbeatElapsed >= r.heartbeatTimeout ,心跳已经超时了,为啥还是维持leader?这种情况应该处理处理?我的理解是当leader超过heartbeatTimeout,就要进行election_time,当超过electionTimeout后其他flower 就看谁先把自己的term+1,谁就就是leader
请求支持,点对点应答
官网上都有相关解释吧(看看博客)
1 个赞
请给一个提示?
可以官网,搜博客,在博客下面找 hearbeat 和 election 关键字,应该有几篇文章介绍(应该没有一篇统一介绍的:心跳分多种,region 之间。pd 和 tikv 之间等)
1 个赞
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。