CAP 定理

在网络分区发生时,分布式系统只能在一致性(C,linearizability 语义)与可用性(A)之间取舍;无分区时两者都可满足,因此“三选二”是简化说法。

组合

选择典型系统代价
CP分区时拒绝部分请求以保一致分区期间部分请求不可用
AP分区时继续服务,接受暂时不一致需要冲突解决与补偿
CA无分区时的形态,不适用于真实网络分区发生时无法同时保证
CAP 的 C 指线性一致性而非事务原子性;把 ACID 的 C 与 CAP 的 C 混用是最常见的误解。

易错点

  • 把 CAP 当成设计阶段的“三选二”决策清单,忽略分区是概率事件
  • 把 CAP 的 C 与 ACID 的 C 混为一谈

数据来源与参考

  • Eric Brewer《Towards Robust Distributed Systems》(PODC 2000)
  • Seth Gilbert & Nancy Lynch《Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services》(2002)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌