0
点赞
收藏
分享

微信扫一扫

实现Raft选主

皮皮球场 2023-11-13 阅读 56

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台一样。

举报

相关推荐

0 条评论