系统是被打出来的 · 系统设计实战手册
目录 · 导读

系统是被打出来的

系统不是设计出来的,是被流量打出来的。这本书是系统设计的飞行模拟器——生产环境不给你的练习机会,这里管够。

导读 · 1为什么看书学不会系统设计

你读过那些经典。你知道 CAP,能背出一致性哈希的原理,甚至能画出一张像模像样的秒杀架构图。然后线上出事了,凌晨两点,你盯着监控大盘,不知道第一个动作该做什么。

这不是你的错,也不是书的错。问题出在系统设计这门手艺的性质上:它的知识是陈述性的,它的能力是经历性的。

你可以在一小时内读完"缓存雪崩"的定义、成因和三种处方。但你无法通过阅读获得这些东西:

这些是经历。而绝大多数工程师的问题在于:真实工作根本不提供这些经历。你的系统可能三年不出一次 P0;就算出了,处置的也多半是更资深的人;等你终于成为那个人,你的第一次实战就是一次真实的事故。

飞行员不是靠飞真飞机学会处理引擎失火的。他们在模拟器里失火过几百次,所以真的失火时,手会先于脑子动起来。

系统设计没有模拟器——这本书想当那个模拟器。

所以这本书的组织方式和教科书相反。它不按知识点排列,按挨打的顺序排列:一个虚构的抢票平台「秒抢」,从 0 到亿级用户,每一章是它遭遇的一次真实形态的危机。你不是旁观者——全书用第二人称,你就是那个 on-call 的工程师。

导读 · 2你的角色设定

你是谁
第 3 号员工
「秒抢」的后端工程师。第 1 章入职时公司只有 3 个人,你是唯一的后端。第 16 章收官时公司 300 人,而你已经不需要靠运气值班了。
「秒抢」是什么
一个抢票平台
卖演出票。选它是因为抢票业务把系统设计的所有痛点压缩到了极致:流量是一根针,库存不能超卖,用户全在同一秒到达。
时间跨度
6 年,0 → 1.2 亿用户
四个 PART 对应四个数量级:单机时代(0→1 万)、缓存与流量(→100 万)、分布式深水区(→1000 万)、高可用与多活(→亿)。
你会挨多少打
16 章 + 4 个真实事故
16 次「秒抢」的内部危机,外加 4 个改编自官方公开复盘的真实工业事故——GitLab、AWS、Knight Capital、GitHub。

导读 · 3怎么用这本书:五个机制

每一章都由前四类东西驱动,第五类只在少数几处出现。它们不是排版花样,各自解决一个具体的学习问题。

机制长什么样它解决什么问题怎么用
① 值班现场
与决策点
一段告警终端 + 几张指标卡,然后是一个四选一的决策点,点击揭晓判词 你缺的不是知识,是在信息不全、时间紧迫时做判断的经历 先自己选,再看判词。四个选项都是真实工程师会做的动作,判词会告诉你为什么那三个是错的——尤其是最诱人的那个
② 病历卡 五行固定结构:机理 / 症状 / 易发场景 / 处方 / 案例。症状行带一个曲线形状符号 故障的名字很多,但形状只有几种。诊断能力比记忆处方重要得多 重点看症状行的形状符号。全书 17 张卡按形状分组收进附录 A 图鉴,值班时可当急诊索引
③ 模拟器 浏览器里跑的实时模型,带滑块、开关和监控图。配一份🧪 实验清单 「重启救不活雪崩」这种事,讲一百遍不如你自己把它玩坏一次 一定要按实验清单的顺序做。每个实验对应一个明确的教学结论,顺序本身是设计过的
④ 权衡题 决策点 D2。和自测题的区别是:所有选项都是对的 真实架构决策没有标准答案,只有账单。工程师的成熟度体现在能说清代价 选之前先问自己"我愿意付哪一份账单",再看每个选项的代价分析和「秒抢」的选择及理由

还有第五个机制,它只在三处出现,但它是全书唯一要求你从空白页产出的东西:

机制长什么样它解决什么问题怎么用
⑤ 交卷练习 一个空文本框 + 「展开基准答案」按钮。什么都不保存,刷新就没了 前四个机制都在给你选项;真实工作和面试里没人给你选项。这是唯一检验你能否独立组织问题的地方 先写,再看。写不出来也要写下卡在哪一步——那本身就是诊断。基准答案带自评清单,因为这些题没有唯一解

它出现在第 1 章(闭卷做一次容量估算)、第 16 章的毕业飞行(换一个全新业务,两阶段,你的第一个选择会改变第二阶段的现场),以及附录 B 的三道计时 mock——三处、共 9 个练习块。顺读的完整主线是:读完 16 章 → 毕业飞行 → 读后 4 周 → 附录 B 计时 mock。

此外每章结尾有 4 道自测题(必含一道看形状诊断、一道数字计算)和 3 个面试映射追问。全书的面试题汇总在附录 B。

关于模拟器的一个承诺:正文里声称的每一个实验现象,都先用无头模型测试跑过断言才写进书里。模型跑不出来的现象,我们改模型或改说法,不上线与模型不符的文字。

导读 · 4三条阅读路径

路径一 · 顺读
跟着「秒抢」长大
从第 1 章读到第 16 章。每一章的危机都由上一章的解法埋下——缓存是为了解决第 3 章的读压力,而它在第 5 章杀了你。顺读能获得完整的因果链,这是本书的主要设计。

适合:系统性补齐能力、准备面试、想理解"为什么架构会长成那样"。
路径二 · 急查
当急诊手册用
直接打开附录 A 病历卡图鉴,按你在监控大盘上看到的曲线形状找到对应分组,再顺着卡片跳到定义它的章节。

适合:正在值班、正在排障、或者刚被问住了一个问题。

还有第三条路径,它从这本书结束的地方开始:第 16 章末尾的「接下来 4 周」给了一条把「我看懂了秒抢」变成「我能处理另一个系统」的迁移路线——体检自己的服务 → 写三份 runbook → 做一次预发游戏日 → 用附录 B 做三次计时面试,每周有交付物和完成标准。读完全书却不做这四周,最容易停在「感觉懂了」。

这条主线在书里的完整走法是:顺读 16 章 → 第 16 章毕业飞行 → 接下来 4 周 → 附录 B 计时 mock。

如果你只有一个下午:读第 5 章(缓存三兄弟,把模拟器三个实验做完)和第 12 章(秒杀专章,前半书的集大成)。这两章能让你判断这本书值不值得读完。

导读 · 5目录

PART 1 · 单机时代 · 0 → 1 万用户
第 1 章
第一次卖票——一个单体的诞生
三个人,两周,一个 MVP。容量估算三步法,以及全书的基线架构图——后面十五章都在改它。
容量估算基线架构图
第 2 章
第一次宕机——连接池耗尽之夜
深夜 502。利用率不是效率指标,是风险指标;P99 在利用率逼近 100% 时是怎么起飞的。
病历卡 No.01Sim-1 排队论
第 3 章
读写分离——以及复制延迟挖的坑
用户付了钱,订单页说「不存在」。读写分离没有消灭一致性问题,它把问题从"有没有"变成了"多久"。
病历卡 No.02
关卡一
🔥 GitLab 2017:救命的是一份临时快照
一位工程师在错误的服务器上清空了数据目录。真正的教材是接下来两小时——五条恢复路径逐一揭牌,最后救场的是一份为负载测试临时打的快照。
真实事故官方复盘改编3 个决策点
PART 2 · 缓存与流量 · 1 万 → 100 万用户
第 4 章
上缓存——以及你签下的一致性契约
缓存不是优化,是契约。四种缓存模式,以及"先更新库还是先删缓存"这个问题为什么没有干净的答案。
病历卡 No.03
第 5 章
缓存三兄弟——穿透、击穿、雪崩
02:47,命中率 2%,数据库正在被 40 倍流量冲刷。三种死法,三张病历,以及一个能让你亲手把系统玩坏的模拟器。
病历卡 No.04–06Sim-2 缓存雪崩
第 6 章
限流与降级——学会说「不」
流量瞬间 5 倍。限流不是拒绝用户,是选择先拒绝谁;降级的层级设计决定你保住什么。
Sim-3 限流算法对比
第 7 章
重试风暴与级联故障——好心办坏事
一个下游超时,五分钟后整个平台瘫痪——没有任何组件真正坏了。3 层 × 3 次 = 27 倍的那道乘法。
病历卡 No.07–09Sim-4 重试风暴
关卡二
🔥 AWS S3 2017:一个参数与四个小时
获授权的人、按既有手册、常规操作——四个限定词全部成立,事故照样发生。这一关讲当"小心"失效之后系统还剩什么。
真实事故官方复盘改编3 个决策点
PART 3 · 分布式深水区 · 100 万 → 1000 万用户
第 8 章
分库分表——以及热点分片
订单表破亿。分完之后,顶流场次又把单个分片打爆——分片解决容量,不解决热点。
病历卡 No.10Sim-5 一致性哈希
第 9 章
消息队列——削峰填谷
半夜的积压告警。消费速率只差生产速率 5%,积压也会线性上涨到天亮——它不会自愈。
病历卡 No.11–12Sim-6 积压水位
第 10 章
超卖!——库存一致性
热门场次多卖出 300 张票,法务和客服同时找上门。全书压力最高的一章,也是第 5 章那个钩子的回收点。
综合应用必考题
第 11 章
幂等与分布式锁——用户狂点了八次购买
网络抖动 + 用户狂点 + 网关重试,同一用户产生 8 笔订单。分布式锁的四种死法。
病历卡 No.13
第 12 章
秒杀架构专章——瞬时百倍流量的完整作战方案
顶流开票 D-7,你是技术负责人,要交一份完整作战方案。前半书集大成,也是「设计一个秒杀系统」的完整答案。
全景架构图预案表面试重点
关卡三
🔥 Knight Capital 2012:四十五分钟
八台服务器,七台装了新代码。第八台上,一段 2003 年停用、2005 年被改坏、从未重测的代码正在等一个开关。
真实事故SEC 行政令改编3 个决策点
PART 4 · 高可用与多活 · 1000 万 → 亿级用户
第 13 章
微服务拆分——以及拆分的代价
拆之前发布排队三天,拆之后一次跨服务排障花了两周。拆分不降低复杂度,它把复杂度从代码搬到了网络上。
康威定律何时不该拆
第 14 章
可观测性——看懂凌晨三点的仪表盘
一次「什么都没改但整体变慢 15%」的幽灵排查。metrics 告诉你坏了,traces 告诉你哪坏了,logs 告诉你为什么坏。
RED / USE告警疲劳
第 15 章
异地多活——以及脑裂
容灾演练当天,演练变成真故障:两边都认为自己是主。CAP 在机房级别不是理论,是你必须当场做的选择。
病历卡 No.14RTO / RPO
关卡四
🔥 GitHub 2018:四十三秒与二十四小时
网络断了 43 秒,自动 failover 完全按配置正确执行。然后是 24 小时 11 分的降级——不是修不好,是选择了不快点修好。
真实事故官方复盘改编3 个决策点
第 16 章
混沌工程与容量规划——主动把系统弄坏
全书收官。你主持第一次生产「游戏日」,亲手注入本书出现过的故障。系统是被打出来的,但被打之前,你可以先打它。
混沌实验容量规划收官
附录
附录 A
病历卡图鉴
全书病历卡汇总,按症状形状分六组编排——值班时先看大盘上的形状,再对症状文字。含三张正文未出现的卡:灰色故障、亚稳态故障、时钟漂移。
急诊索引
附录 B
面试映射总表
全书各章的高频追问与答题骨架汇总成一张速查表,附对应章节链接。由脚本从正文派生生成。
速查表

导读 · 6关于书里的事实

本书有两类内容,边界很清楚:

「秒抢」的一切都是虚构的——公司、同事、故障、对话、数字。它是一个教学载体,可以随剧情需要设计,唯一的要求是技术上必须站得住。

四个实战关卡和少数病历卡案例引用真实公司的真实事故。这部分遵守一套更严的规矩:

如果你发现书中任何一处真实事故的描述与官方复盘不符,那是错误,不是演绎。


准备好了就开始。
第一章没有故障,只有一个 deadline——但它会画出那张被打了十五次的图。

第 1 章 · 第一次卖票 →