开发者社区 问答 正文

节点心跳检测是什么?

节点心跳检测是什么?

展开
收起
kun坤 2020-04-24 10:24:53 1065 分享 版权
1 条回答
写回答
取消 提交回答
  • 4.jpg

    我们看到上述的状态流转图,当重新选举 Leader 时,各节点自身的状态会在 Candidate、Follower、Leader 之间不断的变换。

    所以,被选举的节点 A 成为了 Leader ,为了保持它的『统治』地位,要不断的向其他节点发送心跳,告诉他们「我还活着,我还活着... 」。

    其他节点 B、C 收到心跳请求后,会返回响应,发现原来 Leader 还在,不需要发起选举,同时要重置选举超时时间 electionTimeout。

    如果作为 Leader 的节点 A 因为意外,比如网络问题无法正常发送心跳给其他节点。

    此时,节点 B 的 electionTimeout 超时时间到了,变成了 Candidate 状态,term + 1,voteFor 投票给自己,并发送投票请求给节点 A、C。

    之前还是 Leader 的节点 A 收到了节点 B 发来的投票请求,发现 term 任期不是最大的了,更新自身的 term 值为节点 B 的 term,从 Leader 状态切换为 Follower 状态,并重置 electionTimeout。

    2020-04-24 10:32:11
    赞同 展开评论
问答地址: