实现Raft选主
  Olt1rl96HKat 2023年11月15日 18 0

1、节点状态

需要引入3种节点状态:Follower(跟随者)、Candidate(候选者)、投票的触发点,Leader(主节点)。

2、进入投票状态的计时器

Follower、Candidate两个状态时,需要维护一个计时器,每次定时时间从150ms-300ms之间进行随机,即每个节点的每次的计时过期不一样,Follower状态时,计时器到点后,触发一轮投票。节点在收到投票请求、Leader的心跳请求并做出响应后需要重置定时器。

3、投票轮次Team

Candidate状态的节点,每发起一轮投票,Term加一;Term的存储。

4、投票机制

每一轮一个节点只能为一个节点投赞成票,例如节点A中维护的轮次为3,并且已经为节点B投了赞成票,如果收到其他节点,投票轮次为3,则会投反对票,如果收到轮次为4的节点,是由可以投赞成票的。

5、成为Leader的条件

必须得到集群中节点的大多数,即超过半数,例如如果集群中3个节点,则必须得到两票,如果其中一台服务器宕机,剩下的两个节点,还能进行选主码?答案是可以的,因为可以得到2票,超过初始集群中3的一半,所以通常集群中的机器尽量为奇数,因为4台的可用性与3台一样。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  Olt1rl96HKat   2023年11月15日   19   0   0 RaftRaft
Olt1rl96HKat
作者其他文章 更多

2023-12-22

2023-12-22

2023-12-15

2023-12-15

2023-12-15

2023-12-15

2023-12-15