Raft术语总结

Raft术语总结

三种成员身份

raft提供三种成员身份,领导者(leader)、跟随者(follower)、候选人(candidate)

  • 跟随者:相当于paxos中的acceptor,接收和处理leader的消息,当leader故障时,主动推荐自己为候选人
  • 候选人:向其他节点发送请求投票消息(Request Vote),如果获得大多数选票,则晋升为leader
  • 领导者:处理写请求,管理日志复制、发送心跳消息。

两种运行阶段

raft强化了leader的地位,把整个协议可以清楚的分割成两个部分,并利用日志的连续性做了一些简化:

  • leader在时,由leader向follower同步日志。
  • leader挂掉了,选一个新leader,leader选举算法。

两类rpc消息

  • 请求投票消息(request vote),用于选举leader。
  • 追加条目消息(append entry),用于心跳消息或日志复制消息。该包含当前最大的日志项。

raft与multi-paxos的区别

  • 不是所有节点都能当选leader
    只有日志最完整的才能当选leader,而multi-paxos则不需要保证这一点,也意味multi-paxos需要额外的流程从其它节点获取已经被提交的日志。
  • 日志是连续的
    日志的连续性蕴含了这样一条性质:如果两个不同节点上相同序号的日志,那么这和这之前的日志必然也相同的
  • 简化的二阶段

Leader选举

在节点刚启动状态下,都处于follower状态。同时每个节点会为自己设置一个等待leader心跳消息的随机超时时间。当在超时时间之内没有收到来自leader的心跳信息时,则会推荐自己为candidate。随后增加自己的任期编号,并以candidate的身份发起请求投票消息,推荐自己为leader,当获得大多数选票后,晋升leader,发送心跳消息。

选举过程

例如,存在A、B、C三个节点的raft集群刚启动时,都处于follower状态,其中A超时时间为100ms,B超时时间为200ms,C超时时间为300ms。
节点信息节点信息

由于集群中不存在leader,A、B、C三个节点都不会收到来自leader心跳信息。其中,A节点的超时时间最小,则最先修改自己状态为candidate,并增加自己的任期编号为1,发起请求投票消息。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值