理解Raft协议

Raft协议是一种解决分布式一致性问题的方法,涉及Follower、Candidate和Leader三种结点状态。选举过程中,follower在未收到leader消息时变为candidate,获得多数选票的candidate成为leader。Leader通过发送心跳包维持其地位,并进行日志复制以确保一致性。在网络分区情况下,系统能够通过再选举和日志同步恢复一致性。
摘要由CSDN通过智能技术生成

什么是分布式一致性

首先假设我们服务器系统中只有一个结点(node),这个结点可以是一个数据库服务器存储着单一的值,有一个客户端向这个服务器发送了一个值,这个值可以很容易就满足一致性。但是,如果我们的服务器部署在集群上,有多个结点,每次对这些服务器发起的操作,都需要使他们的结果达成一致,看起来像是一台机器一样,这就是分布式一致性问题。Raft就是一种实现分布式一致性的协议

 

结点的状态

每个结点可以有三种状态:Follower,Candidate,Leader。所有的结点都是从Follower状态开始的,如果followers没有收到leader的RPC消息,则可以转换为candidate,而candidate需要发起投票,其他结点参与投票,回复他们的投票结果,如果这个candidate获得了大部分的选票,就可以成为leader结点了。这就是Leader Election过程。。

 

Leader Election

下面来看看选举的具体过程。Raft里有两个管理选举的计时器,第一个选举计时器(election timeout)是记录follower结点变成candidate结点所需要的时间,一般在150ms-300ms之间(随机),在这一轮计时结束后,有的follower结点转换成了candidate结点,就开始了真正的选举,首先candidate结点会投票给自己,然后向其他结点发起投票请求,如果收到消息的结点在这一轮倒计时中没有投出票,默认是投给candidate结点的。一旦一个candidate得到了大部分的选票,就转换成了leader结点。大部分的选

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值