本仓库包含学习系统设计概念和准备面试的资源。
📌 系统设计关键概念
⚖️ 系统设计权衡
- 15大权衡
- 垂直vs水平扩展
- 有状态vs无状态设计
- 强一致性vs最终一致性
- 读穿vs写穿缓存
- 推送vs拉取架构
- 长轮询vs WebSockets
- REST vs RPC
- 延迟vs吞吐量
- 同步vs异步通信
- 批处理vs流处理
🛠️ 系统设计构建模块
- 数据库类型
- 内容分发网络(CDN)
- 域名系统(DNS)
- 缓存
- 分布式缓存
- 负载均衡
- SQL vs NoSQL
- 数据库索引
- 一致性模式
- 心跳机制
- 断路器
- 幂等性
- 数据库扩展
- 数据复制
- 数据冗余
- 数据库分片
- 数据库架构
- 故障转移
- 代理服务器
- 消息队列
- 校验和
- WebSockets
- 布隆过滤器
- API网关
- 微服务指南
- 分布式锁
🖇️ 系统设计架构模式
✅ 如何回答系统设计面试问题
阅读完整文章
💻 系统设计面试题
简单
- 设计像TinyURL这样的网址缩短服务
- 设计像Pastebin这样的文本存储服务
- 设计排行榜
- 设计内容分发网络(CDN)
- 设计停车场
- 设计自动售货机
- 设计分布式键值存储
- 设计分布式缓存
- 设计分布式作业调度器
- 设计认证系统
- 设计统一支付接口(UPI)
中等
- 设计Instagram
- 设计Tinder
- 设计WhatsApp
- 设计Facebook
- 设计Twitter
- 设计Reddit
- 设计Netflix
- 设计Youtube
- 设计Google搜索
- 设计像Amazon这样的电子商务商店
- 设计Spotify
- 设计TikTok
- 设计Shopify
- 设计Airbnb
- 设计搜索引擎的自动完成功能
- 设计限流器
- 设计像Kafka这样的分布式消息队列
- 设计航班预订系统
- 设计在线代码编辑器
- 设计股票交易系统
- 设计分析平台(指标和日志)
- 设计通知服务
- 设计支付系统
- 设计数字钱包
困难
- 设计像Yelp这样的基于位置的服务
- 设计Uber
- 设计像Doordash这样的食品配送应用
- 设计Google文档
- 设计Google地图
- 设计Zoom
- 设计分布式计数器
- 设计像Dropbox这样的文件共享系统
- 设计像BookMyShow这样的票务预订系统
- 设计分布式网络爬虫
- 设计代码部署系统
- 设计像S3这样的分布式云存储
- 设计分布式锁服务
- 设计Slack
- 设计实时评论
📚 书籍
📺 YouTube频道
- Tech Dummies Narendra L
- Gaurav Sen
- codeKarle
- ByteByteGo
- System Design Interview
- sudoCODE
- Success in Tech
📜 必读工程文章
- Discord如何存储数万亿条消息
- 在Netflix构建视频内搜索
- Canva如何将媒体上传从零扩展到每天5000万次
- Airbnb如何在分布式支付系统中避免重复支付
- Stripe的支付API - 前10年
- Slack的实时消息传递