分布式系统之CAP理论

CAP定理定义

CAP定理,指出对于一个分布式系统来说,不可能同时满足三点:Consistency,Availability,Partition tolerance

  • 一致性Consistency:这里的一致性指的是强一致性,所有节点访问同一份最新的数据副本。还有另一种一致性是用户一致性,不同的存储设备里面的副本的数据可能是不一样的,但是当终端的用户访问的时候,通过一些纠正错误的方法,保证能返回一个一致的正确数据给用户。
  • 可用性Availability:服务一直可以使用,每一次请求都能在正常的时间内得到响应。通常会把一份数据做多个数据备份,存到不同的存储设备上,如果一个存储设备坏了,就快速切换到另一个存储设备上,这个切换时间要足够短,保证用户几乎感受不到。
  • 分区容错性Partition tolerance:即使分布式系统某个节点或者某个网络分区出现故障,系统仍然可以对外提供服务,而且这个服务是满足一致性和可用性的。

CAP的取舍

一致性、可用性根据可以从0%到100%分为多种程度,并不是只有0%和100%两种状态。比如数据的一致性可以分为:强一致性,弱一致性,读写一致性,最终一致性。
由于大规模分布式的时候,网络分区是一个现实,必须保证分区容错性,在强一致性和极端的可用性二者之间做平衡。

有些系统对数据的强一致性有很大的需求,通常会有限实现CP,牺牲一点可用性Availability,当出现网络有些故障或者有些消息丢失的时候,就会暂时让服务不可用,等到数据全部一致了,在让系统可用,允许用户访问。比如Redis、HBASE这样的分布式数据库就会再用这种方案,因为数据一致性是存储系统的最基本的要求。zookeeper也采用的是有限保证CP。

更多的系统难以满足数据的强一致性,这样成本太高,可能也没余必要。很多大型的网站会选择较高的可用性和分区容错性CP,放弃强一致性,会采用用户一致性方案,保证最终用户访问的数据是正确的就可以了。

Paxos协议

paxos协议是在保证强一致性的前提下,对可用性进行优化的算法。

ZAB协议

Zookeeper的核心算法是ZAB协议,他对Paxos进行了简化,提供全局的时间顺序上的保证,使他能满足工业应用的要求。

Paxos用在分布式系统中有一些问题,例如

  • 在多个Proposer的场景下,Paxos协议不能保证先提交的提案首先被接受,提案之间的顺序可能是乱的

ZAB协议通过添加约束来解决问题:所有的提案转发到同一个leader提交,由leader来保证提案之间的先后顺序,也避免了多个多分Proposer引发活锁问题。

参考文献

Hollis网站的文章:分布式系统的CAP理论
掘金网站的文章:分布式系统的经典基础理论

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值