分布式一致性算法,协议

目录

前言

一,CAP定理

二,算法

 paxos 算法

zab 算法

raft 算法

nwr 协议

三,总结


前言

在分布式系统中,无法忽略的就是数据一致性问题,随着分布式系统的大量应用,产生了很多解决一致性问题的算法。在此参考了一些博客,记录一下。


一,CAP定理

    一个分布式系统中不可能同时满足一致性,可用性和分区容错性这三个基本需求。最多只能满足其中的2个,不可能三者兼顾。

二,算法

  •  paxos 算法

    首先多个角色分别是 提议人,接收提议人,执行提议人、首先是提议人提交提案,当接受提案的人占多数时,执行提案人开始执行提案。

同时只能处理一个提案,而且会否决其他的提案,这样网络io更多,冲突更多。虽然有角色但是没有固定那个机器。也不保证决议顺序。

  • zab 算法

    专门设计的一种支持崩溃恢复和原子广播的协议。
    只有一个提议的服务器,客户端都把提案提交给提议的服务器。
    
    消息广播:使用的是原子广播协议,类似一个二阶段提交过程。只要一半以上的Flower返回Ack消息就可以进行提交。
    
    脑裂:因为网络原因一个集群分裂成两个部分,由于两个集群都不知道对方的存在,导致各自发展起来。出现两个brain的情况。zab使用Majority Quorums 的方式解决脑裂,一定超过半数才能选举出来新的leader.

  • raft 算法

    raft协议中每一个节点可能存在的状态,主要分为 领袖,群众和候选人。
    选举: 

- 所有节点初始状态都是 群众
- 在超时时间内如果没有收到领袖的请求保持,则会成为 候选人
- 每个候选人都会选择自己,如果没有获得半数以上的票的候选人,则每个候选人随机等待一段时间
- 如果某一个候选人等待结束,会发起选举,如果其他的候选人都在休息,则必须投票给当前的候选人
- 候选人收到大部分的选票就会转换为领袖,发现领袖或收到更高的任期的请求则转换为群众
- 如果领袖收到更高的任期请求会转变为群众。
  • nwr 协议

    用来控制一致性级别的一种策略。

    - N:分布式系统中有多少备份数据节点。
    - W:一次成功更新操作要求至少有W个节点写入成功。
    - R:一次成功读取数据操作,要求至少有R份数据读取成功。

        当W+R>N的时候,整个系统能够保证强一致性。

三,总结

paxos 算法是基础,基本上后续的算法都是在这个算法的基础上进行修改的,zab是通过控制提交者原子性来处理,raft是通过动态领袖在zab的基础上增强了动态适应性。nwr则是一个规则,用来判断分布式系统是不是能够达到强一致性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值