CAP 定理指的是在一个分布式系统中,一致性 Consistency、可用性 Availability、分区容
错性 Partition tolerance,三者不可兼得。
- 一致性(C):分布式系统中多个主机之间是否能够保持数据一致的特性。即,当系统数
据发生更新操作后,各个主机中的数据仍然处于一致的状态。 - 可用性(A):系统提供的服务必须一直处于可用的状态,即对于用户的每一个请求,系
统总是可以在有限的时间内对用户做出响应。 - 分区容错性(P):分布式系统在遇到任何网络分区故障时,仍能够保证对外提供满足一
致性和可用性的服务。
CAP 定理的内容是:对于分布式系统,网络环境相对是不可控的,出现网络分区是不可
避免的,因此系统必须具备分区容错性。但系统不能同时保证一致性与可用性。即要么 CP,
要么 AP。
BASE 理论
BASE 是 Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent(最终一致性)三个短语的简写,BASE 是对 CAP 中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的结论,是基于 CAP 定理逐步演化而来的。BASE 理论的核心思想是:即使无法做到强一致性,但每个系统都可以根据自身的业务
特点,采用适当的方式来使系统达到最终一致性。 - 基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性。
- 软状态,是指允许系统数据存在的中间状态,并认为该中间状态的存在不会影响系统的
整体可用性,即允许系统主机间进行数据同步的过程存在一定延时。软状态,其实就是一种
灰度状态,过渡状态。 - 最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到
一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需
要保证系统数据的实时一致性。
CAP 的应用
Zookeeper 遵循的是 CP 模式,即保证了一致性,但牺牲了可用性。
Consul 遵循的是 CP 模式,即保证了一致性,但牺牲了可用性。
Redis 遵循的是 AP 模式,即保证了可用性,但牺牲了一致性。
Eureka 遵循的是 AP 模式,即保证了可用性,但牺牲了一致性。
Nacos 在做注册中心时,默认是 AP 的。但其也支持 CP 模式,但需要用户提交请求进行
转换。