Raft 协议

Raft协议是一种广泛使用的强一致性的共识算法。其核心包括三种角色:跟随者、候选人和领导者。当领导者心跳超时,跟随者会变成候选人发起选举,获得多数选票的节点成为领导者。此外,随机的超时时间特性防止了多个节点同时竞选。选举过程中,节点会经历从跟随者到候选人的转变,最终稳定为领导者并发送心跳信息维持集群状态。
摘要由CSDN通过智能技术生成

对于强⼀致性共识算法,目前最多使用的就是 Raft 协议。

Raft协议成熟的实现案例

  • 蚂蚁金服的JRaft;
  • Zookeeper 的 ZAB;
  • Consul 的 Raft;
  • 百度的 braft;
  • Apache 的 Ratis;

Raft角色

  • 跟随者(Follower):普通群众,默默接收和来自领导者的消息,当领导者心跳信息超时的时候,就主动站出来,推荐自己当候选人。
  • 候选人(Candidate):候选人将向其他节点请求投票 RPC 消息,通知其他节点来投票,如果赢得了大多数投票选票,就晋升当领导者。
  • 领导者(Leader):处理写请求、管理日志复制和不断地发送心跳信息(维持领导地位)。

随机超时时间特性

Raft 算法中具有随机超时时间特点,每个节点等待领导者节点心跳信息的超时时间间隔是随机的。为了防止多个节点同时发起投票,每个节点分配的选举超时时间也是随机的。

选举过程

  1. 初始状态,所有节点都是跟随者。
  2. 当集群中没有领导者时,等待超时时间最小的节点会因为没有等到领导者心跳信息,发生超时。
  3. 超时自荐,此时该节点就会增加自己的任期编号,并推举自己为候选人,先给自己投一票,然后向其他节点发送请求投票RPC消息,请它们选举自己为领导者。
  4. 选举投票,其他节点接受到候选人的RPC消息时,并且在编号为1的任期内,没有投过票,那么就把选票投给该候选人,然后增加自己的任期编号。
  5. 新领导产生,候选人在选举超时时间内赢得了大多数的选票,那么它就会成为本届任期内新的领导者。
  6. 正常状态,领导者将周期性地发送心跳消息到其他服务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值