Files
wehub-resource-sync bdaa917396
Docs Test / Test docs (push) Failing after 1s
chore: import upstream snapshot with attribution
2026-07-13 11:57:49 +08:00

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 -->