分布式一致性算法-Raft学习笔记

分布式一致性算法-Raft学习笔记 版权声明:本文为博主原创文章,未经博主允许不得转载。 手动码字不易,请大家尊重劳动成果,谢谢 作者:http://blog.csdn.net/wang_wbqRaft算法中角色和存储不同于Paxos算法,Raft算法中只有一种角色。这个角色可以有三种状态:1、Follower 2、Candidate 3、Leader...
摘要由CSDN通过智能技术生成

分布式一致性算法-Raft学习笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。

手动码字不易,请大家尊重劳动成果,谢谢

作者:http://blog.csdn.net/wang_wbq

Raft在Leader选举阶段使用term编号作为提案编号来执行paxos算法进行leader选举,为了防止活锁出现,Raft算法使用了随机定时器的策略避开了同时竞争Leader的可能。在日至提交阶段,算法保证了Leader要拥有全部日志,并且Client只能与Leader交流,提交日志。Leader利用两阶段提交和大多数集合确认的方式来确保日志被成功保存。其算法和Zookeeper的ZAB算法有一定相似性。

Raft算法中角色和存储

不同于Paxos算法,Raft算法中只有一种角色。这个角色可以有三种状态:
1、Follower
2、Candidate
3、Leader

在每台机器上都会存储:
1、currentTerm:当前节点所能看到的最大的term值,该值单调增加
2、votedFor:当前term里将票投给的对象,如果尚未投票则为空
3、log[]:日志条目,会按顺序作用于状态机
4、commitIndex:当前节点最后一个被提交的日志序号
5、lastApplied:当前节点最后一条被应用于状态机的日志序号,如果发现当前机器commitIndex > lastApplied则应该将本机log[]中序号为(lastApplied, commitIndex]的部分应用到状态机
6、snapshot:如果做了日志快照则会存储快照镜像

在状态为Leader机器上会额外存储:
1、nextIndex[]:针对每个其他节点,下一个需要发送的日志的序号
2、matchIndex[]:针对每个其他节点,当前所知的和Leader匹配的最大日志编号

Raft算法中的相关概念

1、Leader:当前集群中的领导者(干活最多的),一个Raft集群只能有一个Leader持久存在
2、Candidate:Leader候选人,当接收到多数投票后会成为Leader
3、Follower:跟随者,接受Leader的日志存储、应用请求,拥护Leader的地位
4、term:Leader的选举周期(假设所有机器都是从0开始),在一个Raft集群内单调递增。在一个term周

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值