Skip to content

系统设计★

高性能与高可用两条主线,面试方法论。

Updated View as Markdown
For humans

系统设计

系统设计面试考的不是背架构图,而是权衡能力:在约束下做取舍。本分类按两条主线组织,覆盖后端面试的高频设计题。

两条主线

性能与可用性, 取舍是设计的核心

  • 高性能:单位时间处理更多请求、响应更快。手段:缓存、异步、池化、水平扩展
  • 高可用:故障时服务不中断。手段:冗余、限流、熔断、降级、重试、容灾

两者经常冲突:追求极致性能(不设限、不重试)会牺牲可用性;过度防御(处处同步、层层重试)会拖慢性能。面试加分点就是主动说出权衡。

面试方法论

  1. 澄清需求:QPS 多少、数据量多大、读多还是写多、一致性要求。先问清楚再设计
  2. 容量估算:从 QPS 和 RT 推导并发数和机器数(见性能指标与压测篇的 Little’s Law)
  3. 分层设计:接入层(LB/CDN)→ 应用层(无状态、可扩展)→ 数据层(缓存/分库分表)
  4. 画图说话:请求链路图、数据流图,边画边讲
  5. 说清取舍:每个方案给代价(一致性 vs 性能、成本 vs 冗余)

高频考点地图

考点 归属 必考指数
缓存设计(分层/更新/穿透击穿雪崩) 高性能 必考
消息队列选型(Kafka vs RabbitMQ) 高性能 必考
水平扩展与负载均衡(L4 vs L7) 高性能 必考
限流(四算法/分布式限流) 高可用 必考
熔断与降级(三态/兜底) 高可用 必考
重试与幂等(退避/唯一键) 高可用 必考
监控三支柱 高可用 高频

面试追问

  1. 系统设计的核心是什么? 权衡:性能与可用性、一致性与成本。先澄清需求再设计
  2. 先问什么问题? QPS、数据量、读写比、一致性要求、可用性目标(几个 9)。需求不清的设计都是空中楼阁
  3. 设计题的通用框架? 需求澄清 → 容量估算 → 分层架构 → 关键路径 → 权衡说明
  4. 高性能和高可用冲突怎么办? 主动说取舍:如限流牺牲部分吞吐换稳定性,重试增加延迟换可靠性
  5. 画图重要吗? 重要。请求链路和数据流图能让面试官跟上思路,边画边讲比干说强
Navigation

Type to search…

↑↓ navigate↵ selectEsc close