System Design Lab
从学习路线进入,按知识手册建立基础,再用真实架构案例和专项题目完成面试输出训练。
Foundations
- Networking Essentials
System design 面试必备的 networking 基础
- IP
IP 地址在系统设计里的三个实际问题:CIDR 怎么切子网、私网地址怎么经 NAT 出公网、VPC 子网为什么经常不够用。含 RFC 1918 私网段、AWS 每子网保留 5 个地址、NAT 网关 55,000 并发连接上限、公网 IPv4 计费和 IPv6 的算例与翻车表。
- OSI Model
OSI 七层在系统设计面试里真正用到的地方:L4 和 L7 负载均衡各能看到什么、能做什么;按层排障的命令(ping、nc、openssl s_client、curl);OSI 与 TCP/IP 四层的对应和 TLS 放哪层的争议。含 Nginx stream 与 http 两种代理配置、MTU/MSS 数字和翻车表。
System Design Core Concepts
- Latency 与 Throughput
Latency 看单个请求多久完成,throughput 看单位时间完成多少。用 p50/p99 分布而不是平均值描述 latency,用 Little's law 把并发、吞吐和延迟连成一个式子,再讲 batch、排队、fan-out 怎么让两者此消彼长,附算例、翻车表和面试答法。
- CAP 理论
CAP 讲的是网络分区那一刻的取舍:被切开的少数派一侧,是拒绝请求保证不分叉(CP),还是继续服务、接受读到旧值和写冲突(AP)。讲清 Gilbert–Lynch 的严格定义、为什么单机 PostgreSQL 不叫 CA、etcd / MongoDB / Cassandra 分区时各自发生什么,以及面试答法。
- availability模式
Availability 怎么算、怎么提高:几个 9 对应多少停机时间,串联与并联公式及其独立性前提,一条结账链路的逐项算例;active-passive 与 active-active 的切换过程,健康检查、DNS、数据库故障切换各花多少秒(ALB、Route 53、RDS Multi-AZ、Patroni 的真实参数),脑裂与 fencing,常见翻车和面试答法。
System Design Infrastructure
- 应用层设计
把 Web 层、应用层(平台层)和后台 worker 拆开:每层各自扩缩什么指标、状态放在哪、怎么做健康检查和优雅下线。含 Kubernetes readiness 探针与 HPA 公式、SQS visibility timeout 默认值、按层扩容算例、翻车表和面试答法。注意本章讲的是服务架构里的应用层,不是 OSI 第 7 层。
- 大文件上传:API 中转、预签名直传与分片上传
比较经 API 中转、S3 预签名 PUT 直传与预签名分片上传三种拓扑:文件字节走哪条路、谁签名、S3 验证什么,以及过期签名、header 不匹配和 CORS 这些真实故障怎么恢复。
Database Design
- database概述
Relational vs NoSQL 与选型要点
- SQL databases
关系型数据库在系统设计里真正替你做的三件事:用约束守住数据、用 join 和 materialized view 回答没预先设计过的查询、用连接和副本扛住读。讲清外键索引在 PostgreSQL 与 InnoDB 的差别、REFRESH MATERIALIZED VIEW CONCURRENTLY 的前提、N+1 查询的算例和四种修法、max_connections 与连接池,以及面试答法。
- NoSQL databases
NoSQL 建模从访问模式出发:先列出要回答的查询,再推出 partition key、sort key 和二级索引。用 DynamoDB 单表设计走一遍订单系统,讲清 400 KB item 上限、每分区 3,000 RCU / 1,000 WCU、Query 1 MB 分页、filter 不省容量;再逐类说明 document、key-value、graph、time-series、wide-column、multi-model 各自答不了什么查询,附面试答法。
- Database Sharding:行按什么切、查询怎么找到它、搬数据和热 key 怎么办
比较 Range Sharding with Auto Split、Hash Slots、Directory by Tenant 与 Write Sharding of Hot Keys 四种分片拓扑:哪个值决定行落在哪个 shard、请求怎么找到那个 shard、加减 shard 时数据怎么搬、一个 key 或一段区间变热时会发生什么、路由的真相归谁,以及一次打错 shard 或一次广播能波及多远、怎么收住。
- SQL 调优
SQL 调优按三步走:先用 slow query log、pg_stat_statements、performance_schema 找出总耗时最高的语句,再用 EXPLAIN ANALYZE 看它慢在哪,最后改写、加索引或调内存并复测。讲清深分页 OFFSET 改 keyset 的算例、MySQL 行构造器比较用不全索引的坑、work_mem 与 buffer pool 的文档建议值、已删除的 query cache,以及面试答法。
- NoSQL database
NoSQL 类型与特性
- SQL 还是 NoSQL
选数据库不是在 SQL 和 NoSQL 之间二选一,而是按每类数据的主访问路径和不能拆开的约束,给它指定一个 canonical owner。比较关系型、key-value、document、wide-column、graph、time-series 六种模型的状态归属、扩展单位、命名故障和恢复方式,附电商平台的完整落位、算例和面试答法。
- Normalization vs Denormalization
正则化与反正则化
- ACID vs BASE
ACID 四个字母各由数据库里的哪个机制兑现:atomicity 靠日志回滚、consistency 靠约束、durability 靠 WAL 刷盘,以及 PostgreSQL synchronous_commit、InnoDB innodb_flush_log_at_trx_commit、Redis appendfsync、MongoDB write concern 分别让你丢多少数据。BASE 系统怎么用幂等和补偿收敛,附丢数据算例和面试答法。
Caching & Async
- cache策略
cache层级与更新策略概览
- Batch vs Stream Processing
批处理与流处理怎么选:有界与无界输入、事件时间与处理时间、窗口与 watermark、迟到数据、重放和回填、micro-batch,以及 Lambda 与 Kappa 两种混合做法;附一个交易风控加日报的算例、翻车表和面试答法。
- 缓存架构:谁来填、谁来失效
比较 Cache-aside、应用托管 Write-through、Write-behind 与 CDC 驱动失效四种缓存拓扑:数据由谁放进缓存、写在什么时候算成功、旧值由谁清掉,以及每种架构的故障与恢复。
- 流处理架构:谁读哪个分区、状态放哪、哪个时钟说窗口完整、崩溃后从哪重放
比较 Stateless Consumer Group、Keyed State with Changelog、Event-time Windows with Checkpoints 与 Retained Shard Log with Independent Consumers 四种流处理拓扑:并行的单位是什么、处理进度记在哪、每个 key 的状态放在哪并怎么重建、按哪个时钟判断窗口完整以及迟到事件去哪、崩溃后从哪里重放、状态归谁,以及一次 worker 崩溃或一个卡住的 watermark 能波及多远、怎么收住。
Communication
- TCP 与 UDP
TCP 和 UDP 怎么选:三次握手和 TLS 各占几个 RTT、丢包重传为什么会让延迟跳到秒级、TIME_WAIT 和临时端口耗尽、队头阻塞,以及 QUIC / HTTP/3 如何在 UDP 上重做可靠传输。带跨洲 RTT 算例、翻车表和面试答法。
- RPC 与 REST
RPC 与 REST 的设计与对比
- REST / GraphQL / gRPC
API 风格对比
Architecture Patterns
- Message Queues
Message Queue 怎么分发工作、怎么保证不丢不重:visibility timeout 与 ack 的时序、competing consumers、重投次数与死信队列、顺序与去重,配 SQS、RabbitMQ、Kafka 的真实默认值,外加一个邮件发送队列的算例、翻车表和面试答法。
- API 组合架构:多个服务的数据该在哪里拼、谁拥有拼的代码、一个服务慢了客户端拿到什么
比较 Gateway Aggregation、Backend for Frontend、GraphQL Federation 与 CQRS Read View 四种组合拓扑:合并发生在哪、谁拥有这段代码因此改屏幕时谁被卡住、某个服务超时时客户端得到失败、部分答案还是过期答案、每个请求付一次合并还是视图提前付、状态归谁,以及一路超时或一个丢失的事件能波及多远、怎么收住。
Reliability & Operations
- 多区域架构:扛住一个可用区还是整个区域、写落在哪才算数、谁来切流量、能丢多少
比较 Single-region Multi-zone、Active-passive with Warm Standby、Active-active Read Local / Write Global 与 Active-active Write Local 四种区域拓扑:不用人干预能扛住什么故障、一条写要落到哪才算提交、第二个区域会不会落后、谁来切流量、客户端在死掉的区域上停留多久、远方用户读写是本地还是跨越世界、状态归谁,以及一次主区域故障或一份过期的 DNS 答案能波及多远、怎么收住。
- 注册与开户架构:创建时证明了什么、哪条记录是账户、第二种登录方式怎么挂上去、谁能替用户开户销户
比较 Password with Verified Email、Passkey Registration、Federated Identity with Account Linking 与 Directory Provisioning with Invitations 四种注册与开户拓扑:账户创建时证明了什么、哪条记录是账户而哪些只是登录方式、第二种方式怎么挂到已有账户上而不让同邮箱的人接管、除了本人谁能建、停用和删除账户、状态归谁,以及一句泄露存在性的回复或一次按邮箱的自动合并能波及多远、怎么收住。
System Design Interview Preparation
- System Design 入门
System Design Handbook 的导读:这本手册怎么组织、每个模块读完应该能回答什么问题、按面试时间线(短期 / 中期 / 长期)分别读哪些章节,以及和「如何处理 System Design 面试题」「System Design Interviews」两章的分工。
System Design Case Studies
- 聊天消息架构:连接落在哪、消息怎么按顺序到每台设备、人不在线时存在哪、怎么叫醒
比较 Gateways with Pub/Sub Fan-out、Per-conversation Log with Cursor Sync、Per-device Inbox Fan-out on Write 与 Presence-routed Delivery with Store-and-forward Push 四种聊天拓扑:连接落在哪个网关、消息怎么找到另一台机器上的收件人、会话的持久记录是什么、cursor 归谁、扇出发生在写入时还是读取时、离线设备怎么知道有消息在等、状态归谁,以及一次网关重启或一份过期的在线状态能波及多远、怎么收住。
- 通知投递架构:记录在哪出生、谁决定渠道、攒不攒着发、退信和投诉改变什么
比较 Transactional Outbox with Channel Workers、Preference-gated Service with Per-user Inbox、Digest with Scheduled Flush 与 Provider-tracked Delivery with Feedback Loop 四种通知拓扑:通知记录在哪里出生、会不会在业务写入和发送之间丢、谁决定渠道、决定存在哪、事件一条一发还是攒成一条、供应商的退信、投诉、过期或退订改变下一次发送的什么、状态归谁,以及一次 relay 崩溃或一个处理错的回调能波及多远、怎么收住。
AI Engineering
- 六类 RAG 系统架构
比较 Naive、Advanced、GraphRAG、Agentic 四种可互动的 RAG 拓扑,以及 Modular 与 Multimodal 两个家族:检索路径怎么走、证据存在哪个节点、谁决定 prompt 里放什么、每种架构最常在哪里出错。
- Agent Orchestration:五种协作架构
比较 Sequential、Concurrent、Group Chat、Handoff 与 Magentic 五种多 Agent 编排:谁决定下一步、状态存在哪个节点、结果怎样收敛、一个 Agent 出错波及多远,以及每种架构的故障与恢复。
- Agent Tool Execution:四种执行边界
比较模型直连工具、Tool Gateway、Sandbox Worker 与 Human Approval Queue 四种执行架构:谁验证参数、谁持有 credential、动作在哪里执行、怎样避免同一个副作用做两次、批准怎样和最终参数绑定,以及每种边界失守时用户看到什么、怎么恢复。
- Shared Memory:四种 Agent 写入架构
比较按 Key 单写者、乐观多写者 + CAS、事件日志 + 物化视图与 CRDT 复制记忆的拓扑、写入权、一致性与故障边界。
- Model Routing 与 Fallback 架构
比较 Static Alias、Policy Router、Quality Cascade 与 Race / Ensemble 四种模型路由拓扑:选模型的决定在哪个节点做、读的是什么状态、什么时候允许换模型、选错之后波及多远。
- AI Evaluation Pipeline:四种评估闭环
比较离线回归、Shadow、在线实验与 Production Feedback 四种 evaluation topology:每种回答什么问题、要多少样本才看得出差异(带误差范围的算例)、LLM judge 的已知偏差怎么校准、版本和 join key 怎么记,以及回归门禁、影子流量和用户反馈各自怎样出错、怎么恢复。
- Durable Agent:长任务执行架构
比较内存循环、Checkpointed Graph、Queue Workers 与 Durable Workflow 四种长任务执行拓扑:进度存在哪个节点、故障后从哪个单位恢复、副作用怎样避免做两次、等人批准时进程要不要活着。
- ACL-Aware RAG:无权读的 chunk 在哪一步被拦下
比较 ACL in the Index、Search then Check、Tenant Namespace 与 Policy-compiled Filter 四种带权限的 RAG 拓扑:权限判断发生在搜索前还是搜索后、读的是哪份状态、这份状态有多新,以及判断错了会泄露多远、怎么收住。
- Agent 身份与委托授权:Agent 调工具时拿的是谁的身份
比较 Shared Service Credential、User-delegated Token、Short-lived Capability 与 Approval-scoped Grant 四种 Agent 身份拓扑:凭证由谁签发、写的是谁替谁、有多窄多短、人有没有在执行前看过这一笔,以及凭证用错时事故有多大、怎么收住。
- Agent 记忆生命周期:记住的存在哪、何时可见、怎么忘掉
比较 Session Transcript、Background Consolidation、Agent-managed Memory Files 与 Governed Lifecycle 四种 Agent 记忆拓扑:记忆由谁写、存在哪个节点、新记忆什么时候对下一轮或下一个会话可见,以及记错、记漏、删不干净时波及多远、怎么收住。
- AI Gateway 与 Provider 抽象:策略和配额该放在哪一层
比较 In-app Provider SDK、Central AI Gateway、Federated Gateways 与 Provider-managed Aggregator 四种拓扑:格式翻译和策略在哪个节点执行、凭证和配额归谁所有、一个组件挂了波及多少消费者,以及配错或选错 provider 时怎么收住。
- MCP 工具平台:server 放在哪、谁来管每一次调用
比较 Embedded stdio Server、Remote Stateless Server、Gateway-managed Server 与 Per-tool Authorised Server 四种 MCP 拓扑:server 跑在哪、服务几个客户端、认证和按工具的授权在哪个节点做、状态归谁,以及一条被注入或被劫持的调用能碰到多远、怎么收住。
- Agent 沙箱执行:代码、shell、浏览器和桌面动作该关在哪一层
比较 Policy-sandboxed Local Process、Hardened Container per Task、MicroVM Ephemeral Workspace 与 Computer-use VM 四种沙箱拓扑:Agent 的动作在哪里执行、哪一层边界在拦、网络能到哪、任务结束后什么还留着、状态归谁,以及一条被注入的命令或一张被投毒的截图能碰到多远、怎么收住。
- 代理间协作架构:控制权最后归谁、上下文共不共享、同步还是要扛得住断线
比较 In-process Handoff、Agent-as-tool Delegation、Shared Queue/Blackboard 与 Federated A2A 四种代理间协作拓扑:控制权转移之后归谁、两个代理共不共享上下文和记忆、交换是同步的还是要扛得住断线、调用前怎么知道对方能做什么,以及转错人、专家答不全、写入没幂等、往已终态任务发消息这几种情况能波及多远、怎么收住。
Reference
- Next Steps
学习路径建议
- References
参考资料
- System Design速查表
2 的次方表与latency数速查
- 真实架构案例
真实架构、公司架构与工程博客