分布式理论
CAP 理论说:一致性、可用性、分区容错性,你只能同时满足两个。
但这句话的真正意思是:在分布式系统中,分区容错是必须的,所以我们实际上是在一致性和可用性之间做选择。
这就是分布式理论的核心——在不确定性中,寻找最优的权衡方案。
模块速览
分布式理论分为三个部分:一致性理论基础、核心问题、分布式协调。
| 章节 | 篇数 | 内容 |
|---|---|---|
| 一致性理论基础 | 6 篇 | CAP、BASE、一致性模型、ACID vs BASE、FLP 不可能性 |
| 分布式系统核心问题 | 8 篇 | 互斥、选举、共识算法(Paxos/Raft/ZAB)、一致性哈希、拜占庭 |
| 分布式协调 | 7 篇 | 逻辑时钟、分布式 ID、Gossip、Lease、2PC/3PC、微服务架构 |
核心概念图
分布式理论
│
├── 一致性理论
│ ├── CAP 理论:只能同时满足两个
│ ├── BASE 理论:AP 的工程实践
│ └── 一致性模型:强一致 / 最终一致 / 因果一致
│
├── 分布式共识
│ ├── Paxos:理论奠基者
│ ├── Raft:工程化实现
│ ├── ZAB:ZooKeeper 的选择
│ └── BFT:拜占庭容错
│
└── 分布式协调
├── 互斥与选举
├── 2PC / 3PC
├── Gossip 协议
└── 逻辑时钟学习建议
先建立大局观
分布式理论的核心是三个问题:
1. 一致性:多个节点如何对数据达成一致?
→ CAP、BASE、一致性模型
2. 共识:当部分节点故障时,系统还能工作吗?
→ Paxos、Raft、ZAB
3. 协调:多个节点如何协同工作?
→ 选举、2PC、互斥再深入细节
第一层:知道有什么
→ CAP、BASE、2PC、Raft
第二层:理解原理
→ 为什么 CAP 只能选两个?
→ Raft 的 Leader 选举流程是怎样的?
第三层:理解 Trade-off
→ 什么场景选 CP,什么场景选 AP?
→ Raft 和 Paxos 的区别是什么?各自适合什么场景?面试高频考点
分布式理论的面试,本质上考的是「对分布式系统复杂性的理解」。
常见问题
Q1:CAP 理论是什么?你们系统选 CP 还是 AP?
「对于账户余额类数据,我们选 CP——金融交易不允许不一致。 对于用户评论类数据,我们选 AP——用户感知不强,可用性更重要。 同一个系统,C 和 A 可以并存,关键是分清哪些数据用什么策略。」
Q2:Raft 和 Paxos 的核心区别?
「表面上是工程化程度的区别,深层是设计哲学的区别。 Paxos 更通用但更难实现,Raft 通过 Leader 简化了问题。 Raft 的日志复制有更强的约束,保证选出的 Leader 有最新数据。」
Q3:2PC 有什么问题?为什么?
「三个问题:同步阻塞(持有锁等待)、单点故障(协调者崩溃)、数据不一致(Commit 发送失败)。 根本原因是 2PC 的 Commit 阶段不可中断,如果协调者崩溃,部分参与者可能永久持有锁。」
延伸阅读
分布式理论是整个分布式架构的基石。理解了这些理论,再去看分布式事务、分布式锁、ZooKeeper 等具体实现,就会有「原来如此」的恍然大悟。
建议的学习顺序:
1. CAP 理论 + BASE 理论(建立取舍思维)
2. 一致性模型(理解不同级别的含义)
3. Paxos / Raft(核心共识算法)
4. 2PC / 3PC(理解协调的复杂性)
5. 一致性哈希 + 负载均衡(工程落地)