高 进阶
系统设计方法论#
一句话答案#
系统设计五步法:需求分析(功能+非功能)→容量估算(QPS/存储)→架构设计→详细设计→瓶颈与扩展。
核心要点
五步法:
- 需求:功能需求 + 非功能需求(QPS/延迟/可用性)
- 估算:QPS / 存储量 / 带宽
- 架构:画系统架构图(接入层/服务层/数据层)
- 详细设计:核心流程/数据模型/API设计
- 瓶颈:单点故障/性能瓶颈/扩展方案
面试回答(2分钟版)
面试中做系统设计题我一般遵循五步法,口诀是”需估架详扩”。第一步花两三分钟澄清需求,包括功能需求和非功能需求比如QPS目标、延迟要求、可用性等级。第二步做容量估算,根据日活推算读写QPS、存储量和带宽需求,这一步很重要因为它决定了后面的技术选型。第三步画高层架构图,分出接入层、服务层和数据层,把核心组件和数据流画清楚。第四步深入详细设计,围绕核心流程、数据模型和API设计展开,这里要重点讲清楚关键的技术决策和trade-off。第五步讨论瓶颈与扩展,比如单点故障怎么解决、性能瓶颈在哪里、水平扩展和降级方案如何设计。最忌讳的是上来就画架构图,没有需求澄清的设计是空中楼阁。
追问与易错
追问方向:
- “面试中怎么展开?先说什么?”→ 先花 2-3 分钟澄清需求(功能边界+非功能约束+规模量级),再用 DAU 推导 QPS/存储量级,然后画高层架构图,最后深入 1-2 个核心模块的详细设计
- “容量估算怎么做?”→ 公式:平均 QPS = DAU x 人均操作数 / 86400,峰值 QPS = 平均 x 3~5 倍;存储 = 写 QPS x 86400 x 单条大小 x 保留天数;机器数 = 峰值 QPS / 单机能力 x 冗余系数
- “怎么处理追问?”→ 追问通常围绕瓶颈和边界情况展开;回答时先承认问题合理,再给出解决思路(如加缓存/分库分表/降级方案),展示你对 trade-off 的思考而不是背答案
易错点:
- ❌ 上来就画架构图——先花 2-3 分钟澄清需求
- ❌ 背模板答案——面试官会追问细节