Skip to content

CAP理论

CAP 是分布式系统中的一个重要理论,由计算机科学家 Eric Brewer 提出,被称为 CAP 定理(也称 CAP 理论)

什么是CAP?

CAP是三个单词的缩写

缩写含义说明
CConsistency(一致性)所有节点在同一时间看到的数据是一致的。即:写操作完成后,后续所有读操作都能读到最新的值。
AAvailability(可用性)系统始终能够在合理时间内返回非错误的响应(不保证是最新的),即使部分节点故障。
PPartition Tolerance(分区容错性)系统在部分节点之间网络通信失败(即发生“网络分区”)时,仍能继续运行。

CAP 定理的核心观点

一个分布式系统最多只能同时满足三项中的两项。

也就是说,在面对网络分区(P)时,你必须在一致性(C)和可用性(A)之间做出选择:

  • CA:放弃 P → 不是真正的分布式系统(假设网络永远可靠)
  • CP:放弃 A → 网络分区时拒绝请求,保证数据一致
  • AP:放弃 C → 网络分区时继续提供服务,但数据可能不一致

在分布式系统中,P(分区容错性)是必须的,因为网络不可靠。因此,实际选择往往是在 CP vs AP 之间。

例子

假设有两个服务器(A 和 B),数据需要同步。突然 A 和 B 之间的网络断了(发生 网络分区):

场景 1:选择 CP(一致性和分区容错性)

  • 客户端向 A 写入新数据。
  • 但由于 A 无法与 B 同步,为了保持一致性,A 拒绝写入
  • ❌ 服务不可用(牺牲 A)
  • ✅ 保证数据一致(C)

场景 2:选择 AP(可用性和分区容错性)

  • 客户端向 A 写入新数据,A 接受写入并返回成功。
  • B 由于网络断开,数据未更新。
  • ✅ 服务可用(A)
  • ❌ 数据不一致(牺牲 C)

总结

选择特点适用场景
CP保证一致,可能拒绝服务金融、账务、注册中心
AP保证可用,允许短暂不一致社交、评论、购物车
最近更新