善忘技术夹 Logo
善忘技术夹
架构演进 · 150 阅读

28 章系统设计笔记:帮你补齐从编码到架构的缺失一环

一、算法刷了 500 题,系统设计一问三不知

上个月我模拟面试了一个大厂的系统设计轮。

面试官问了一个相对基础的问题:“设计一个类似 Instagram 的照片共享系统。” 我磕磕绊绊说了五分钟,自己都觉得思路混乱。面试官礼貌地打断了,说”我们可以进入下一个问题”。

我知道怎么用红黑树、怎么用动态规划、怎么优化神经网络。但这些算法知识在系统设计面前基本没用。系统设计考的是另一套东西:怎么拆分服务、怎么选存储方案、怎么处理一致性、怎么在成本和性能之间做权衡。

插图:面试痛点

后来我找到了一份开源笔记,28 个章节,从”怎么从零扩展到百万用户”到”设计证券交易所”,覆盖了系统设计面试的核心场景。

二、这份笔记是什么?

system-design-notes 是一个开源的系统设计学习笔记仓库,GitHub 上已有 15.6k Star

项目地址:https://github.com/liquidslr/system-design-notes

它的内容基于大厂面试必备书《System Design Interview》(Alex Xu 著)的两卷本,提炼出了 28 个核心章节。不是原书的逐字翻译,而是经过提炼和重组的学习笔记。

和原书相比,这份笔记有几个特点:

  • 篇幅更短,重点更突出。原书两卷本加起来很厚,这份笔记提炼了核心内容
  • 结构更清晰,按场景组织,每个章节对应一个面试高频考点
  • 补充了实战工程文档,不仅有理论笔记,还附带了 Discord、Netflix 等顶级技术团队的真实架构文档

三、28 个核心场景,从入门到高阶

28 个章节按难度递进排列,大致可以分为几个层次:

入门基础

Scale From Zero To Millions Of Users:从一台服务器到服务百万用户的演进路径。理解系统设计首先要理解”为什么需要拆分”。

Back-of-the-envelope Estimation:数量级估算。面试时经常被问到”你的系统能支持多少用户""需要多少台服务器”,这部分教你快速做估算。

A Framework For System Design Interviews:系统设计面试的方法论框架。面试时怎么理解需求、怎么设计、怎么沟通,一个可复用的思考框架。

基础组件

Rate Limiter:限流器设计。怎么防止 API 被滥用,令牌桶和漏桶算法的区别。

Consistent Hashing:一致性哈希。分布式缓存和存储的核心技术,解决节点增减时的数据迁移问题。

Key-Value Store:键值存储设计。从单机到分布式,理解 LevelDB、RocksDB、Dynamo 的设计思路。

Unique ID Generator:分布式 ID 生成。Snowflake、UUID、号段模式,面试高频题。

经典系统设计

URL Shortener:短链接服务。最经典的入门系统设计题,麻雀虽小五脏俱全。

Web Crawler:网页爬虫。怎么高效地抓取和索引互联网内容。

Notification System:通知系统。邮件、短信、App 推送,如何保证消息可靠送达。

News Feed System:新闻信息流。Twitter、微博的信息流怎么设计,推模式还是拉模式?

Chat System:即时通讯。WhatsApp、微信的架构设计,在线状态、消息投递、群聊。

高级系统

YouTube:视频平台架构。从上传、转码、存储到 CDN 分发,大流量场景的完整设计。

Google Drive:云存储。文件同步、冲突解决、权限管理。

Stock Exchange:证券交易所。低延迟、高并发、一致性的极端场景。

S3-like Object Storage:对象存储。理解 S3 的设计哲学,版本控制、生命周期、多区域复制。

其他场景

还包括:Proximity Service(附近的人)、Nearby Friends、Google Maps、Distributed Message Queue、Metrics Monitoring、Ad Click Event Aggregation、Hotel Reservation、Distributed Email Service、Real-time Gaming Leaderboard、Payment System、Digital Wallet 等。

插图:28章地图

四、高阶架构演进:S3 和证券交易所

这份笔记最有价值的部分,不是”怎么设计一个 URL 短链接”,而是高阶系统的架构演进路径

以 S3-like Object Storage 为例,笔记不是简单地告诉你”S3 是个对象存储”,而是从最基础的”怎么存一个文件”开始,逐步演进到版本控制、生命周期管理、多区域复制、一致性模型。每一步为什么要做这个设计,背后有什么 trade-off。

Stock Exchange(证券交易所)的章节更有意思。这个场景对一致性和延迟的要求是矛盾的:你要保证所有用户看到的行情一致,同时又要让下单操作足够快。笔记会带你分析各种方案,订单簿的设计、撮合引擎的并发模型、崩溃恢复机制。

插图:权衡天平

这些案例的共同特点是:没有完美的方案,只有适合特定约束的折中。

五、大厂实战文档

除了笔记本身,这个仓库还附带了一个很实用的部分,顶级技术团队的实战工程文档

具体包括 Discord、Netflix 等公司的真实架构设计文档。这些不是理论推导出来的,是在生产环境中踩过坑、优化过的方案。

Discord 的工程博客写了很多关于实时通讯和通知系统的实战经验,Netflix 的文档覆盖了流媒体传输、推荐系统、混沌工程等话题。把理论笔记和大厂实践对照着看,能帮你建立更扎实的理解。

六、国内开发者的系统设计困境

说句可能得罪人的话:国内开发者群体普遍存在一个现象,算法题极度内卷,系统设计能力严重缺失。

LeetCode 刷 500 题的大有人在,但你问他”怎么设计一个分布式 ID 生成器”,很多人可能只能说”用雪花算法”,说不出为什么用雪花算法、它有什么问题、其他方案对比如何。

这不是个人能力问题,是整个学习路径的问题。算法题有标准答案、有判题系统、有讨论区,学习反馈很明确。系统设计没有标准答案,网上资料散乱不成体系,自学很难建立完整的知识框架。

这份笔记的价值在于帮你快速建立全局观。28 个章节覆盖了系统设计的核心场景,每个章节都是一个完整的设计思路。读完一遍,你至少能知道”系统设计有哪些套路”,遇到具体问题时,知道从哪些角度切入。

但笔记本身不是目的。社区里有一个共识:比起死记硬背笔记,更建议深挖笔记中引用的各厂技术博客。 你会发现,最好的架构从来不是一步到位的完美方案,而是在各种业务约束下不断妥协和权衡的产物。

七、怎么用这份笔记?

不要把它当教科书从头读到尾。

插图:四步学习法

第一步:看目录,建立全局感。 浏览 28 个章节标题,了解系统设计涉及哪些领域。

第二步:挑你感兴趣的章节精读。 比如你做支付相关业务,先读 Payment System 和 Digital Wallet。带着工作中的实际问题去读,理解会深得多。

第三步:对照着画一遍。 读完一个章节,合上书,自己画一遍架构图。画不出来说明没真正理解。

第四步:深挖引用来源。 每个章节都会引用一些真实的技术博客和论文。Discord 怎么做的、Netflix 怎么做的、Google 怎么做的,这些原始材料比笔记本身更有价值。

八、写在最后

system-design-notes 解决的核心问题是:“我想学系统设计,但不知道从哪开始。”

28 个章节、28 个场景、28 套设计思路。读完不能让你立刻成为架构师,但至少能帮你建立系统设计的全局观。你知道一个大规模系统需要考虑哪些问题、有哪些成熟的解决方案、不同的方案之间有什么 trade-off。

如果你也在为系统设计面试发愁,或者工作中开始接触架构设计,这份笔记值得收藏。它不会给你标准答案,系统设计本来就没有标准答案。但它会给你一个思考的框架。


项目信息

  • 项目名称:system-design-notes
  • GitHub:https://github.com/liquidslr/system-design-notes
  • 协议:未明确标注
  • 当前 Star:15.6k+
  • 章节数量:28 章
  • 基础来源:《System Design Interview》by Alex Xu(两卷本)
  • 配套资源:Discord、Netflix 等实战工程文档

互动时间:你准备系统设计面试时,是怎么学的?有没有什么好的学习资源推荐?评论区聊聊。

关注「善忘技术夹」全媒体矩阵

扫描上方宣传海报二维码,第一时间获取最新技术文章、开源项目与免安装小程序体验。

善忘技术夹 微信公众号宣传图
微信公众号 (扫码关注)
善忘技术夹 微信小程序宣传图
微信小程序 (扫码即用)