数字感:工程师的第二直觉
面试中估算环节拉开差距的不是智商,是背熟的数量级。工作中做容量规划、算云成本、评审「这方案扛得住吗」——全都靠同一张脑子里的表。这张表只有十几个数字,背下来就是终身资产。
§1 · 为什么数量级比精确值重要
估算的目的从来不是算准,而是用数量级做架构判断:一个请求访问内存是 100 纳秒,访问机械盘是 10 毫秒——差 10 万倍。精确值是 8 万倍还是 12 万倍根本不重要,重要的是「一旦跨过这条界线,架构就是另一个世界」。
这条思路来自 Jeff Dean 的著名演讲("Latency Numbers Every Programmer Should Know",社区维护成共享表格[1],还有可调年份的交互版本[2])。
§2 · 必背表 A延迟数量级
| 操作 | 时间 | 换算成人话 |
|---|---|---|
| L1 缓存引用 | ~0.5 ns | 一眨眼的十亿分之一 |
| 内存随机访问 | ~100 ns | 极快,可当作「免费」 |
| SSD 随机读 | ~100 µs = 100,000 ns | 比内存慢 1000 倍 |
| 机械盘寻道 | ~10 ms | 比 SSD 慢 100 倍(数据库宁可要内存/SSD 的原因) |
| 同机房往返 RTT | ~0.5 ms | 微服务同机房调用一次的开销 |
| 跨洋 RTT(如中美) | ~150 ms | 光速决定的物理极限,无法优化 |
记住两个比例就够了:内存 : SSD ≈ 1000 : 1,SSD : 机械盘 ≈ 100 : 1。缓存为什么是第一杠杆?因为它把读从 SSD 层搬到了内存层——一次就是 1000 倍。完整速查表 →
§3 · 必背表 B可用性「几个 9」的代价
| 可用性 | 俗称 | 年停机 | 月停机 |
|---|---|---|---|
| 99% | 两个 9 | 3.65 天 | 7.2 小时 |
| 99.9% | 三个 9 | 8.76 小时 | 43.2 分钟 |
| 99.99% | 四个 9 | 52.6 分钟 | 4.32 分钟 |
| 99.999% | 五个 9 | 5.26 分钟 | 25.9 秒 |
面试答「我们要 99.999%」之前,先想清楚它意味着全年只允许宕机 5 分钟——要付出多大的冗余成本。大多数业务三个 9 起步、核心链路四个 9,就是理性答案。
§4 · 三个换算公式
- 一天 = 86,400 秒 ≈ 10⁵ 秒;一年 ≈ π × 10⁷ 秒(工程师的浪漫记忆法:π 秒就是一个纳世纪)。
- QPS ≈ DAU × 人均日操作次数 ÷ 86400,峰值 = 均值 × 2–3(晚高峰/大促)。
- 存储 = 每条记录大小 × 每月新增 × 12 × 保留年限;线上再乘副本系数 ≈ ×2。
算完追问自己一句:「这个数字改变了什么决策?」——没改变任何决策的数字,不要浪费面试时间展示。
§5 · 专项训练估算训练器
直接做。允许 ±30% 误差——这就是真实估算的精度标准。答错会先给提示;这个组件后续课程会反复出现。
§6 · 随堂检测
§7 · 检索练习默写两张表
凭记忆写出:① 内存 / SSD / 机械盘 / 跨洋 RTT 的延迟和倍数关系;② 99.9% 和 99.99% 的年停机时间。
写完再核对
内存 ~100 ns;SSD ~100 µs(慢 1000 倍);机械盘 ~10 ms(比 SSD 慢 100 倍);跨洋 RTT ~150 ms(光速极限)。99.9% = 年停 8.76 小时;99.99% = 年停 52.6 分钟。速查表
📌 明天再来测一次——间隔重复才是把表刻进长期记忆的方式。
§8 · 本周行动
① 连续 3 天,每天打开本课的训练器做一轮(内容会打乱重排);
② 第 3 天,从监控里抓出你公司系统的真实 DAU/QPS,自己估一遍再对照——真实校准比任何题目都有价值。
§9 · 延伸资源
- 首选精读:Alex Xu《System Design Interview Vol.1》「Back-of-the-Envelope Estimation」一章的例题[3]
- 交互式延迟数字(可切换年份,看硬件进步如何改写数字)[2]
- 参考文档:延迟数字与换算速查表(打印贴墙版)
- 下一课 → Lesson 0003 核心积木 I:从一台机器到集群