system-design-notes:2的幂次为什么必背?快速估算数据量的技巧清单
【免费下载链接】system-design-notesNotes of the book System Desgin Interview - An Insider's Guide项目地址: https://gitcode.com/GitHub_Trending/sy/system-design-notes
系统设计面试中,快速估算数据量是最考验基本功的环节:QPS 多少?存储要多少 TB?需要几台服务器?这些问题的答案不用精确,但必须在几分钟内算出来。system-design-notes 这个开源项目整理了《System Design Interview》一书第 2 章Back-of-the-Envelope Estimation(拍脑袋估算)的全部核心内容,其中"2 的幂次表"就是快速估算数据量必背的第一张表。这篇文章帮你把估算技巧一次性讲清楚。
为什么"2 的幂次"是估算数据的基石?
计算机的世界是二进制的世界:内存按字节翻倍分配、带宽按 bit 计算、磁盘寻址按 2 的幂次进行。所以工程师估算数据量时,习惯用 2 的幂次来"锚定"数量级:
- 知道2^10 ≈ 1K,就能把"1000"和"1KB"直接划等号;
- 知道2^20 ≈ 1M,就能心算"150 万用户 ≈ 2^20"级别的流量;
- 知道2^40 ≈ 1T,就能判断"每天 30TB 的媒体数据"意味着什么量级。
背下这张表之后,KB / MB / GB / TB / PB 之间的换算、用户数和请求数与存储量之间的换算,都能口算完成,这正是快速估算数据量与存储需求的关键。

这张"2 的幂次快速估算表"是本章的灵魂,完整来源见 02. Back Of the Envelope Estimation/Readme.md。
5 个必背的估算锚点
| 幂次 | 近似值 | 含义 |
|---|---|---|
| 2^10 | ≈ 1 Thousand | 1 KB |
| 2^20 | ≈ 1 Million | 1 MB |
| 2^30 | ≈ 1 Billion | 1 GB |
| 2^40 | ≈ 1 Trillion | 1 TB |
| 2^50 | ≈ 1 Quadrillion | 1 PB |
记忆口诀:从 1KB 开始,每加 10 个 2,单位升一档(KB → MB → GB → TB → PB)。
延迟数字:估算系统性能的"第二张表"
除了数据量,估算"快慢"同样重要。项目整理了一份每个程序员都应知道的延迟数字(2020 数据),它回答的是"这一步到底要花多久":
| 操作 | 延迟 |
|---|---|
| L1 缓存访问 | 0.5 ns |
| L2 缓存访问 | 7 ns |
| 主内存访问 | 100 ns |
| SSD 随机读 | 150 µs |
| 机械硬盘随机寻道 | 10 ms |
| 数据中心内往返 | 500 µs |
| 跨区域数据中心 | 150 ms |
💡 三个关键结论(来自 Readme.md 第 21-39 行):
- 内存快、磁盘慢——热点数据尽量放内存;
- 尽可能避免磁盘随机寻道——一次 HDD seek 约 10 ms,是 L1 缓存的两万倍;
- 上网传输前压缩数据——用 CPU 换带宽,通常划算。
估算 QPS 的完整套路:以 Twitter 为例
背完两张表,就可以动手估算了。项目用 Twitter 做标准案例(Readme.md 第 55-76 行),完整流程如下:
第一步:写下假设(估算的前提)
- 月活 3 亿(300M MAU);
- 日活 50%(DAU = 150M);
- 每人每天发 2 条推文;
- 10% 的推文带媒体;
- 数据保留 5 年。
第二步:算平均 QPS
150,000,000 × 2 条 ÷ 24 小时 ÷ 3600 秒 ≈3500 QPS
第三步:算峰值 QPS(流量通常有尖峰,简单起见翻倍)
2 × 3500 ≈7000 QPS
第四步:算存储需求
- 单条推文 ≈ tweet_id 64B + 文本 140B + 媒体 1MB ≈ 1MB;
- 每天媒体存储 = 150M × 2 × 10% × 1MB =30TB/天;
- 5 年总存储 ≈ 30TB × 365 × 5 ≈55PB。
看到 55PB,再对照上面的幂次表(2^50 ≈ 1PB),你就有直觉了:这是一个 PB 级、必须分片 + 多数据中心的问题,而不是一台服务器能扛的。

估算结果直接指导架构选择:数据量小用 单服务器架构 即可起步,如图中所示,从单台 Web Server 出发(见 01. Scaling/Readme.md),当 QPS 和存储估算超标后,再升级为水平扩展的多服务器集群。
4 个让估算又快又准的技巧
项目总结的估算技巧(Readme.md 第 80-98 行),每一条都来自实战:
- 大胆四舍五入:99987 ÷ 9.1 ≈ 100,000 ÷ 10 = 10,000。精度不重要,过程才重要;
- 写下假设:所有前提条件白纸黑字写下来,方便回溯和修改;
- 标注单位:写"5MB"而不是"5",避免口径歧义;
- 记住 5 类常见场景:QPS、峰值 QPS、存储需求、缓存内存需求、服务器台数——面试 90% 的估算都落在这五类里。
延伸阅读:把估算用到 28 章设计案例里
估算只是第 2 章,system-design-notes 的 28 个系统设计案例几乎都在反复使用这些技巧。推荐路径:
- 03. System Design Framework/Readme.md:面试框架,估算发生在哪一步;
- 04. Rate Limiter/Readme.md:QPS 估算的直接应用——限流器设计;
- 22. Hotel Reservation System/Readme.md:其中就有一张 QPS 估算图(qps-estimation.png),和第 2 章方法完全一致。
小结
| 必背内容 | 用途 |
|---|---|
| 2 的幂次表(2^10 → 2^50) | 数据量、存储量心算 |
| 延迟数字(0.5 ns → 150 ms) | 性能瓶颈定位 |
| QPS = 日请求量 ÷ 86400 | 流量估算 |
| 峰值 ≈ 2× 平均值 | 容量规划 |
| 四舍五入 + 写假设 + 标单位 | 估算表达规范 |
花 10 分钟背熟"2 的幂次表",再花 10 分钟把 Twitter 案例的手算流程走一遍,你就掌握了系统设计里最常用的快速估算数据量技巧 🎯
【免费下载链接】system-design-notesNotes of the book System Desgin Interview - An Insider's Guide项目地址: https://gitcode.com/GitHub_Trending/sy/system-design-notes
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考