分布式系统实战
分布式系统的难不在”分布”,在”一致”。本系列不讲 CAP 定理的八股文,而是逐篇拆解生产环境里真正在跑的核心机制:Raft 共识如何保证日志一致、CRDT 如何在不要共识的前提下做合并、分布式事务比你以为的 2PC 复杂多少、混合时钟怎么在物理时钟和逻辑时钟之间找到平衡。
为什么要逐个拆解? 分布式系统的教科书喜欢从抽象模型讲起,但工程师要面对的是 etcd 的选举超时该设多少、CRDT 的元数据膨胀怎么处理、TCC 补偿逻辑怎么写。本系列每篇对着一个真实系统或协议,代码级别地拆。
适合谁看
本系列假设你有后端开发经验,了解基本的网络通信和数据库概念。如果你在工作中用到了 etcd、TiDB、CockroachDB 或类似系统,但不清楚它们底层的共识和事务机制,这个系列就是为你写的。
先修知识自测
看看这几个问题,测试一下你的分布式系统基础:
- 你能说出 CAP 定理的三个属性吗?(提示:Consistency、Availability、Partition tolerance——但更重要的是理解”不可能三角”在实践中意味着什么)
- 你理解 2PC(两阶段提交)的阻塞问题吗?(提示:协调者挂了之后参与者怎么办?)
- 你知道 Lamport 逻辑时钟解决了什么问题、又解决不了什么问题吗?(提示:它能确定因果序,但不能确定并发事件的先后)
- 你能解释 etcd 的 watch 机制为什么需要 revision?(提示:和事件溯源、乐观并发控制有关)
如果这些问题大部分答不上来,建议从第一篇 Raft 开始按顺序读。如果你对 CAP 定理的理解还停留在”背诵”阶段,这个系列会帮你把它变成工程直觉。
推荐阅读顺序: - 共识与复制 → 01(Raft)→ 02(CRDT) - 事务与一致性 → 03(分布式事务)→ 04(混合时钟) - 完整路径 → 按顺序 01-04,每篇都会引用前面的概念
目录
共识与复制
- Raft 实现拆解:etcd
的共识算法到底长什么样 ⏱ ~15 分钟 | 难度: ★★★★☆
(后端开发 / 基础设施工程师)
- Leader 选举、日志复制、成员变更
- etcd/raft 库源码关键路径分析
- CRDT
入门:不靠共识也能合并——但代价是什么 ⏱ ~25 分钟 | 难度:
★★★☆☆ (后端开发 / 分布式系统工程师)
- G-Counter / PN-Counter / LWW-Register / OR-Set
- 元数据膨胀与 GC 策略
事务与时钟
- 分布式事务不是你以为的那个
2PC ⏱ ~25 分钟 | 难度: ★★★★☆ (后端开发 / 数据库工程师)
- 2PC / 3PC / Percolator / TCC 逐一拆解
- 各方案在真实系统中的选型取舍
- 混合时钟与因果一致性:Lamport
→ Vector → HLC ⏱ ~25 分钟 | 难度: ★★★★☆
(分布式系统工程师 / 数据库内核开发)
- 逻辑时钟的局限与混合方案
- CockroachDB 的 HLC 实现分析
相关阅读
本系列与博客其他文章形成交叉引用网络,按主题分组:
存储与数据库 - 数据库系列 — 存储引擎、索引结构等底层机制
容器与调度 - 从零造容器系列 — 分布式系统的部署载体 - Kubernetes 系列 — etcd 作为 K8s 控制面的核心存储
算法基础 - Raft 原始论文笔记 — Raft 论文的阅读笔记,与 01 配合阅读