System Design Lab
从学习路线进入,按知识手册建立基础,再用真实架构案例和专项题目完成面试输出训练。
Architecture Inventories
- Shared Memory:三种 Agent 写入架构
比较 direct multi-writer、deterministic reducer 与 delegated memory curator 的写入权、冲突点和故障边界。
System Design Interview Preparation
- System Design 入门
System Design 学习目标与学习指引
- 如何处理 System Design 面试题
System Design 面试四步法与 estimation 思路
Foundations
- Networking Essentials
System design 面试必备的 networking 基础
- IP
IP 基础、版本与类型
- OSI Model
OSI 七层模型与作用
- Proxy vs Reverse Proxy
Forward Proxy 与 Reverse Proxy 的区别与用法
- Checksums
用 checksum 验证数据完整性
- Clustering
Cluster 的类型与配置
- Storage
常见 storage 类型与 RAID
System Design Core Concepts
- performance与scalability
理解performance与scalability的区别与权衡
- Latency 与 Throughput
理解 latency/throughput 的取舍
- CAP 理论
CAP 理论与 CP / AP 的权衡
- Consistency 模式
弱 consistency、最终 consistency 与强 consistency
- availability模式
故障切换与复制的availability策略
System Design Infrastructure
- 域名系统(DNS)
DNS 基础与工作方式
- 内容分发网络(CDN)
CDN 推送与拉取的设计与取舍
- load balancer
四层/七层load balancing与扩展方式
- reverse proxy
reverse proxy的作用与模式
- 应用层设计
microservices与service discovery的应用层设计思路
Database Design
- database概述
Relational vs NoSQL 与选型要点
- SQL databases
SQL database 特性与场景
- NoSQL databases
NoSQL 类型与场景
- database复制
主从复制与主主复制
- database分片
联合与分片的database拆分策略
- SQL 调优
SQL 调优与索引策略
- NoSQL database
NoSQL 类型与特性
- SQL 还是 NoSQL
选择 SQL / NoSQL 的指南与权衡
- Indexes
Index 的作用与 trade-off
- Normalization vs Denormalization
正则化与反正则化
- ACID vs BASE
一致性模型对比
- PACELC Theorem
CAP 的扩展:latency vs consistency
- Transactions
事务的基本概念与状态
- Distributed Transactions
分布式事务的挑战
- Consistent Hashing
减少 rehash 成本的分片策略
- Database Federation
按业务拆分数据库
Caching & Async
- cache策略
cache层级与更新策略概览
- Cache 模式详解
Cache-aside、Write-through、Write-back 模式
- 异步处理模式
Message Queue、Task Queue 与 Back Pressure
- Batch vs Stream Processing
批处理与流式处理的取舍
Communication
- TCP 与 UDP
传输层协议对比
- RPC 与 REST
RPC 与 REST 的设计与对比
- REST / GraphQL / gRPC
API 风格对比
- Long polling / WebSockets / SSE
实时通信方式
- System Security 基础
System Security 的核心概念与常见实践
Architecture Patterns
- N-tier architecture
多层架构
- Message Brokers
消息代理的作用
- Message Queues
Message Queue 的场景
- Publish-Subscribe
Pub/Sub 模式
- Enterprise Service Bus (ESB)
企业级服务总线
- Monoliths vs Microservices
单体与微服务对比
- Stateful vs Stateless
有状态与无状态架构的取舍
- Event-Driven Architecture (EDA)
事件驱动架构
- Event Sourcing
事件溯源
- CQRS
读写分离模式
- API Gateway
统一 API 入口
Reliability & Operations
- Geohashing and Quadtrees
Geohash 与 Quadtree 基础
- Circuit breaker
熔断器模式
- Rate Limiting
限流策略
- Service Discovery
Service discovery 与注册发现
- SLA / SLO / SLI
可靠性指标
- Disaster Recovery
灾难恢复策略
- VMs and Containers
VM 与 container 对比
- OAuth 2.0 and OIDC
授权与身份层
- Single Sign-On (SSO)
统一登录
- SSL / TLS / mTLS
传输加密与双向认证
System Design Case Studies
- System Design Interviews
面试流程与思路
- 设计 Pastebin/Bitly
Pastebin/Bitly 系统设计完整方案
- Design URL Shortener
case study: URL shortener
- 设计 Twitter Timeline
Twitter 时间线与搜索System Design
- Design Twitter (course)
case study: Twitter
- 设计 Query Cache(Web 搜索缓存)
为最近查询结果设计 key-value cache
- 设计网页爬虫
Web Crawler 系统设计
- 设计 Mint.com
Mint.com System Design
- Design WhatsApp
case study: WhatsApp
- 设计社交网络数据结构
社交网络数据结构与关系设计
- 设计 Key-Value 存储
Key-Value 存储 System Design
- 设计 Amazon 销售排名
Amazon 销售排名 System Design
- AWS 百万用户系统
AWS 百万用户级 System Design
- Design Netflix
case study: Netflix
- Design Uber
case study: Uber
OOD Interview Questions
- 设计 HashMap
HashMap 面向对象设计示例
- 设计 LRU cache
LRU cache面向对象设计示例
- 设计停车场系统
停车场系统面向对象设计示例
- 设计 Call Center
Call Center 的面向对象设计示例
- 设计 Deck of Cards
Deck of Cards 的面向对象设计示例
- 设计 Online Chat
Online Chat 的面向对象设计示例
Reference
- Next Steps
学习路径建议
- References
参考资料
- System Design速查表
2 的次方表与latency数速查
- 真实架构案例
真实架构、公司架构与工程博客