92 lines
6.0 KiB
Markdown
92 lines
6.0 KiB
Markdown
---
|
|
title: 分布式理论、算法与协议:CAP、BASE、中心化与去中心化、Paxos、Raft 与一致性哈希
|
|
description: 分布式理论与协议学习路线,涵盖 CAP、BASE、中心化与去中心化、拜占庭将军问题、Paxos、Raft、ZAB、Gossip、一致性哈希等内容,理解一致性、容错、共识、状态传播和数据分布问题。
|
|
category: 分布式
|
|
tag:
|
|
- 分布式理论
|
|
- 分布式协议与算法
|
|
- 共识算法
|
|
sitemap:
|
|
changefreq: weekly
|
|
priority: 0.9
|
|
head:
|
|
- - meta
|
|
- name: keywords
|
|
content: 分布式理论,分布式算法,分布式协议,中心化,去中心化,CAP,BASE,拜占庭将军问题,Paxos,Raft,ZAB,Gossip,一致性哈希,共识算法,拜占庭容错,BFT,最终一致性,分布式系统面试题
|
|
---
|
|
|
|
分布式理论、算法与协议是理解分布式系统的基础。学习这部分内容时,不建议只背结论,更重要的是理解不同方案在一致性、可用性、容错、共识、性能和工程复杂度之间的取舍。
|
|
|
|
## 适合谁看
|
|
|
|
- 想系统理解分布式一致性、共识算法和数据分布的后端开发者。
|
|
- 准备分布式系统、系统设计、后端架构面试的同学。
|
|
- 对 CAP、BASE、Paxos、Raft、ZAB、Gossip 等概念只停留在“背过”的读者。
|
|
- 需要理解 ZooKeeper、Redis Cluster、分布式缓存和服务发现底层机制的工程师。
|
|
|
|
## 学习重点
|
|
|
|
- CAP 和 BASE 不是口号,它们背后对应哪些真实工程取舍?
|
|
- 中心化和去中心化是在解决什么问题?Leader、多数派和 Gossip 分别适合哪些场景?
|
|
- Paxos、Raft、ZAB 都在解决共识问题,为什么工程复杂度和使用场景不同?
|
|
- Gossip 为什么适合大规模节点传播状态,和强一致协议有什么区别?
|
|
- 一致性哈希如何降低节点扩缩容时的数据迁移成本?
|
|
- 面试中如何用“问题背景 -> 核心思想 -> 流程 -> 优缺点 -> 使用场景”讲清一个协议?
|
|
|
|
## 这组文章怎么互补?
|
|
|
|
[CAP 定理与 BASE 理论详解](./cap-and-base-theorem.md) 负责解释分布式系统里“一致性、可用性、分区容错”这组取舍。[分布式协调详解](./centralized-and-decentralized.md) 继续往工程场景里推进,讨论谁来做决定、旧 Leader 为什么会造成问题、什么时候应该用 Gossip。
|
|
|
|
Paxos、Raft、ZAB 是共识协议线。建议先读 [Raft 算法详解](./raft-algorithm.md),再读 [Paxos 算法详解](./paxos-algorithm.md) 和 [ZAB 协议详解](./zab.md)。Raft 更适合入门,Paxos 更接近经典理论,ZAB 则对应 ZooKeeper 的原子广播和崩溃恢复。
|
|
|
|
[Gossip 协议详解](./gossip-protocol.md) 和 [一致性哈希算法详解](./consistent-hashing.md) 不负责强一致写入顺序,它们分别解决状态传播和数据映射问题。把这两篇放在共识协议之后看,可以避免把“传播状态”和“达成共识”混在一起。
|
|
|
|
## 建议阅读顺序
|
|
|
|
1. [CAP 定理与 BASE 理论详解](./cap-and-base-theorem.md):先建立一致性、可用性、分区容错的取舍视角。
|
|
2. [分布式协调详解](./centralized-and-decentralized.md):把 Leader、Quorum、脑裂、Lease、Fencing Token 和 Gossip 放到同一条主线里。
|
|
3. [拜占庭将军问题详解](./byzantine-generals-problem.md):理解恶意节点、矛盾消息、`3m + 1` 节点要求和 BFT 容错边界。
|
|
4. [Raft 算法详解](./raft-algorithm.md):用相对易懂的 Leader 选举和日志复制入门共识算法。
|
|
5. [Paxos 算法详解](./paxos-algorithm.md):理解经典共识算法的角色、阶段和难点。
|
|
6. [ZAB 协议详解](./zab.md):把共识算法落到 ZooKeeper 的消息广播和崩溃恢复场景。
|
|
7. [Gossip 协议详解](./gossip-protocol.md) 和 [一致性哈希算法详解](./consistent-hashing.md):理解大规模系统里的状态传播和数据分布。
|
|
|
|
## 核心文章
|
|
|
|
### 一致性与分布式理论
|
|
|
|
- [CAP 定理与 BASE 理论详解](./cap-and-base-theorem.md):理解一致性、可用性、分区容错的取舍,以及 BASE 理论和最终一致性的工程含义。
|
|
- [分布式协调详解](./centralized-and-decentralized.md):理解分布式系统为什么需要协调,以及 Leader/Quorum、Gossip、Lease 和 Fencing Token 如何分别处理协调问题。
|
|
- [拜占庭将军问题详解](./byzantine-generals-problem.md):理解存在恶意节点或异常节点时,正常节点如何对同一个结果达成一致。
|
|
|
|
### 共识算法
|
|
|
|
- [Paxos 算法详解](./paxos-algorithm.md):理解 Proposer、Acceptor、Learner 角色、两阶段流程和 Multi-Paxos 优化。
|
|
- [Raft 算法详解](./raft-algorithm.md):理解 Leader 选举、日志复制、安全性约束、成员变更和与 Paxos 的差异。
|
|
- [ZAB 协议详解](./zab.md):理解 ZooKeeper Atomic Broadcast、消息广播、崩溃恢复、ZXID 和事务日志。
|
|
|
|
### 数据传播与数据分布
|
|
|
|
- [Gossip 协议详解](./gossip-protocol.md):理解反熵、谣言传播、Push/Pull 模式、SWIM 协议和最终一致性。
|
|
- [一致性哈希算法详解](./consistent-hashing.md):理解哈希环、虚拟节点、节点扩缩容、数据倾斜和分布式缓存应用。
|
|
|
|
## 高频问题
|
|
|
|
- CAP 中的 C、A、P 分别指什么?为什么分区容错通常不能舍弃?
|
|
- BASE 理论和最终一致性解决了什么问题?
|
|
- 中心化设计和去中心化设计的区别是什么?为什么有 Leader 也不一定是单点?
|
|
- Paxos 为什么难理解?Basic Paxos 和 Multi-Paxos 有什么区别?
|
|
- Raft 为什么更容易工程实现?Leader 选举和日志复制如何保证安全性?
|
|
- ZAB 和 Raft 有哪些相似点和差异?
|
|
- Gossip 协议适合哪些场景?为什么它通常不提供强一致?
|
|
- 一致性哈希为什么需要虚拟节点?
|
|
|
|
## 相关专题
|
|
|
|
- [分布式系统知识体系](../)
|
|
- [ZooKeeper 专题](../distributed-process-coordination/zookeeper/)
|
|
- [分布式配置中心详解](../distributed-configuration-center.md)
|
|
- [分布式 ID 生成方案详解](../distributed-id.md)
|
|
|
|
<!-- @include: @article-footer.snippet.md -->
|