donnemartin/system-design-primer
学习资源面向系统设计学习与面试准备的大型系统设计资源合集,包含主题索引、面试题解和 Anki 卡片。
项目介绍
这是一个持续更新的系统设计资源合集,面向希望系统学习大规模系统设计的工程师,以及准备系统设计面试的候选人。它解决的问题不是提供某个库或服务,而是把散落在网络上的概念、权衡和练习题整理成有结构的学习路径。
主体是系统设计主题索引,覆盖性能与可扩展性、延迟与吞吐、CAP 定理、一致性与可用性模式、DNS、CDN、负载均衡、数据库、缓存、异步与通信等。每个主题讲清概念、列出优缺点并给出延伸阅读。另一个独立目录提供常见面试题的讨论、示意图和代码,包括 Pastebin/Bit.ly、Twitter 时间线与搜索、网页爬虫、Mint.com、社交网络数据结构、键值存储、Amazon 销售排行以及 AWS 上支撑百万级用户的系统。
快速使用
阅读指南本身不需要安装任何东西。先看学习指南,根据自己的面试时间选择短、中、长三种路线:短路线重在覆盖广度并练习部分题目,长路线要求更深入并完成大多数题目。
一个可行的第一轮流程:
- 读系统设计主题索引,建立术语和权衡概念。
- 看四步面试方法:梳理用例与约束、画高层设计、设计核心组件、最后扩展设计。
- 选一道题,例如设计 Pastebin.com(或 Bit.ly),先自己作答,再对照示例解答。
README 也明确说明不必掌握全部内容,面试考什么取决于经验、岗位、公司和运气,应按自身情况调整路线。
需要记忆时,仓库提供系统设计、系统设计练习和面向对象设计练习三套 Anki 卡片,配合 Anki 使用,可导入后按间隔重复复习。README 还链接到姐妹仓库交互式编程挑战,用于编程面试练习。
使用约束
这些内容是学习材料,不是可集成的框架或服务。部分内容尚不完整:面向对象设计一节标注为开发中,安全一节也说明需要更新。部分解答偏演示性质,不保证达到生产标准;一位做爬虫的 HN 评论者在 2023 年指出,网页爬虫题目的粗略估算把平均页面大小高估了约两个数量级,所设想的抓取前沿在所述规模下也不可行(评论)。
指南的适用性也取决于场景。另一类长期批评是:大多数项目根本用不到 Netflix 级别的架构,一味按大规模设计容易让团队背上昂贵且过度复杂的系统(讨论)。把内容当作面试和学习材料,并自行判断何时真的需要这种规模。
许可与贡献
代码和资源以 CC BY 4.0 发布,作者注明许可是以个人身份而非雇主身份给出。翻译通过 Issue 协调,仓库也接受修正错误、改进章节、新增章节和翻译的拉取请求。
HotRepo 点评
这是一个长期存在的参考项目,而不是快速迭代的代码库。HotRepo 在 2026 年 8 月初的几次日榜快照中记录到每天约 138 到 304 个 Star,2026 年 11 月 7 日至 8 日的 Python 日榜中每天约新增 185 至 192 个 Star,并在这份语言榜上排到第 11 位。站内没有全语言日榜最好名次的记录,因此这些数据不能说明全语言排名。2018 年的 HN 讨论获得 1273 分、185 条评论,2021 年和 2023 年的讨论分别有 170 分和 112 分,这与它作为常被回访的参考资料相符。那些讨论也提供了有用的反面意见:从业者质疑按大规模前提设计是否适合普通项目,使用这份面试材料时值得一并考虑。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。