分布式理论
面试官问:"你们这个服务为什么选择 CP 而不是 AP?"
候选人愣了一下,说:"CAP 三选二嘛,所以我们选了 C 和 P..."
面试官追问:"那 AP 和 CP 的区别是什么?什么场景下必须选 CP?"
候选人支支吾吾答不上来。
【架构权衡】 90% 的候选人会挂在 CAP 的理解上。CAP 不是让你三选二,而是说网络分区发生时,你必须在一致性和可用性之间二选一。平时没有分区,你三者都可以有。这个"什么时候"才是 CAP 的精髓。
一、内容总览
本模块覆盖分布式系统的基础理论,这些理论是所有分布式工程实践的基石:
1.1 CAP 理论 🔴
1.2 BASE 理论 🟡
1.3 PACELE 理论 🟡
1.4 一致性模型 🟡
1.5 共识与故障模型 🟡
二、学习路径指引
第一阶段:破解 CAP(3-5 天)
先看 CAP 理论详解,理解 C/A/P 三角关系的真正含义。然后看 CAP 常见误解,纠正"CAP 就是三选二"这个致命错误。最后看 CAP 与 BASE 的关系,理解这两个理论如何协同工作。
CAP 的精髓在于"什么时候":没有分区时,你不需要在 C 和 A 之间做选择。只有分区发生时,你才被迫二选一。这个"什么时候"是面试官最爱的追问点。
第二阶段:理解 BASE(2-3 天)
BASE 理论 是 CAP 理论在生产实践中的妥协方案。核心是接受最终一致,通过基本可用和软状态来换取可用性。配合 CAP 与 BASE 的关系 理解为什么大多数互联网系统选择 BASE。
第三阶段:深入 PACELE 与一致性(5-7 天)
PACELE 理论 是在没有分区发生时,系统如何在 C 和 A 之间做权衡。这个理论很少被直接考察,但它能帮你建立更完整的分布式思维。
【架构权衡】 一致性模型的选择是架构设计的核心决策。从线性一致性到因果一致性,每种模型都在性能和一致性之间做了不同的权衡。理解这些模型,才能理解 Redis Cluster 为什么选择弱一致性,ZooKeeper 为什么选择严格一致性。
然后深入 一致性模型概览、线性一致性、因果一致性 和 向量时钟,理解分布式系统在不同一致性级别下的行为。
第四阶段:共识与故障(3-5 天)
FLP 不可能性 告诉你一个反直觉的事实:在异步系统里,只要有一个进程可能崩溃,就不存在确定性的共识算法。这个结论奠定了 Paxos/Raft 等实用共识算法的基础。
理解 故障模型 才能理解分布式系统的边界。拜占庭故障是最严苛的模型,现实生产环境通常是崩溃故障。
三、核心问题速查
四、面试高频考点
第一追问:CAP 什么时候生效?
考察候选人对 CAP 本质的理解。必须能说清楚:CAP 不是常态选择,只有分区发生时才生效。平时的 C/A/P 三者都可以有。
第二追问:Redis Cluster 是 AP 还是 CP?为什么?
考察候选人对常见系统的理解。必须能说清楚 Redis Cluster 的主从复制模式、分区时的行为、为什么选择优先可用。
第三追问:你们系统选的是 AP 还是 CP?怎么验证的?
考察候选人的实战经验。能说清楚自己系统的取舍,以及如何通过故障注入验证系统行为。
本模块是分布式系统的理论基础,每个理论都经过生产环境的检验。没有扎实的理论基础,分布式系统设计就是空中楼阁。