分布式系统的难不在”分布”,在”一致”。本系列 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 网络系列 — 网络基础设施视角
- 数据库系列 — 存储引擎与索引结构
同主题继续阅读
把当前热点继续串成多页阅读,而不是停在单篇消费。
【分布式系统百科】物理时钟的谎言:NTP、PTP 与时钟漂移的工程现实
分布式系统的物理时钟从来不精确:石英振荡器每天最多漂移 8.6 秒,NTP 校准依赖对称网络假设,闰秒可以在凌晨击垮 Linux 内核。本文拆解石英漂移的物理根源、NTP/PTP 协议的校准机制、时钟跳变对超时逻辑的破坏、Spanner TrueTime 和 AWS Clockbound 的工程方案,以及工程师应该遵守的墙上时钟与单调时钟使用规范。
【分布式系统百科】逻辑时钟:Lamport 时钟、向量时钟与矩阵时钟
两个数据中心几乎同一时刻修改了同一个用户的购物车:北京的节点把商品 A 的数量从 1 改成 3,新加坡的节点删除了商品 B。合并的时候,系统该保留哪个版本?还是两个都保留?
【分布式系统百科】共识问题的精确定义:Agreement、Validity、Termination
共识到底在解决什么问题?Agreement、Validity、Termination 三个性质的精确含义是什么?Safety 和 Liveness 的区分为什么如此关键?FLP 不可能定理对工程实践意味着什么?本文从形式化定义出发,逐步展开共识的变体、原子广播的等价性,以及状态机复制这个最重要的应用。
【分布式系统百科】Paxos:从 Single-Decree 到 Multi-Paxos 的工程之路
Paxos 是分布式共识的理论基石。本文从 Single-Decree Paxos 的精确语义和安全性证明出发,逐步推导 Multi-Paxos 的工程优化,分析 Dueling Proposers、性能瓶颈和实现困难,最后给出一份可运行的 Go 实现。