1. CAP 定理


  • CAP 定理(CAP theorem),又被称作布鲁尔定理(Eric Brewer),1998 年第一次提出。
  • 最初提出是指分布式数据库存储不可能同时提供以下三种保证中的两种以上。
    • 一致性(Consistency):每次读取收到的信息是最新的。
    • 可用性(Availability):每个请求都会收到(非错误)响应。
    • 分区容错(Partition tolerance):尽管节点之间的网络不通导致分区,系统仍继续运行。
  • 事实上,不仅仅是分布式数据库存储应用,所有分布式系统都必须在 CAP 这三点之间进行权衡。

2. CAP 定理理解


image-20200706174857058.png

  • 分布式项目中,S1、S2、S3、S4、S5 分别是分布式项目节点,S2-1 是 S2 的备用节点。
  • 此时假如节点 S2 因网络情况导致不可用,S2-1 节点还可以提供服务,此为 P(分区容错)。
  • S2、S2-1 是有状态节点,假如请求到达 S2-1,S2-1 节点状态被改变,为了保证 C(一致性),此时要对 S2-1 和 S2 进行状态同步,S2 会处于短暂不可用状态。因此一般 C(一致性)和 A(可用性)经常会产生冲突。

3. CAP 选取


image-20200706174406000.png

为什么会有满足 CAP 的应用出现?

image-20200706174554147.png

  • CAP 三者各牺牲一部分,而非完全舍弃。