02-场景设计题
设计题 1:设计一个健康检查系统
要求:监控 1000+ 服务实例的健康状态,支持 HTTP/TCP/自定义脚本检查。
考察点:
- 架构设计:中心化 vs 分布式
- 可扩展性:如何支持更多检查
- 可靠性:检查节点自身故障如何处理
- 告警:如何避免告警风暴
回答框架:
- 每个节点部署 Agent → 上报到中央 Server
- Server 使用时间轮 + 分区存储
- Prometheus + Blackbox Exporter 也是一种实现
设计题 2:设计一个限流系统
要求:支持 QPS 限流,支持多维度(接口/用户/IP),分布式支持。
考察点:
- 算法:令牌桶 / 漏桶 / 滑动窗口
- 存储:Redis + Lua 原子操作
- 降级:限流服务挂了怎么办
设计题 3:设计发布系统
要求:支持灰度发布、回滚、发布暂停,100+ 微服务。
考察点:
- 金丝雀 / 蓝绿发布策略
- 发布窗口和审批流程
- 自动化验证(监控/压测)
- 回滚速度和原子性
设计题 4:监控系统数据存储
要求:每秒 100 万数据点写入,保留 30 天,支持聚合查询。
考察点:
- 时序数据库(Prometheus TSDB / VictoriaMetrics)
- 数据压缩和降采样
- 分片和存储分层
场景模拟:线上故障
面试官:凌晨 2 点收到告警,核心 API 错误率 50%,你怎么办?
回答结构:
1. 确认告警 → 快速看监控面板 (1 min)
2. 判断影响 → 内部/外部用户? 全部/部分? (1 min)
3. 止损优先 → 回滚/切流/限流 (3 min)
4. 宣布事故 → IC 接管,拉人 (2 min)
5. 恢复后 → 根因分析 + 复盘
延伸阅读