System Design 入门

System Design Handbook 的导读:这本手册怎么组织、每个模块读完应该能回答什么问题、按面试时间线(短期 / 中期 / 长期)分别读哪些章节,以及和「如何处理 System Design 面试题」「System Design Interviews」两章的分工。

学习如何设计大型系统。

为 System Design 面试做准备。

Interview Handbook

面试全流程准备指南

结构化准备简历、行为面与技术面,快速补齐短板。

进入面试手册

这一章是整本手册的导读,只回答两个问题:这本手册里有什么、按什么顺序读;离面试还有多久,就该读到哪一层。 面试现场怎么一步步答题见 如何处理 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 Lab 里的通知投递架构:一个产品事件要变成邮件、推送、短信和站内通知,既要尊重用户的退订偏好,又要能重试而且不重复发送。先预测答案,再看通知记录在哪个组件里产生、沿着哪条路径发出,注入一次 relay 崩溃看它能波及多远,最后用图上的证据讲出你的选择。原来这一章末尾的通知系统模拟面试,现在就在这个 Lab 里做。

手册结构:每个模块读完能回答什么

模块代表章节读完应该能回答
FoundationsNetworking Essentials、Storage一个请求经过哪些网络层;块存储、文件存储、对象存储分别适合什么
Core ConceptsPerformance 与 Scalability、CAP、Availability Patterns「几个 9」对应每月多少停机时间;网络分区时系统该拒绝请求还是返回旧数据
InfrastructureDNS、CDN、Load Balancer用户请求怎么被导到离他最近、最健康的机器
Database DesignSQL 还是 NoSQL、Indexes、Replication、Sharding按访问路径选存储;读扛不住先加什么,写扛不住再做什么
Caching & AsyncCaching、Cache 架构、Async Patterns缓存由谁填、谁失效;哪些工作可以挪出请求路径
CommunicationTCP 与 UDP、REST、GraphQL 与 gRPC、Long polling、WebSockets 与 SSE服务之间、客户端和服务端之间用什么协议,为什么
Architecture PatternsMessage Queues、Monoliths 与 Microservices、API Gateway什么时候拆服务;消息至少一次投递时怎样不重复处理
Reliability & OperationsRate Limiting、Circuit Breaker、SLA / SLO / SLI下游变慢时怎样不被拖垮;可用性目标怎么量化
Interview Preparation如何处理 System Design 面试题45 分钟里每一步产出什么
Case StudiesURL Shortener、Twitter、WhatsApp、Uber、Netflix把前面的概念组合成一个完整方案
OODHash Map、LRU Cache类和接口怎么划分,数据结构怎么选
AI EngineeringRAG 架构、Agent Tool Execution、AI Evaluation PipelineLLM 应用里状态归谁、工具调用和评估怎么设计

学习指引

基于你面试的 timeline(短/中/长)来复习推荐主题。

Imgur

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 面试题一些很多大部分

把「一些 / 很多 / 大部分」换成具体章节

下面是一个参考排法,按手册现有章节给出,时间长短按你的情况调整:

短期(例如面试在两周内):先保证每个概念都能用一句话说清、能说出一个数字。

  1. 如何处理 System Design 面试题:记住做题顺序和估算常数,一天 86400 秒约 10^5。
  2. 核心概念各读一遍:Performance 与 Scalability、Latency 与 Throughput、CAP、Caching、Load Balancer、Database Sharding、Message Queues。
  3. 做两道题:URL Shortener(读多写少、缓存、ID 生成)和 Twitter(扇出)。
  4. 背一张 延迟数字与 2 的次方速查。

中期(例如一到两个月):在短期的基础上,每个主题读到「怎么选 + 故障表」这一层。

  1. 数据库全模块,重点是 Indexes、Transactions、Database Replication、Consistent Hashing。
  2. Cache 架构、Rate Limiting、Circuit Breaker、SLA / SLO / SLI。
  3. 加做 WhatsApp(长连接、离线投递)、Uber(地理索引、并发派单)、Netflix(CDN、转码)、Web Crawler。
  4. 每做完一题,对照 System Design Interviews 里的追问清单自查。

长期(例如三个月以上,或面资深 / 架构岗):读到机制和一手证据这一层,能在白板上讲清一个组件内部怎么工作。

  1. 各「架构」章节的四种拓扑对比,并打开对应的互动 Lab 注入故障:Multi-region、Distributed Transactions、Stream Processing、聊天消息架构、通知投递架构。
  2. 面 AI 相关岗位时读 AI Engineering 模块,例如 RAG 架构、Durable Agent 执行、Agent Tool Execution、AI Evaluation Pipeline。
  3. 读目标公司的工程博客,把它的公开做法和手册里的通用设计对比:哪一步它做了不同的取舍、为什么。

读的时候怎么检验自己

每读完一章,合上页面回答三件事:这个组件的状态归谁;它在什么负载或故障下先出问题,用户看到什么;换一个方案代价是什么。三件事都能带一个数字说出来,这一章就算读到了面试需要的深度。