Mindket

System Design Primer 系统设计入门

新上架第 2 版 · 更新于
星标377k

概览

Donne Martin 整理的一套资源,教你设计大规模系统并准备系统设计面试,附带解答示例和 Anki 闪卡。安装说明涵盖阅读方式、本地副本、闪卡包,以及让 Claude Code、Codex 或 Cursor 当学习搭档。

System Design Primer 系统设计入门 是一款 GitHub 上的开源项目,属于教育类,由 Mindket 上架。可免费获取。当前为第 2 版,最近更新于 。按它的 README 从 GitHub 安装。Mindket 的设置说明可在你的 Mindket 账户获取,以 zip 压缩包下载。

速览

用在
  • GitHub:README,带一个链接到各节的目录
  • 本地副本:ZIP 下载或克隆,用任何 Markdown 查看器打开
  • Anki:三套闪卡,README 说很适合在路上用。Anki 官网说电脑版和安卓版 AnkiDroid 免费,iOS 版 AnkiMobile 是官方应用,购买所得用于支持 Anki 的开发
  • 笔记本工具:用来打开六个面向对象设计的笔记本
先运行
git clone https://github.com/donnemartin/system-design-primer.git

平台

Android操作系统
iOS操作系统
Any coding agent编程智能体
Claude Code编程智能体
Codex编程智能体
Cursor代码编辑器

关于

它是什么

System Design Primer 是一套有条理的资源合集,帮你学会设计大规模系统,并准备系统设计面试。它的所有者 Donne Martin 写道,网上散落着大量讲系统设计原理的资源,这个仓库把它们收拢到一处。它是一份很长的 README,旁边带着几个文件夹,不是程序。README 里有各个系统设计主题的摘要,写明各自的优缺点,并说“一切都是权衡”。每一节都链接到更深入的阅读材料。旁边还有练习题的解答,以及三套 Anki 闪卡。

  1. 在学习指南里选好你的时间线
  2. 读各个主题的摘要,从 DNS 到安全
  3. 学会回答面试题的四个步骤
  4. 先自己做一道练习题,再看它的解答
  5. 用 Anki 闪卡复习这些概念

适合谁

想准备系统设计面试的人,以及想弄清大型系统各部分怎么拼在一起的工程师。README 说,系统设计是许多科技公司技术面试流程中的必考环节。它也说你不必把里面的内容全部掌握,应该先广后深,在少数几个领域往深里学。一般来说,经验更多的候选人会被期望懂得更多。

谁在用,怎么用
谁怎么用例子
时间紧的人先求广度,再做一些练习题时间线很短的候选人读主题摘要,回顾四个步骤,再做八道解答题里的几道。
提前规划的人更深入,并做大部分题目时间线很长的人在缓存和数据库上钻得更深,然后做完大部分解答题和笔记本。
刚接触大型系统的人按顺序读“从这里开始”的几步一位开发者先看哈佛的可扩展性讲座,再读可扩展性文章,然后读性能与可扩展性。
学习小组一道题,一份共同的答案小组选定“Design a web crawler”这道题,在白板上走完四个步骤,再打开解答对照。
贡献者改错、加章节或翻译母语是某个还没人开始翻译的语言的人,按 CONTRIBUTING.md 的要求为它开一个 issue。

如果你想要一门完整、线性的课程,就别用它。README 说有些主题仍在开发中,面向对象设计的解答也标成了同样的状态。

用在哪里

只要能打开网页或 Markdown 文件,就能用,闪卡则要在 Anki 里用。

  • GitHub:README,带一个链接到各节的目录
  • 本地副本:ZIP 下载或克隆,用任何 Markdown 查看器打开
  • Anki:三套闪卡,README 说很适合在路上用。Anki 官网说电脑版和安卓版 AnkiDroid 免费,iOS 版 AnkiMobile 是官方应用,购买所得用于支持 Anki 的开发
  • 笔记本工具:用来打开六个面向对象设计的笔记本
  • 翻译:README 链接了日语、简体中文和繁体中文版本

README 没有给任何编程智能体写步骤。Mindket 为 Claude Code、Codex 和 Cursor 写的说明,只是把文件交给智能体去读的普通步骤,并且都这样注明了。

如何设置

点“获取”会把一个装有 Mindket 安装说明的 zip 压缩包存进你的下载文件夹。这份入门读本本身不需要安装,README 也没有给出安装命令。

先准备好这些
需要说明
浏览器在 GitHub 上读 README 和解答
Git只在克隆时需要。README 没有给出克隆命令,所以下面的地址来自 GitHub 对这个仓库的信息
Anki用来学三套闪卡。README 链接了 apps.ankiweb.net
笔记本工具用来打开六个面向对象设计的笔记本,它们是 .ipynb 文件。README 没有点名任何工具
GitHub 账号只在要复刻仓库并提交改动时需要
  1. 读仓库页面上的 README。它在浏览器里文件列表的下面。
  2. 用 Download ZIP 或克隆留一份副本。Download ZIP 是 GitHub 自带的,在 Code 按钮里。下面第一段命令用来克隆仓库。
  3. 把闪卡导入 Anki。安装 Anki,存下一个闪卡文件,然后在 Anki 里选 File,再选 Import,挑中这个文件。
  4. 照 CONTRIBUTING.md 提交改动。也就是复刻、克隆你的复刻、建分支、提交、推送,再发起 pull request。

第一段是 GitHub 报告的这个仓库的克隆地址。第二段是 CONTRIBUTING.md 里的那组命令,去掉了它的 $ 提示符。把 YourLogin 换成你的 GitHub 名字,my-feature 换成分支名,modified_files 换成你改过的文件。CONTRIBUTING.md 说不要在 master 分支上工作。

git clone https://github.com/donnemartin/system-design-primer.git
git clone git@github.com:YourLogin/system-design-primer.git
cd system-design-primer
git checkout -b my-feature
git add modified_files
git commit
git push -u origin my-feature

最后一步在 GitHub 上完成:打开你的复刻页面,点 Pull Request。第二段里的克隆命令用的是 SSH 地址,需要你先在 GitHub 上配好 SSH 密钥(Mindket 的说明,是普通的 Git 用法)。

如何使用

打开 Study guide,选出你的时间线:短、中或长。然后读“System design topics: start here”,它从一场哈佛的可扩展性讲座和一篇可扩展性文章开始。读完主题,就做题目。先自己写好每一步的答案,再打开解答。

README 的四个步骤是:梳理用例、约束和假设,画出高层设计,设计核心组件,然后扩展这个设计。它把面试称为一场由你主导的开放式对话。智能体可以在你主导的时候扮演面试官。

Read "How to approach a system design interview question" in README.md. Then act as the interviewer for "Design a web crawler". Let me lead through the four steps, and do not open solutions/system_design/web_crawler/README.md until I say I am done.

让智能体引用它用到的那一行,这样你能对照页面。README 链接了很多视频和文章,而智能体没法替你看视频。

示例

以第一道题 Design Pastebin.com (or Bit.ly) 为例。先自己写出范围,再打开解答。它把问题限定在六个用例上。用户输入一段文字,得到一个随机生成的链接。用户输入这段文字的网址,查看内容。用户是匿名的。服务记录页面访问统计,删除过期的文本,并保持高可用。

它写明的假设包括:1000 万用户,每月 1000 万次写入,每月 1 亿次读取,读写比为 10:1。接着它沿用同样的四个步骤,最后以补充讨论点收尾,比如 NoSQL、缓存和安全。你把自己的四步答案逐一和它的对照。

新手与专家

新手:系统设计,就是决定一个大型服务的各个部分怎么拼在一起,以及流量增长时会发生什么。你不需要读完全部内容。README 这样说,它的学习指南里也有一条专为此准备的短时间线。

先看哈佛的讲座。它讲纵向扩展、横向扩展、缓存、负载均衡、数据库复制和数据库分区。接着读可扩展性文章,README 链接的是 web.archive.org 上的存档副本,分四部分:克隆、数据库、缓存和异步。

专家:在性能与可扩展性、延迟与吞吐量、可用性与一致性这几组高层权衡之后,README 按主题一个个讲下去。

  • 模式:一致性(弱一致、最终一致、强一致)和可用性(故障切换、复制)
  • 网络:DNS、CDN、负载均衡器和反向代理
  • 服务:应用层、微服务,以及服务之间怎么互相找到对方
  • 数据:关系型数据库、NoSQL,以及怎么在两者之间选
  • 缓存:客户端、CDN、Web 服务器、数据库和应用缓存,配上 cache-aside、write-through、write-behind 和 refresh-ahead
  • 异步与通信:消息队列、任务队列、背压、HTTP、TCP、UDP、RPC 和 REST
  • 安全

附录里有 2 的幂次表、每个程序员都该知道的延迟数字,以及带外部链接的更多面试题。它还有真实世界架构和公司架构的表格,和一份公司工程博客清单。README 的 Under development 清单列出三个主题:用 MapReduce 做分布式计算、一致性哈希和 scatter gather。

注意事项

读这份入门读本不会在你的电脑上运行任何东西。要留意的是它链接到的东西,以及你自己打开的东西。

  • 许可证:CC BY 4.0。LICENSE.txt 写的是“Copyright 2017 Donne Martin”和“Creative Commons Attribution 4.0 International License (CC BY 4.0)”。GitHub 自己的许可证字段写的是“Other”。README 链接到的每篇文章、演讲和论文都有自己的所有者和条款
  • 链接:README 指向很多外部文章、视频和幻灯片,有些是 web.archive.org 的存档副本,不少是纯 http 链接。某个链接在你点开的那天可能已经失效
  • 闪卡:这些闪卡是 Anki 包文件。Anki 的手册说,包里可能带着作者的复习进度信息,Anki 23.10 及以后的版本可以不勾选“Import any learning progress”来去掉它。Mindket 的说明没有打开过这些闪卡
  • 笔记本:LRU 缓存笔记本的一个代码单元以 %%writefile lru_cache.py 开头,保存的输出写着“Overwriting lru_cache.py”。这个文件夹里本来就有仓库自带的 lru_cache.py,所以运行那个单元会覆盖它
  • 图片:Pastebin 和 AWS 扩展这两份解答(Mindket 的说明读过的就是这两份)通过纯 http 从 i.imgur.com 加载图片
  • 对外连接:阅读时会加载 GitHub,以及你点开的链接所在的网站。Git 和 Anki 是你自己的程序,AnkiWeb 的同步是另一个独立服务,这些说明不会去打开它
  • 移除:删掉本地文件夹。复刻会留在你的 GitHub 账号里,直到你在复刻的设置里删除它(Mindket 的说明,是普通的 GitHub 用法)。闪卡要在 Anki 里删除

README 和文件

README

System Design Primer:安装说明

这个工具包里只有安装说明,由 Mindket 编写。入门读本、它的解答、笔记本和闪卡包都留在 Donne Martin 的仓库里:https://github.com/donnemartin/system-design-primer

这些说明不是 Donne Martin 写的,也没有得到他的认可。README 的标题是“The System Design Primer”,它的 Motivation 一节以两行开头:“Learn how to design large-scale systems.”和“Prep for the system design interview.”,意思是:学会设计大规模系统,为系统设计面试做准备。仓库在 GitHub 上的描述又加了一句“Includes Anki flashcards.”,意思是:附带 Anki 闪卡。来源见 https://github.com/donnemartin/system-design-primer/blob/master/README.md 和 GitHub 对仓库的信息 https://api.github.com/repos/donnemartin/system-design-primer

许可证:Creative Commons Attribution 4.0 International(CC BY 4.0)。GitHub 自己的许可证字段写的是“Other”,没有指向任何标准许可证,所以这里的许可证就是 LICENSE.txt 这个文件(https://github.com/donnemartin/system-design-primer/blob/master/LICENSE.txt)。它写着“Copyright 2017 Donne Martin”和“Creative Commons Attribution 4.0 International License (CC BY 4.0)”,并给出地址 http://creativecommons.org/licenses/by/4.0/。README 的 License 一节说的是同一件事。README 链接到的每篇文章、演讲和论文,都有自己的所有者和条款。

它是什么

是一份带闪卡的阅读合集,不是程序。README 按这个顺序包含:

  • Motivation 一节,接着是带三套闪卡的 Anki flashcards 一节
  • Contributing 一节
  • 系统设计主题的 Index,说明是“Summaries of various system design topics, including pros and cons”,意思是各种系统设计主题的摘要,含优缺点,其中“Everything is a trade-off”,意思是一切都是权衡,每一节都链接到更深入的资源
  • 一份 Study guide,有短、中、长三条时间线
  • How to approach a system design interview question,共四个步骤
  • 带解答的系统设计面试题(八道),以及带解答的面向对象设计面试题(六道,标注为“under development”,即开发中)
  • 各个主题本身,从性能与可扩展性一直到安全
  • 一个 Appendix:2 的幂次表、延迟数字、更多系统设计面试题、真实世界架构、公司架构和公司工程博客
  • Under development、Credits、Contact info 和 License

仓库里还有 README 链接的 solutions/ 文件夹、放在 resources/flash_cards/ 里的闪卡包、CONTRIBUTING.md、TRANSLATIONS.md、README 的三个翻译版,以及一个 README 没有提到的 generate-epub.sh 脚本。来源见 README、仓库的文件树,以及各份安装说明里列出的页面。

会安装什么

阅读它,什么都不用装。README 没有给出安装命令。闪卡包需要 Anki 这个程序。面向对象设计的解答是 Jupyter 笔记本文件(.ipynb),要运行它们才需要笔记本工具,读它们不需要。

先准备好这些

  • 阅读:一个浏览器。
  • 想留一份本地副本:Git。README 没有给出克隆命令。GitHub 对仓库的信息报告的克隆地址是 https://github.com/donnemartin/system-design-primer.git。对这个地址运行 git clone 是普通的 Git 用法(Mindket 的说明,不是作者的)。
  • 想学闪卡:Anki,README 链接的是 https://apps.ankiweb.net/
  • 想运行笔记本:一个笔记本工具。这些说明读过的那本笔记本写明用的是 Python 3 内核。README 没有给出运行笔记本的步骤。
  • 想复刻仓库并提交改动:一个 GitHub 账号。CONTRIBUTING.md 从它的 Fork 按钮开始。

各平台的说明

  • setup/read-on-github.md:README、学习指南、四个步骤、解答的位置和翻译版
  • setup/local-copy-and-contribute.md:本地副本、CONTRIBUTING.md 给出的复刻、建分支和发起 pull request 的步骤、翻译规则和 epub 脚本
  • setup/anki-flashcards.md:三套闪卡,以及把它们导入 Anki
  • setup/solutions-and-notebooks.md:八份系统设计解答和六本笔记本
  • setup/coding-agents.md:让 Claude Code、Codex、Cursor 和别的智能体当学习搭档(Mindket 的说明,因为作者没有写任何智能体的用法)

更新或移除

克隆下来的副本是一个 Git 文件夹,想更新它,就在文件夹里运行 git pull(Mindket 的说明,是普通的 Git 用法)。ZIP 副本只是一份快照,要更新就重新下载。想移除它,就删掉这个文件夹。README 没有给出卸载步骤。Anki 把导入的闪卡放在它自己的集合里,所以要在 Anki 里删除闪卡。

对外连接

  • 在 GitHub 上阅读会加载 GitHub。README 的图片是仓库 images/ 文件夹里的文件,只有“Latency numbers visualized”这一张经 GitHub 的 camo.githubusercontent.com 图片代理,从 http://i.imgur.com/k0t1e.png 加载。Pastebin 和 AWS 扩展这两份解答(这些说明读过的就是这两份)通过纯 http 从 i.imgur.com 加载图片。
  • README 链接到很多别的网站:工程博客、幻灯片、论文、视频和 web.archive.org 的存档副本。点开链接就会加载那个网站。README 里有一百多行含有纯 http 链接。
  • Anki 和笔记本工具是你自己的程序,这些说明不会要求它们发送任何东西。Git 在克隆和 git pull 时会连接 GitHub,CONTRIBUTING.md 里的 git push -u origin my-feature 会把你的分支发送到你在 GitHub 上的复刻。

来源

  • README:https://github.com/donnemartin/system-design-primer/blob/master/README.md
  • LICENSE.txt:https://github.com/donnemartin/system-design-primer/blob/master/LICENSE.txt
  • CONTRIBUTING.md:https://github.com/donnemartin/system-design-primer/blob/master/CONTRIBUTING.md
  • TRANSLATIONS.md:https://github.com/donnemartin/system-design-primer/blob/master/TRANSLATIONS.md
  • Pastebin 解答:https://github.com/donnemartin/system-design-primer/blob/master/solutions/system_design/pastebin/README.md
  • AWS 扩展解答:https://github.com/donnemartin/system-design-primer/blob/master/solutions/system_design/scaling_aws/README.md
  • LRU 缓存笔记本:https://github.com/donnemartin/system-design-primer/blob/master/solutions/object_oriented_design/lru_cache/lru_cache.ipynb
  • GitHub 对仓库的信息:https://api.github.com/repos/donnemartin/system-design-primer
  • 仓库文件树:https://api.github.com/repos/donnemartin/system-design-primer/git/trees/master?recursive=1
  • epub 脚本:https://github.com/donnemartin/system-design-primer/blob/master/generate-epub.sh
  • pull request 模板:https://github.com/donnemartin/system-design-primer/blob/master/.github/PULL_REQUEST_TEMPLATE.md
  • Anki 手册,导入:https://docs.ankiweb.net/importing/intro.html 和 https://docs.ankiweb.net/importing/packaged-decks.html
  • Anki:https://apps.ankiweb.net/
文件
README.md  6 KB
setup/anki-flashcards.md  4 KB
setup/coding-agents.md  3 KB
setup/local-copy-and-contribute.md  4 KB
setup/read-on-github.md  4 KB
setup/solutions-and-notebooks.md  5 KB

6 个文件,共 26 KB,以 zip 压缩包下载。

更新内容

  • 第 2 版 · 2026-11-09

    Updated by Mindket to the current version of this kit.

  • 第 1 版 · 2026-11-03

评价

还没有评分

写评价

还没有评价。

大家怎么说

Hacker News、Bluesky、X、Reddit、Facebook 和 YouTube 上提到这个项目的帖子和评论,来自每周一次的搜索和 Trendshift。它们不是 Mindket 写的,也未经核实,点开即可在原帖处阅读。

markhopsAsk HN: Architecture Diagrams for GitHub Readme.md?Does anyone have a recommendation for a tool that can make architecture diagrams (flowcharts) like the one found here? https://github.com/donnemartin/system-design-primer Ideally, I would like the diagrams to be hosted somewhere, instead of attaching them to an Issue as described here:…1 分 · 5 条回复@itsalexzajac.bsky.social7. 𝗧𝗵𝗲 𝗦𝘆𝘀𝘁𝗲𝗺 𝗗𝗲𝘀𝗶𝗴𝗻 𝗣𝗿𝗶𝗺𝗲𝗿 335K+ stars on GitHub. The most community-validated resource for learning system design from scratch. Diagrams, practice problems, real tradeoffs. → github.com/donnemartin...1 赞 · 1 条回复@gippp69$81r/BestGitHubRepos6 GitHub repos that teach you how databases actually work!danebaliaAsk HN: AI Architecture Systems DesignAre there any quality system design resources out there like https://github.com/donnemartin/system-design-primer that cover AI Architectures instead - RAG, intelligent document processing, agent pattern etc.1 分GitHub Trending8. https://github.com/donnemartin/system-design-primer - Python, 138 stars today 9. https://github.com/antirez/ds4 - C, 385 stars today 10. https://github.com/shiyu-coder/Kronos - Python, 217 stars today 11. https://github.com/Panniantong/Agent-Reach - Python, 1052 stars today 12 […]1 赞@Sujay__Raj5 free CS repos: build-your-own-x: rebuild it yourself (558K) https://t.co/QXWbTTH0iO system-design-primer: system design 101 (376K) https://t.co/JUNlDg3GEp developer-roadmap: pick your path (371K) https://t.co/JEuLmY3Xc7 awesome-python: find any Python tool (328K) https://t.co/Bh0pG0TNIq…r/dataengineeringWorth learning system design at junior-mid level, or focus on something else like data modelling?___luigiAsk HN: What are the best resources to crack system design interviews?Hi, I have seen many resources about algorithms and leetcode questions, but as engineers became senior, there is more emphasis on "System Design interviews" and "SW architecture". There are many important components (CAP, Load balancers, DNS, Availability, Consistent Hashing, TCP/IP etc.) in any…1 分Indigo Karasudonnemartin/system-design-primer again. Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.. The failure modes tell you what the docs don't. #systems #ai1 赞@ruyi3699GitHub 上收藏的仓库一抓一大把,可真正点开过的能有几个?说句实在话,这跟囤电子书没啥区别,存下来就当自己已经学过了。📚 能让我反复翻出来看的,兜兜转转也就这 5 个: 1️⃣ public-apis —— 几百个免费 API 按领域分好类,做 demo 时随手一翻就有 https://t.co/zMCUBDciKP 2️⃣ build-your-own-x —— 从零手撸数据库、编译器、Docker,费曼学习法的天花板级实践 https://t.co/FqueFYA8Hz 3️⃣ developer-roadmap ——…___luigiAsk HN: What are the best resources to crack system design interviews?Hi, I have seen many resources about algorithms and leetcode questions, but as engineers became senior, there is more emphasis on "System Design interviews" and "SW architecture". There are many important components (CAP, Load balancers, DNS, Availability, Consistent Hashing, TCP/IP etc.) in any…1 分

搜索日期

Mindket 的更多商品

查看 Mindket 的全部商品

anaksor-ocr

Sokheng · 工具包

这个模型从文档、收据和路牌照片里读取高棉语和英语文字,用一个检测器找文本行,再用识别器读每一行。适合需要在 Python 里做高棉语 OCR 的开发者。

新上架

Qwen2.5-7B-Instruct-GGUF

Qwen · 工具包

Qwen2.5-7B-Instruct 的 GGUF 文件,提供八种量化大小,可通过 llama.cpp 在本地聊天。适合想在自己电脑上用 7.6B 强力模型、又不想搭 Python 环境的人。

新上架

ACE-Step 1.5 XL SFT

ACE-Step · 工具包

用 4B 扩散解码器根据文字生成音乐,50 步并带引导控制,音频质量高于基础版。适合拥有 12 GB 或更多显存 GPU 的创作者。

新上架

The Algorithms Python 算法合集

TheAlgorithms · 工具包

TheAlgorithms 的开源算法与数据结构合集,每一项都用 Python 写成,供学习使用。安装说明涵盖在 GitHub 或文档站点上阅读、克隆或 ZIP、运行文件的 doctest、开发容器,以及让 Claude Code、Codex 或 Cursor 当辅导老师。

新上架226k

Vāgdhenu

prathoshap · 工具包

用一个训练好的声音,以吟诵风格朗读古典梵语诗节,由参考音频决定节奏。适合学习、背诵或需要梵语音频的人。

新上架

Limite 1B - Violetto

paradigma-inc · 工具包

用一个从头训练的 1B 参数模型解决难度很高的数学题,追求高速、大批量的推理。适合在 NVIDIA GPU 上运行数学任务的开发者。

新上架