System Design 入门
System Design Handbook 的导读:这本手册怎么组织、每个模块读完应该能回答什么问题、按面试时间线(短期 / 中期 / 长期)分别读哪些章节,以及和「如何处理 System Design 面试题」「System Design Interviews」两章的分工。
学习如何设计大型系统。
为 System Design 面试做准备。
面试全流程准备指南
结构化准备简历、行为面与技术面,快速补齐短板。
这一章是整本手册的导读,只回答两个问题:这本手册里有什么、按什么顺序读;离面试还有多久,就该读到哪一层。 面试现场怎么一步步答题见 如何处理 System Design 面试题(用短链接服务从需求走到深挖);面试官看什么、每道经典题练的是哪些概念、各阶段会被怎样追问,见 System Design Interviews。
学习如何设计大型系统
学习如何设计 scalable 系统,会帮助你成为更好的 engineer:知道一个请求从浏览器到数据库经过哪些组件、每个组件在什么负载下先出问题、出问题时用户看到什么。
System Design 是一个很 broad 的话题,网上的资料很多但很散。本手册的基础章节整理、翻译自开源的 System Design Primer 等资料(完整列表见 References),并在此基础上补了带数字的估算、故障与恢复表和「面试时这样回答」段落。AI Engineering 模块和各个「架构」章节(例如 Cache 架构、Database Replication)是按官方文档、论文和源码写的,每章末尾列出一手证据,很多配有可以注入故障的互动 Lab。
为 System Design 面试做准备
很多 tech company 的面试里,除了 coding interview,System Design 也是必要环节。准备方式是做题 + 对照解答:先自己按做题顺序走一遍,再和手册里的解答比较讨论、图和取舍,找出自己漏掉的需求、算错的数量级和没讲的故障。
面试准备的其他入口:
- 如何处理一个 System Design 面试题
- System Design Interviews:评估维度与题目地图
- System Design 面试题(含解答),从 Pastebin 开始
- 面向对象设计面试题(含解答)
- 真实架构案例与公司工程博客
想先完整练一遍面试节奏,可以打开 System Design Lab 里的通知投递架构:一个产品事件要变成邮件、推送、短信和站内通知,既要尊重用户的退订偏好,又要能重试而且不重复发送。先预测答案,再看通知记录在哪个组件里产生、沿着哪条路径发出,注入一次 relay 崩溃看它能波及多远,最后用图上的证据讲出你的选择。原来这一章末尾的通知系统模拟面试,现在就在这个 Lab 里做。
手册结构:每个模块读完能回答什么
| 模块 | 代表章节 | 读完应该能回答 |
|---|---|---|
| Foundations | Networking Essentials、Storage | 一个请求经过哪些网络层;块存储、文件存储、对象存储分别适合什么 |
| Core Concepts | Performance 与 Scalability、CAP、Availability Patterns | 「几个 9」对应每月多少停机时间;网络分区时系统该拒绝请求还是返回旧数据 |
| Infrastructure | DNS、CDN、Load Balancer | 用户请求怎么被导到离他最近、最健康的机器 |
| Database Design | SQL 还是 NoSQL、Indexes、Replication、Sharding | 按访问路径选存储;读扛不住先加什么,写扛不住再做什么 |
| Caching & Async | Caching、Cache 架构、Async Patterns | 缓存由谁填、谁失效;哪些工作可以挪出请求路径 |
| Communication | TCP 与 UDP、REST、GraphQL 与 gRPC、Long polling、WebSockets 与 SSE | 服务之间、客户端和服务端之间用什么协议,为什么 |
| Architecture Patterns | Message Queues、Monoliths 与 Microservices、API Gateway | 什么时候拆服务;消息至少一次投递时怎样不重复处理 |
| Reliability & Operations | Rate Limiting、Circuit Breaker、SLA / SLO / SLI | 下游变慢时怎样不被拖垮;可用性目标怎么量化 |
| Interview Preparation | 如何处理 System Design 面试题 | 45 分钟里每一步产出什么 |
| Case Studies | URL Shortener、Twitter、WhatsApp、Uber、Netflix | 把前面的概念组合成一个完整方案 |
| OOD | Hash Map、LRU Cache | 类和接口怎么划分,数据结构怎么选 |
| AI Engineering | RAG 架构、Agent Tool Execution、AI Evaluation Pipeline | LLM 应用里状态归谁、工具调用和评估怎么设计 |
学习指引
基于你面试的 timeline(短/中/长)来复习推荐主题。

Q:面试需要掌握所有知识点吗?
A:不需要。如果只是准备面试,不必掌握全部。
面试会问到什么取决于:
- 你的 experience
- 技术背景
- 面试的职位
- 面试的公司
- 运气
有经验的候选人会被期待了解更多 System Design 主题。架构师或 team lead 需要更深入的 knowledge。顶级公司通常会有一次或多次 System Design 面试。
面试会比较 broad,然后在几个领域深入。基于 timeline、experience、role 和 company,调整复习策略:
- 短期 - 以 System Design topic breadth 为目标,通过做一些题来练习。
- 中期 - 以 breadth + 初级 depth 为目标,通过做很多题来练习。
- 长期 - 以 breadth + 高级 depth 为目标,通过做大部分题来练习。
| 短期 | 中期 | 长期 | |
|---|---|---|---|
| 阅读 System Design 主题(见上面的模块表)以获得对系统如何工作的 broad understanding | :+1: | :+1: | :+1: |
| 阅读一些你要面试的公司工程博客文章(真实架构案例里有整理) | :+1: | :+1: | :+1: |
| 阅读 真实架构 | :+1: | :+1: | :+1: |
| 复习 如何处理一个 System Design 面试题 | :+1: | :+1: | :+1: |
| 完成 System Design 面试题和解答 | 一些 | 很多 | 大部分 |
| 完成 面向对象设计面试题和解答 | 一些 | 很多 | 大部分 |
| 复习 其它 System Design 面试题 | 一些 | 很多 | 大部分 |
把「一些 / 很多 / 大部分」换成具体章节
下面是一个参考排法,按手册现有章节给出,时间长短按你的情况调整:
短期(例如面试在两周内):先保证每个概念都能用一句话说清、能说出一个数字。
- 如何处理 System Design 面试题:记住做题顺序和估算常数,一天 86400 秒约 10^5。
- 核心概念各读一遍:Performance 与 Scalability、Latency 与 Throughput、CAP、Caching、Load Balancer、Database Sharding、Message Queues。
- 做两道题:URL Shortener(读多写少、缓存、ID 生成)和 Twitter(扇出)。
- 背一张 延迟数字与 2 的次方速查。
中期(例如一到两个月):在短期的基础上,每个主题读到「怎么选 + 故障表」这一层。
- 数据库全模块,重点是 Indexes、Transactions、Database Replication、Consistent Hashing。
- Cache 架构、Rate Limiting、Circuit Breaker、SLA / SLO / SLI。
- 加做 WhatsApp(长连接、离线投递)、Uber(地理索引、并发派单)、Netflix(CDN、转码)、Web Crawler。
- 每做完一题,对照 System Design Interviews 里的追问清单自查。
长期(例如三个月以上,或面资深 / 架构岗):读到机制和一手证据这一层,能在白板上讲清一个组件内部怎么工作。
- 各「架构」章节的四种拓扑对比,并打开对应的互动 Lab 注入故障:Multi-region、Distributed Transactions、Stream Processing、聊天消息架构、通知投递架构。
- 面 AI 相关岗位时读 AI Engineering 模块,例如 RAG 架构、Durable Agent 执行、Agent Tool Execution、AI Evaluation Pipeline。
- 读目标公司的工程博客,把它的公开做法和手册里的通用设计对比:哪一步它做了不同的取舍、为什么。
读的时候怎么检验自己
每读完一章,合上页面回答三件事:这个组件的状态归谁;它在什么负载或故障下先出问题,用户看到什么;换一个方案代价是什么。三件事都能带一个数字说出来,这一章就算读到了面试需要的深度。