CAP
CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼,在分布式系统中最多只能满足其中的两项。
一致性
分布式系统下的一致性是指如果对节点A进行更新操作并且更新成功后,其他的节点上的副本数据也应该是节点A更新后的最新数据,如果客户端在访问其他节点读取到在节点A更新后更旧的值,那就是出现了数据不一致的情况。在更新完后就能够访问到最新的值,这样的一致性叫做强一致性或者叫做严格一致性。
可用性
可用性是指系统提供的服务必须一直处于可用的状态,对于用户的请求总是能够在有限的时间内返回结果。对于搜索引擎类的系统而言,搜索一个关键字,系统需要在0.3s内给出相应的结果。
分区容错性
分区容错性要求系统在遇到任何网络分区故障的时候,系统仍然需要保证对外提供满足一致性和可用性,除非是整个网络环境都发生故障。
CAP定理说明
放弃CAP定理 | 说明 |
---|---|
放弃P | 如果希望避免出现分区容错性问题,最简单的做法是把所有的数据都放在一个分布式节点上,这样的做法虽然不能百分之百保证系统不会出现问题,但是至少不会碰到网络分区带来的问题,需要注意的是,放弃P的同时也就放弃了系统的可扩展性。 |
放弃A | 做法是系统一旦遇到网络分区或者其他故障时,那么受到影响的服务需要等待一定的时间,等待期间部分系统服务无法正常对外提供服务,既不可用。 |
放弃C | 这里说的一致性是指数据的强一致性,而不是丢弃数据的一致性。抛弃强一致性,也就是客户端在访问时,可能会访问到数据的中间状态,但这不影响数据的最终一致性。 |
BASE
BASE是Basically Available(基本可用),Soft state(软状态),Eventually consistent(最终一致性)。
基本可用
基本可用是指系统在出现故障的时候,允许损失部分可用性,损失部分可用性,不代表系统是不可用的。
- 相应时间上的损失:原本应该在1s中给出相应的,现在可以推迟到2-3s的时间给出相应。
- 功能上的损失:例如在天猫双十一的时候,当天天猫会把后台的退货功能暂时关闭,会对一些页面做降级处理,以及一些在大促期间不需要的一些功能。
软状态
软状态就是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响到系统的整体可用性。
最终一致性
最终一致性强调的是系统中的所有的数据副本,经过一段时间的同步,最终会达到一个一致的状态。
最终一致性的五种变体
- 因果一致性
- 读已之所写
- 回话一致性
- 单调读一致性
- 单调写一致性