开发者社区> 问答> 正文

选主超时该如何操作?

选主超时该如何操作?

展开
收起
kun坤 2020-04-24 10:26:14 402 0
1 条回答
写回答
取消 提交回答
  • 如果恰巧有两个节点同时都发起了投票,但都没有获得多数节点的选票,此时就得打加时赛了,直到获得多数选票的节点成为 Leader。

    如下图所示: 5.jpg

    假设集群中有4个节点,A、B、C、D。出现了两个节点处于 Candidate 状态。

    第一轮选举状态如下:

    节点A[Candidate] <----- 节点 C 选举节点A
    
    节点B[Candidate] <----- 节点 D 选举节点B
    

    第一轮选举之后,节点 A 和节点 B 还是处于 Candidate 状态,都不满足集群过半数投票成功的条件,选举 Leader 失败。

    下一轮就要看 Candidate 状态的节点谁的 electionTimeout 先到,谁就先发起新一轮选举操作。只要发起选举,term 任期就要递增的。

    如果节点 B 的 electionTimeout 先到,先发起选举操作,那么集群中按照条件必须是有 3 个节点投票成功之后最终成为 Leader。

    为了避免出现上述这种平局的情况,所以一般集群中节点部署个数都是奇数: 2n + 1

    2020-04-24 10:36:29
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
探索连接的最后十秒”落时”的网关 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载