CAP 定理面试精讲:你只能三选二,但现实没有那么简单

CAP 定理是分布式系统面试的必考题。

CAP 是什么

  • C(Consistency,一致性):所有节点在同一时刻看到相同的数据
  • A(Availability,可用性):每个请求都能得到非错误的响应
  • P(Partition Tolerance,分区容错):网络故障时系统仍能正常工作

你只能选两个——但你其实没得选

CAP 最容易被误解的一点:P 不是可选的。在一个分布式系统中,网络分区随时可能发生。所以实际上你只能选 CP 或 AP。

CP vs AP 的实际例子

CP 系统(牺牲可用性,保证一致性): - ZooKeeper:Leader 挂了之后要重新选举,期间不可用 - Etcd:跟 ZooKeeper 一样基于 Raft - HBase:强一致性

AP 系统(牺牲一致性,保证可用性): - Eureka:服务挂了也能查询到(可能拿到旧数据) - Cassandra:最终一致性 - DynamoDB:默认最终一致

本质是取舍

没有系统能同时满足三个。CAP 不是告诉你「怎么设计完美的系统」,而是告诉你「每一次技术选型都在做取舍」。

面试话术

CAP 定理告诉我们:在一个分布式系统中,网络分区不可避免。当分区发生时,你必须在一致性(C)和可用性(A)之间做选择。比如 ZooKeeper 是 CP,网络故障时宁可不可用也不返回旧数据。Eureka 是 AP,宁可返回旧数据也要保证服务可用。

关键是能举例。光背定义没有用,能说出 ZooKeeper 为什么是 CP、Eureka 为什么是 AP,面试官会对你另眼相看。


参考来源:

关于 Zihao Zhang

后端开发工程师。关注 Java/Spring Boot/Redis/MySQL 技术栈,分布式系统,OLAP 数据库,AI Agent 开发与应用。

评论

评论已关闭。