目录:
- 什么是CAP
- CAP的组合分析
- BASE理论
1.什么是CAP?
2000 年的时候,Eric Brewer 教授提出了 CAP 猜想,2年后,被 Seth Gilbert 和 Nancy Lynch 从理论上证明了猜想的可能性,从此,CAP 理论正式在学术上成为了分布式计算领域的公认定理。并深深的影响了分布式计算的发展。
CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。
选项 | 描述 |
C(Consistency) | 一致性,分布式系统中的数据在多个存储节点保持一致 |
A(Availability) | 可用性,部分节点出现故障,仍然保持整体对请求作出非错的响应(但是不能保证所有数据都是最新状态,即不能保证数据一致性) |
P(Partition tolerance) | 分区容错性,存储节点之间通过网络进行通信,当出现网络分区时,仍然能够对外提供满足一致性和可用性的服务。 由于网络硬件肯定会出现延迟丢包等问题,所以分区容错性是我们必须需要实现的。 |
2.CAP的组合分析
为什么一定要3选2?
如果分布式系统中的存储无副本,所有的数据都存在一台服务器中,那么系统必然满足强一致性,因为只有一份数据,不会出现数据不一致的情况。事务的ACID就是强一致性的。
如果采用的是分布式存储,要么AP,要么CP,要么CA,不可能同时满足CAP。
如,现在有a,b两个存储节点,按照正常的情况:
C:a更新数据,b同样要更新数据
A:a,b对外都是可用的
P:a,b之间出现网络分区,保证系统对外可用
出现网络分区,a,b之间已经无法通信,不可能实现C,如果一定要实现C,需要重启服务,则舍弃了A,所以分布式存储系统中无法同时满足CAP。
选项 | 描述 |
CA | 满足一致性和可用性,单机数据库的使用 |
CP | 满足一致性和分区容错性,当出现网络分区,要满足一致性需要重启服务器,舍弃可用性 |
AP | 满足可用性和分区容错性,当出现网络分区,要满足可用性,就需要对外继续提供服务,则会舍弃数据的一致性 |
3.BASE理论
BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写。
BASE是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的结论,是基于CAP定理逐步演化而来的:
其核心思想是:即使无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方法达到系统的最终一致性(Eventual consistency)。
选项 | 描述 |
Basically Available | 基本可用,分布式系统在遭遇不可预知故障时,允许损失部分可用性。 基本可用的例子: 响应时间上的损失:正常情况下,一个在线搜索引擎需要0.5秒内返回给用户相应的查询结果,但由于出现异常(比如系统部分机房发生断电或断网故障),查询结果的响应时间增加到了1~2秒。 功能上的损失:正常情况下,在一个电子商务网站上进行购物,消费者几乎能够顺利地完成每一笔订单,但是在一些节日大促购物高峰的时候,由于消费者的购物行为激增,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面。 |
Soft state | 软状态,也称为软状态,和硬状态相对,是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。 |
Eventually consistent | 最终一致性,强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。 |