核心用法
System Design (Deep Workflow) 是一套结构化的系统设计方法论,采用七阶段递进式框架:
1. 需求澄清 — 区分功能性与非功能性需求,明确用户行为、读写比例、延迟目标、一致性要求,并划定非目标防止范围蔓延
2. 容量与SLO草图 — 粗略估算 QPS、存储、带宽,识别潜在瓶颈类别(数据库、网络、扇出、存储)
3. 高层架构 — 绘制分层架构图,并回答"为何不用更简单的单体",考虑 CQRS、异步处理、CDN 等
4. 数据模型与存储 — 根据查询模式选择存储类型(关系型、文档、宽列、图),规划分片、缓存、搜索策略
5. API 与流量模式 — 设计 REST/RPC/GraphQL 接口,处理实时通信、限流、认证、分页
6. 可靠性与故障模式 — 将故障视为常态,设计降级策略:重试、熔断、只读模式、灾备方案
7. 权衡与演进 — 明确 v1 与 v2 路径,使用特性开关、绞杀者模式逐步迭代
显著优点
- 结构化决策:强制在约束条件下显式权衡,避免"先写代码再想架构"
- 面试实战导向:针对系统设计面试优化,提供时间盒策略(广度优先,再深入单点)
- 工程可落地:区分"面试模式"与"真实项目模式",涵盖 RFC、微服务拆分、多区域部署等实际场景
- 反模式警示:强调"恰好一次"神话、热点键、扇出问题、背压等高频陷阱
- 演进思维:拒绝大爆炸重构,主张渐进式系统演化
潜在缺点与局限
- 深度依赖使用者经验:框架提供结构,但关键判断(如分片键选择、一致性级别)仍需领域知识
- 轻量级系统可能过度设计:对小系统建议"轻量运行各阶段",但使用者可能忽视此警告
- 未覆盖特定领域:如嵌入式系统、硬件协同设计、AI 训练 infra 等专用领域需额外补充
- 安全认证缺失:来源报告为占位文本,未执行实际安全扫描
适合人群
- 准备系统设计面试的软件工程师(初级到高级)
- 设计新系统或重大重构的技术负责人、架构师
- 撰写 RFC、进行技术评审的工程师
- 从单体向微服务、单区域向多区域迁移的团队
常规风险
| 风险类别 | 说明 |
|---------|------|
| **过度工程** | 在小规模场景套用完整流程导致不必要的复杂度 |
| **估算偏差** | 粗略容量计算可能因业务特性(如突发流量)严重偏离实际 |
| **一致性误解** | 使用者可能误将"最终一致性"应用于需要强一致的场景 |
| **演进路径执行失败** | 规划 v1→v2 但业务压力导致技术债累积 |
| **安全盲点** | 框架未显式涵盖安全设计(威胁建模、数据加密、审计) |
使用建议
- 面试场景:严格控制时间,先走完全流程再深入单点;准备 60 秒版本的核心瓶颈总结
- 真实项目:重点关注数据所有权边界与迁移风险,增量变更优先于推倒重来
- 持续校准:定期对照"最终审查清单"验证设计决策是否仍然成立