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,面试官会对你另眼相看。
参考来源:
评论
评论已关闭。