本卷 13 章,45 篇。这一篇给三样东西:全卷结构、依赖关系、三条阅读路线。第一次读建议看完「依赖图」再决定从哪一章开始。
全卷结构
本卷分三段:
| 段落 | 章节 | 回答的问题 |
|---|---|---|
| 能力 | 第 1–8 章 | 规模化需要哪些能力,各自的触发与退出条件 |
| 案例 | 第 9–11 章 | 真实演进中,这些能力怎么组合、会踩什么坑 |
| 决策 | 第 12–13 章 | 谁来决定、什么时候做、怎么判断做完了 |
三段不是并列关系。能力段给工具,案例段给组合方式,决策段给判断标准。跳过能力直接看案例,容易记住「做了什么」却不知道「为什么能做」;只看能力不看案例,容易把方案想得过于干净。
依赖图
第 1 章 拆分
├── 第 2 章 多活与容灾
│ ├── 第 9 章 Feed 演进
│ └── 第 10 章 IM 演进
├── 第 3 章 突发流量
│ └── 第 11 章 大促
├── 第 4 章 数据规模
│ └── 第 9、10 章
├── 第 5 章 成本治理
├── 第 6 章 稳定性
├── 第 7 章 安全与合规
└── 第 8 章 研发效能
└── 第 12 章 决策与组织
└── 第 13 章 收口
实线依赖表示「不读前一章,后一章的取舍看不懂」。第 5、6、7 章相对独立,但都会在案例章里被引用。第 12、13 章依赖前面所有章节的结论。
三条阅读路线
路线 A:能力建设。 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8。适合正在做架构升级、需要逐项落地的团队。读完能回答「先做哪一项、做到什么程度算完成」。
路线 B:案例驱动。 9 → 10 → 11,遇到不懂的概念再回查 1–4 章。适合已经决定改造、需要具体方案与回退步骤的人。
路线 C:决策与评审。 12 → 13,再回看每章的「触发条件」与「退出条件」。适合技术负责人、架构评审者与平台负责人。
三条路线都建议先读第 1 章。拆分的触发条件是后面所有讨论的前提:如果系统还不该拆,多活、平台化、服务治理都无从谈起。
每章的统一结构
每一章的三节都按「判定 → 实现 → 失败」展开:
| 节 | 回答什么 | 产出 |
|---|---|---|
| 第一节 | 什么条件下该做、不该做 | 触发条件、判定表 |
| 第二节 | 怎么做,有哪些替代方案 | 可运行代码、取舍表 |
| 第三节 | 做错会怎样,怎么退 | 失败场景、回退步骤 |
这个结构有一个副作用:每章的开头往往是一个事故或争论,而不是定义。这是刻意的。规模化的问题很少从「什么是单元化」开始,更多从「为什么这个单元切过去之后订单不见了」开始。
读的时候可以先看第三节的失败场景,再回头看前两节。如果你能根据失败场景判断出「哪条判定写错了」,说明前两节已经读懂;如果不能,回到第一节补判定表。
学习节奏建议
- 一周一章:适合边工作边读。每周读完三节,周末用自己系统做一次对照检查。
- 两天一章:适合准备架构评审。先读判定与失败场景,代码可以跳读。
- 半天一章:适合复习。只看每章的表格、小结与常见错误。
不建议一次读完 13 章。规模化的大部分内容需要在真实系统里对照,连续读容易变成「都懂了,但用不上」。
每读一章,建议留一条笔记:这一章最想让我改变的一个做法是什么?如果一条都写不出,说明这一章与你的阶段不匹配,可以先跳过,后面需要时再回来。
第 1 章 单体到服务化
- 1.1 拆分的触发条件:团队数、发布冲突率、故障爆炸半径三个信号;反例是按代码行数拆。
- 1.2 按产品域拆还是按层拆:共享表是最强耦合信号;拓扑排序决定拆分顺序。
- 1.3 一次拆分的回退方案:每个阶段有回退动作,失败点之前的步骤倒序执行。
失败场景:拆到一半,两个服务同时写同一张表,数据开始分叉。
第 2 章 多活与容灾
- 2.1 单元化与用户路由:路由要稳定、可解释;家单元不健康时的确定性切换。
- 2.2 数据同步与冲突:版本、时间、业务语义三层判定;冲突不能静默覆盖。
- 2.3 切换、回切与演练:回切不是切换的逆操作,有自己的数据与缓存路径。
失败场景:区间定义左闭右闭与左闭右开混用,边界用户被路由到两个单元。
第 3 章 突发流量
- 3.1 热点事件的流量特征:突发、可预测、来源集中;基线加 Z 分数识别。
- 3.2 弹性扩容与预热:扩容有冷启动,预热按分钟算。
- 3.3 降级与排队:四档降级,写清每档牺牲什么。
失败场景:降级开关没有分级,一开就全站不可下单。
第 4 章 数据规模
- 4.1 分库分表与路由:分片键决定后续一切;路由函数要稳定、可版本化。
- 4.2 冷热分离与归档:判据是访问频率与合规保留期,不只是「旧数据」。
- 4.3 数据迁移与双读:先读新再回退旧;双读比对是迁移的安全网。
失败场景:分片数改了但路由函数没版本化,历史数据全部读错片。
第 5 章 成本治理
- 5.1 单位经济模型:每订单、每用户、每 GB 的成本,先算分母。
- 5.2 存储与带宽成本:存储看保留期与分层,带宽看峰值与回源。
- 5.3 闲置回收与预算机制:回收要有人负责,预算要有约束。
失败场景:成本看板只报总额,没人知道哪条链路在烧钱。
第 6 章 稳定性体系
- 6.1 SLO 与错误预算:SLO 是承诺,错误预算是决策工具。
- 6.2 故障分级与应急:看用户影响与资金影响,呼人规则可自动执行。
- 6.3 复盘与改进闭环:动作要有 owner 与截止时间。
失败场景:复盘动作没有负责人,三个月后同样故障再次发生。
第 7 章 安全与合规
- 7.1 反爬与接口防刷:多信号加权,不靠单 IP 封禁。
- 7.2 内容安全与未成年人保护:分级、年龄、处置动作一起设计。
- 7.3 个人信息保护与审计:最小化、脱敏、审计三件套。
失败场景:日志里明文手机号被导出,审计时无法追溯。
第 8 章 研发效能
- 8.1 环境、制品与发布流水线:不可变制品与晋级顺序。
- 8.2 内部平台的能力边界:平台提供什么、不提供什么,用 SLA 写清。
- 8.3 平台采纳与反悔成本:迁移、双轨、退出成本都要提前算。
失败场景:平台上线半年,使用率只有 12%,维护成本却已固定。
第 9 章 演进案例:Feed
- 9.1 旧链路的问题与基线:延迟、扇出、成本三项先量出来。
- 9.2 双写、灰度与切换:先双写比对,再按覆盖率切流。
- 9.3 结果与回退条件:回退是预案,不是失败。
失败场景:双写不一致没人比对,切流后推荐质量下降。
第 10 章 演进案例:IM
- 10.1 会话归属与路由:粘性、存活、迁移三件事。
- 10.2 消息同步与顺序:Seq 是同步锚点,跨节点去重与补洞。
- 10.3 切换演练与用户无感:drain、补洞、回执三步。
失败场景:切流后离线消息重复推送。
第 11 章 演进案例:大促
- 11.1 容量规划与压测:从业务峰值推 QPS,再乘安全系数。
- 11.2 限流、降级与预案:每个核心接口都要有降级动作。
- 11.3 大促复盘:时间线、影响、待办三件事。
失败场景:复盘只写「流量太大」,下一次照旧。
第 12 章 决策与组织
- 12.1 团队边界与系统边界:owner 冲突要能被检测。
- 12.2 决策权与评审:按可逆性与影响分级。
- 12.3 技术债与演进路线:按利息、成本、风险排序。
失败场景:技术债清单永远排在最后,直到某次故障集中爆发。
第 13 章 全书收口
- 13.1 从 MVP 到规模化的路线图:阶段、退出条件、不可跳步的顺序。
- 13.2 架构健康度自评:维度、权重、阈值;分数用于排序而非排名。
- 13.3 结语:产品、架构与人的共同演进。
失败场景:路线图只有目标没有退出条件,做到一半无法判断是否该继续。
代码分级与实验工程
| 级别 | 含义 | 本卷情况 |
|---|---|---|
| L1 | 单包纯逻辑,仅标准库 | 第 1–13 章 |
| L2 | 进程内端到端 | 本卷不做 |
| L3 | 真依赖 | 本卷不做 |
| L4 | 多节点、故障注入 | 本卷不做 |
本卷刻意停在 L1:路由、容量、预算、SLO 的判定逻辑可以纯函数化,真实网络与存储的行为不能。每章代码块都带 // file: / // tier: / // verify: 三行头,可在 webapp-lab 中逐字节还原并运行。
数字口径
- 日活、订单、QPS、成本为案例假设值,用来表达比例关系。
- 代码输出为实测值,附命令与结果;耗时为一次本机运行,随机器变化。
- 阈值(SLO 目标、扩容系数、降级水位)是起点,需要按业务重新标定。
读表格时先看分母与单位。规模化的很多争论,不是方案不同,而是口径不同。
与其他三卷的衔接
本卷默认读者已经具备前三卷的基础能力。具体对应关系如下:
- 卷一的账号、BFF、入口、缓存、异步、发布与观测,是本卷拆分、单元化、成本与稳定性的前置。
- 卷二的内容模型、Feed、社交、IM,是本卷第 9、10 章案例的对象。
- 卷三的库存、订单、支付、券与活动,是本卷第 11 章大促案例的对象。
如果某章引用前三卷的概念,会尽量用一句话交代结论并给出链接,不重复展开。反过来,前三卷也不会重复本卷的规模化判断。
四卷的关系不是「基础 → 进阶」的线性关系,而是同一套系统在四个阶段的不同问题。读者可以按阶段跳读,但建议至少读完卷一第 1 章与卷三第 1 章,知道「回声」的业务形状。
不覆盖的范围
- 云厂商选型与报价。
- Kubernetes、服务网格的部署细节。
- 完整的安全攻防与渗透测试。
- 组织管理的完整理论。
- 多活的全部实现细节,只讲路由、同步、演练三个判定点。
术语约定
| 术语 | 本卷含义 |
|---|---|
| 单元 | 能独立承载一部分用户流量的部署与数据集合 |
| 爆炸半径 | 一次故障影响的最大用户或业务范围 |
| 错误预算 | 1 − SLO 目标,允许的失败比例 |
| 双写 | 新旧两条链路同时写入,用于迁移期比对 |
| 退出条件 | 一个阶段或方案可以结束、回退或下线的判据 |
术语在不同公司含义不同。读案例时,先确认它指的是本表哪一行。
常见误区
- 把服务数量当成熟度。 服务多了,协调成本也多了。
- 把多活当高可用。 单地域没做好隔离,多活只是复制故障。
- 把扩容当容量规划。 扩容是动作,容量规划是判断。
- 把成本优化当砍机器。 先看单位成本结构。
- 把复盘当写报告。 复盘要产出可验收的动作。
- 把平台当项目。 平台有使用率、SLA 与退出机制。
读完后的自检
- 你能说清自己系统的三条边界(数据、发布、故障)定义在哪吗?
- 你能为一个改造方案写出触发条件、验收标准与回退步骤吗?
- 你能解释一个 SLO 或成本数字的分母、窗口与负责人吗?
- 你能判断一个决策是可逆还是不可逆,并给出对应评审级别吗?
四个问题都能回答,说明本卷的内容已经进入你的判断,而不只是笔记。
如果只能回答其中一两个,也不奇怪。规模化本来就不是一次读完就能掌握的内容,它需要在真实系统里反复对照。
建议三个月后再看一遍这份自检,看看哪些问题已经能回答,哪些还在原地。进步通常发生在两次阅读之间,而不是阅读本身。
下一步
如果你还没读前三卷,建议至少补卷一第 1 章、卷二第 3 章、卷三第 1 章,知道「回声」的基本形状。如果你已经从本卷开始,读完第 13 章后回到第 1 章,用「触发条件」重新审视自己的系统,通常会有第二次收获。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。