定义:
百度百科中说:CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。
一致性(C)
在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
可用性(A)
在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
分区容错性(P)
百度百科最后说了一句,“这三个要素最多只能同时实现两点”,为什么?咱们模拟一下实际的情况:
既然是分布式系统,”数据分布式“的意义处理在于提高性能,还有一个重要的原因是:分布式下的数据集群要“系统具备容错能力”。也就是说,只要“分布式数据集群”,那么P原则是必须要满足的。既然P原则必须满足,假如场景如上图描述,那咱们就分析一下CA两个原则。
1、向A写入一条记录,然后数据中心A通过网络同步数据到数据中心B,此时假如要满足“C一致性”,就是说对外提供的数据是一致的。因为同步需要耗时,在此过程,数据中心B的同步还没有完成,所以本段时间内数据中心B就不能对外提供的数据服务(不满足“可用性”条件),必须等到同步完成才能提供数据服务。为了满足PC(分区容错性,一致性),A(可用性)就满足不了。
2、向A写入一条记录,然后数据中心A通过网络同步数据到数据中心B,如果要满足可用性,但是因为数据中心B的同步还没有完成,数据中心B对外提供的数据是不一致,所以所以本段时间内,数据中心A与B是不一致的。为了满足PA(分区容错性,可用性),C(一致性)就满足不了。
所以说,CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。
Base理论
因为CAP理论在一定程度上不能满足人们的心理预期,于是,又提出了个Base理论。
百度百科:BASE 理论是对 CAP 中的一致性和可用性进行一个权衡的结果,理论的核心思想就是:我们无法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。BASE 是 Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent (最终一致性)三个短语的缩写。
1、基本可用
分布式系统在出现故障时,允许损失部分可用功能,保证核心功能可用。
2、软状态
允许系统中存在中间状态,这个状态不影响系统可用性,这里指的是 CAP 中的不一致。
3、最终一致
最终一致是指经过一段时间后,所有节点数据都将会达到一致。
BASE 解决了 CAP 中理论没有网络延迟,在 BASE 中用软状态和最终一致,保证了延迟后的一致性。