Skip to content

CAP 定理

CAP theorem

网络分区期间,系统不能同时保证所有请求可用与线性一致性。

形式陈述

Gilbert–Lynch 形式的 CAP 结论指出,在允许网络分区的异步读写寄存器模型中,不存在同时保证线性一致性与可用性的实现;可用性要求每个非故障节点收到的请求最终得到响应。冲突只在分区执行期间迫使选择,不是平时永久“三选二”。一致性这里是原子/线性一致性,不是任意含义的 consistency。

直觉

分区两侧无法通信时,若都必须立即响应写读,就可能给出彼此矛盾的最新值;若坚持单一实时顺序,就至少一侧需要等待或拒绝。

例子与边界

CP 系统在失去 quorum 的分区拒绝服务,AP 系统继续本地响应并稍后解决冲突。弱化为最终一致性、限制操作或改变可用性定义会得到不同权衡。CAP 不直接比较延迟与一致性的常态权衡,PACELC 等模型才进一步讨论。

推论与应用

CAP 用于明确分区时的服务语义、quorum 策略和产品一致性承诺。

参考资料
  • Seth Gilbert and Nancy Lynch, Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services, SIGACT News 33(2), 2002,pp. 51–59。
  • Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996,Chs. 1–25。