分布式理论

面试官问:"你们这个服务为什么选择 CP 而不是 AP?"

候选人愣了一下,说:"CAP 三选二嘛,所以我们选了 C 和 P..."

面试官追问:"那 AP 和 CP 的区别是什么?什么场景下必须选 CP?"

候选人支支吾吾答不上来。

【架构权衡】 90% 的候选人会挂在 CAP 的理解上。CAP 不是让你三选二,而是说网络分区发生时,你必须在一致性和可用性之间二选一。平时没有分区,你三者都可以有。这个"什么时候"才是 CAP 的精髓。

一、内容总览

本模块覆盖分布式系统的基础理论,这些理论是所有分布式工程实践的基石:

1.1 CAP 理论 🔴

文章核心内容面试权重
CAP 理论C/A/P 三选二的正确理解🔴 高频必考
CAP 常见误解误区澄清与正确应用🔴 高频必考
CAP 与 BASE 的关系两者如何协同指导实践🟡 中频常考

1.2 BASE 理论 🟡

文章核心内容面试权重
BASE 理论基本可用、软状态、最终一致🔴 高频必考
CAP 与 BASE 的关系弱一致的实际应用🟡 中频常考

1.3 PACELE 理论 🟡

文章核心内容面试权重
PACELE 理论无分区时的 CA 权衡🟡 中频常考

1.4 一致性模型 🟡

文章核心内容面试权重
一致性模型概览各种一致性模型对比🟡 中频常考
线性一致性最强一致性保证🟡 中频常考
因果一致性弱于线性但强于最终一致🟢 低频了解
向量时钟分布式时钟与因果追踪🟢 低频了解

1.5 共识与故障模型 🟡

文章核心内容面试权重
FLP 不可能性异步系统共识的极限🟢 低频了解
故障模型拜占庭、崩溃、遗漏等🟡 中频常考
Quorum 机制多数派读写保证🟡 中频常考

二、学习路径指引

第一阶段:破解 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 三选二是什么意思?分区时必须在 C 和 A 之间二选一误以为平时也要三选二
为什么 Redis Cluster 是 AP?优先可用,分区时保持读写误以为 Redis 不保证一致性
ZooKeeper 为什么是 CP?分区时牺牲可用,保证一致误以为 ZK 不保证可用
BASE 和最终一致的区别?BASE 是理论,最终一致是实现混为一谈
PACELE 解决什么问题?无分区时的 CA 权衡完全不知道

四、面试高频考点

第一追问:CAP 什么时候生效?

考察候选人对 CAP 本质的理解。必须能说清楚:CAP 不是常态选择,只有分区发生时才生效。平时的 C/A/P 三者都可以有。

第二追问:Redis Cluster 是 AP 还是 CP?为什么?

考察候选人对常见系统的理解。必须能说清楚 Redis Cluster 的主从复制模式、分区时的行为、为什么选择优先可用。

第三追问:你们系统选的是 AP 还是 CP?怎么验证的?

考察候选人的实战经验。能说清楚自己系统的取舍,以及如何通过故障注入验证系统行为。

级别期望回答判分标准
P5能背出 CAP/BASE 定义基本概念正确
P6能解释 CAP 什么时候生效,BASE 如何落地能回答追问,理解本质
P7能为业务场景选择合适的一致性模型有全局视野,能做权衡

本模块是分布式系统的理论基础,每个理论都经过生产环境的检验。没有扎实的理论基础,分布式系统设计就是空中楼阁。