System Design

🏗️ 结构化系统设计:从面试到生产

深度系统设计工作流:从需求澄清、容量估算到架构决策与故障演练,帮助工程师在约束下做出明确权衡。

收藏
6.3k
安装
1.3k
版本
1.0.0
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用法

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 秒版本的核心瓶颈总结
  • 真实项目:重点关注数据所有权边界与迁移风险,增量变更优先于推倒重来
  • 持续校准:定期对照"最终审查清单"验证设计决策是否仍然成立

System Design 内容

手动下载zip · 3.8 kB
skill-card.mdtext/markdown
请选择文件