分布式系统的难不在”分布”,在”一致”。本系列 64 篇文章,从最基础的系统模型出发,逐层深入到共识协议、复制机制、分布式事务、存储系统、计算框架,直至前沿研究方向。每篇文章对着真实系统或论文,代码级别地拆。
本系列假设你有后端开发经验,了解基本的网络通信和数据库概念。完整阅读建议按顺序从 Part I 开始;如果你关注特定主题,每个 Part 也可以独立阅读。
Part I · 基础模型与不可能性
- 系统模型 — 同步/异步/部分同步,故障模型,系统模型的选择
- 不可能性定理 — FLP 不可能性,CAP 定理,PACELC,共识数
- 故障模型 — 崩溃/遗漏/拜占庭,故障检测器,灰色故障
- 端到端论证 — Saltzer 经典论文精读,在分布式系统中的应用
- 复杂度与下界 — 消息复杂度,轮次下界,协议对比
Part II · 时间、时钟与顺序
- 物理时钟 — NTP,PTP,Google TrueTime,时钟漂移
- 逻辑时钟 — Lamport 时钟,向量时钟,版本向量,矩阵时钟
- 混合逻辑时钟 — HLC 设计,CockroachDB 实现分析
- 一致性模型 — 线性一致性,顺序一致性,因果一致性,最终一致性
- 会话保证与因果一致性 — 四种会话保证,COPS,Bolt-on 因果一致性
Part III · 共识协议
- 共识问题导论 — 形式化定义,Safety/Liveness,FLP 工程意义,状态机复制
- Paxos — Single-Decree,Multi-Paxos,Paxos Made Live
- Raft 深度拆解 — 选举,日志复制,安全性证明,etcd/raft 工程,Multi-Raft
- EPaxos 与 Flexible Paxos — 无主共识,依赖图,Flexible Paxos 法定人数
- Viewstamped Replication 与 PBFT — VR 协议,拜占庭容错,PBFT 三阶段
- HotStuff 与现代 BFT — 链式 HotStuff,线性复杂度 BFT
- 共识协议的工程权衡 — 协议选型决策树,性能/复杂度/容错对比
Part IV · 复制
- 主从复制 — 同步/异步/半同步,故障转移,复制延迟
- 多主复制 — 冲突检测与解决,拓扑结构
- 无主复制 — Quorum 读写,Sloppy Quorum,反熵修复
- 链式复制与 CRAQ — 链式复制协议,CRAQ 读优化
- 线性一致性的实现 — 实现方案对比,性能代价
- 复制日志的设计 — WAL,物理/逻辑复制,日志压缩
Part V · 分区
- 哈希分区 — 一致性哈希,虚拟节点,Rendezvous 哈希,Jump Hash
- 范围分区 — 分裂/合并策略,TiKV Region,HBase Region
- 分区环境下的二级索引 — 本地索引 vs 全局索引,DynamoDB GSI
- 数据再平衡 — 固定/动态/比例分区,TiKV PD 调度
Part VI · 分布式事务
- 2PC 的真实失败模式 — 状态机,协调者故障,Presumed Abort/Commit
- 3PC 与 Saga — 3PC 局限性,Saga 编排与编制,TCC
- Percolator 模型 — Google Percolator 精读,TiDB 实现分析
- Spanner 与 TrueTime — 外部一致性,Commit Wait,CockroachDB 对比
- Calvin 与确定性事务 — 确定性执行,三层架构,FaunaDB
- 分布式快照隔离 — SI/SSI,Write Skew,CockroachDB SSI
- 分布式事务实战对比 — TiDB/CockroachDB/YugabyteDB/Spanner 对比
Part VII · 分布式存储系统
- 分布式日志:Kafka 与 Pulsar — Kafka ISR,KRaft,Pulsar 分层架构
- Dynamo 论文精读 — 一致性哈希+向量时钟+Quorum+Merkle 树+Gossip
- 从 GFS 到 HDFS — GFS 设计,HDFS NameNode HA,对象存储趋势
- Ceph 与 CRUSH — CRUSH 算法,PG,BlueStore,三种存储接口
- 分布式 KV 存储对比 — etcd vs TiKV vs FoundationDB
- NewSQL 架构拆解 — Spanner/CockroachDB/TiDB,存算分离 vs 一体
Part VIII · CRDT 与无冲突复制
- CRDT 理论 — 半格,State-based vs Op-based,SEC 定义
- CRDT 类型目录 — 计数器/寄存器/集合/序列/图,完整实现
- CRDT 在协同编辑中的应用 — OT vs CRDT,Yjs,Automerge,Diamond Types
- Delta-state CRDT 与反熵优化 — 增量传播,Merkle 树反熵,元数据 GC
Part IX · 分布式计算框架
- MapReduce — 论文精读,容错机制,Shuffle 开销,Hadoop 生态
- Spark 内核 — RDD,DAG 调度,Tungsten,Catalyst 优化器
- Flink 深度拆解 — Watermark,Checkpoint(Chandy-Lamport),Exactly-Once
- Dataflow 模型与流批一体 — What×Where×When×How,Lambda/Kappa 架构
Part X · 分布式协调与成员管理
- ZooKeeper 内核 — ZAB 协议,Watch 机制,会话管理
- etcd 深度解剖 — 持久 Watch,MVCC,Kubernetes 中的角色
- 分布式锁的真相 — Redlock 争论,Fencing Token,正确实现
- 成员协议:SWIM 与 Gossip — SWIM 探测,Memberlist 源码分析
Part XI · 可靠性与正确性工程
- Jepsen 方法论 — 一致性测试,Knossos/Elle,经典发现
- 确定性模拟测试 — FoundationDB 哲学,Buggify,TigerBeetle
- 形式化验证 — TLA+,Amazon 实践,P 语言,Dafny
- 混沌工程 — Chaos Monkey,四步方法论,工具链
- 大规模故障复盘 — GitHub/Cloudflare/AWS/Facebook 等真实案例
Part XII · 网络与通信基础设施
- RPC 框架内核 — gRPC 深度解剖,序列化对比,超时/重试/幂等
- Gossip 协议 — 流行病传播模型,Push/Pull,反熵与谣言传播
- 可靠广播 — FIFO/因果/全序广播,与共识等价性
Part XIII · 前沿与未来
- 新硬件对分布式系统的冲击 — CXL,RDMA,SmartNIC,持久内存
- 存算分离架构 — Snowflake,Aurora,Neon
- Serverless 的分布式系统挑战 — 冷启动,有状态 Serverless,Firecracker
- 可验证分布式系统的未来 — IronFleet,Verdi,AI 辅助形式化验证
相关阅读
本系列与博客其他文章形成交叉引用网络:
- Raft 原始论文笔记 — 与第 13 篇配合阅读
- Raft 在 etcd 中的实现 — 与第 13、50 篇配合阅读
- CRDT 入门 — 与第 41-44 篇配合阅读
- 分布式事务 — 与第 28-34 篇配合阅读
- 混合时钟 — 与第 8 篇配合阅读
- 从零造容器系列 — 分布式系统的部署载体
- Kubernetes 网络系列 — 网络基础设施视角
- 数据库系列 — 存储引擎与索引结构
源码下载
本文相关源码已整理,共 34 个文件。
文章导航
读完这篇,下一步读什么
优先读同系列或同问题的下一篇,把单篇消费变成主题集群。
分布式系统百科
汇总本站分布式系统系列文章,覆盖系统模型、共识、复制、事务、分布式存储、计算框架与验证工程。
【分布式系统百科】一致性模型全景:从线性一致性到最终一致性的光谱
成功写入之后,还能读到旧值吗?用反例区分线性、顺序与因果一致性,拆开最终收敛、会话保证和事务隔离;核对 ZooKeeper、Spanner、DynamoDB、Cassandra 的接口边界,并提供可运行的 Go 历史检查器。
【分布式系统百科】etcd 深度解剖:从 Watch 机制到 MVCC 存储引擎
深入剖析 etcd 的核心机制:持久化 Watch 与 Revision 追溯、Lease 租约机制、基于 BoltDB 的 MVCC 存储引擎、与 Raft 共识的联动方式,以及在 Kubernetes 中的关键角色。涵盖性能调优策略、容量限制与规模化方案。
【分布式系统百科】分布式 KV 存储对比:etcd、TiKV 与 FoundationDB
一个典型的架构评审场景:团队需要一个分布式键值存储来承载新系统的元数据。候选方案三个——etcd、TiKV、FoundationDB。三者都提供强一致性保证,都经过大规模生产验证,但设计目标截然不同。选错了,轻则性能不达标,重则数据丢失后无法恢复。这篇文章从架构、实现、性能和局限四个维度,把三个系统拆开来看。