直接回答:CAP 指分布式系统无法同时满足一致性(Consistency,所有节点读到同一份最新数据)、可用性(Availability,每个请求都有非错误响应)、分区容忍性(Partition tolerance,网络分区时系统仍运行)。网络分区在分布式环境不可避免,所以实际是在 P 的前提下于 C 和 A 之间取舍。

展开解析:例子:

  • CP:分区时拒绝部分请求以保一致。如 ZooKeeper、etcd、HBase——多数派不可用时只读或不可用。
  • AP:分区时继续服务但可能返回旧数据。如 Cassandra、DynamoDB、Eureka,靠异步复制达到最终一致。
  • CA:严格说只在无分区时成立,单机关系型数据库可视作 CA,但它不算分布式系统。

易错点:CAP 的 C 是线性一致性,不是 ACID 的 C;"三选二"是粗略说法,准确是"分区发生时选 C 还是 A"。现实中还有 PACELC 扩展:无分区时还要在延迟(Latency)与一致性间权衡。

追问方向:BASE 理论、Quorum 读写如何在 C/A 间调参。