Skip to content

分布式理论

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. 一致性哈希 + 负载均衡(工程落地)

基于 VitePress 构建