posts

系统设计面试:架构原则与经典案例拆解

系统设计面试完整指南,涵盖设计原则(CAP、BASE、SOLID)、经典系统案例(短链、秒杀、IM、Feed流、分布式ID、限流器、缓存、消息队列)、性能优化策略与面试答题框架。

系统设计面试

从单机到分布式,从原理到实战,掌握系统设计面试的答题框架。

面试答题框架(4S 法)

  1. Scenario(场景):明确功能范围、用户量级、读写比例
  2. Service(服务):拆分功能模块,定义接口
  3. Storage(存储):选型数据库、缓存、消息队列
  4. Scale(扩展):应对高并发、大数据量的优化策略

经典案例

系统核心挑战关键技术
URL 短链服务哈希冲突、读写放大哈希 + 发号器 + 缓存
秒杀系统超卖、流量突增缓存预热、队列削峰、乐观锁
即时通讯实时推送、消息顺序WebSocket、消息ID、读扩散
社交 Feed推拉模式、关注关系Timeline、写扩散、缓存
分布式 ID唯一性、趋势递增Snowflake、号段模式
限流器流量控制、公平性令牌桶、滑动窗口、Redis Lua
分布式缓存高可用、一致性Redis Cluster、穿透/击穿/雪崩
消息队列可靠性、顺序性、高吞吐Kafka、幂等性、ACK
搜索引擎相关性排序、实时索引倒排索引、BM25、ES
支付系统精确性、幂等、分布式事务状态机、TCC、本地消息表
推荐系统个性化、实时性、冷启动协同过滤、双塔模型、四阶段漏斗
订票系统库存精确性、座位锁、超卖Redis Lua、分段库存、状态机
协作编辑并发冲突、实时同步、离线CRDT、OT、WebSocket
通知系统多渠道、防打扰、可靠性渠道分发、限流去重、消息队列、幂等重试

已收录案例

高并发场景

  1. URL 短链服务

    • Base62 编码、分布式发号器、Redis 缓存、Bloom Filter 防重复、Lua 原子操作
  2. 秒杀系统

    • Redis Lua 原子库存扣减、令牌桶限流、Kafka 削峰、分布式锁
  3. 高并发限流器

    • 计数器/滑动窗口/漏桶/令牌桶四种算法对比
    • Redis + Lua 分布式限流实现

实时系统

  1. IM 即时通讯

    • WebSocket 网关管理、Snowflake 消息 ID、QoS 投递保证、推拉结合、多端同步
  2. Feed 流系统

    • Push/Pull/Hybrid 模型、Redis Sorted Set 收件箱、Edge Rank 排序、冷数据归档

基础设施

  1. 分布式 ID 生成器

    • UUID → 号段模式 → Snowflake → Leaf 的演进
    • 时钟回拨解决、worker ID 分配策略
  2. 分布式缓存

    • Cache-Aside/Read-Through/Write-Behind 三大模式
    • 缓存穿透(布隆过滤器)、击穿(互斥锁)、雪崩(随机 TTL + 高可用)
    • Redis Cluster 哈希槽分片
  3. 消息队列

    • Kafka 核心原理:Partition、Consumer Group、Offset、零拷贝
    • 消息可靠性:ACK + 手动提交 + 幂等性
    • Kafka vs RabbitMQ 选型对比

搜索与金融

  1. 搜索引擎

    • 倒排索引、分词、查询处理流程
    • BM25 / TF-IDF 相关性算法
    • Elasticsearch 原理、分布式搜索架构
  2. 支付系统

    • 支付状态机、幂等性设计(Token / 唯一键)
    • 分布式事务:TCC、Saga、本地消息表
    • 渠道路由、对账体系、风控分层

AI 与个性化

  1. 推荐系统
    • 四阶段漏斗:召回 → 粗排 → 精排 → 重排
    • 协同过滤(Item-CF)、双塔模型、向量召回(ANN)
    • 排序模型:DeepFM、DIN、MMoE
    • 冷启动、多样性(MMR)、实时推荐架构

业务系统

  1. 订票系统

    • 座位锁定与超时释放机制
    • Redis Lua 原子锁座 + 数据库唯一约束防超卖
    • 分段库存处理热点场次
    • 支付闭环:本地消息表 + 补偿机制
  2. 在线协作编辑

    • 冲突解决:CRDT(RGA)vs OT
    • 实时同步:WebSocket + 操作广播
    • 光标同步、版本历史、权限控制
    • Tombstone 压缩与性能优化
  3. 通知系统

    • 多渠道分发:App 推送(APNs/FCM)、站内信、短信、邮件
    • 消息模板渲染、渠道路由与优先级队列
    • 单用户限流、内容去重、客户端聚合防打扰
    • 可靠性投递:幂等消费、指数退避重试、死信队列

存储、监控与增长

  1. 分布式文件存储

    • 对象存储与分布式文件系统的边界、元数据与数据分离
    • 大文件分块、副本与纠删码的取舍
    • 多段上传与断点续传、冷热分层与生命周期
    • 一致性模型:强一致 vs 最终一致对应用的影响
  2. 视频流媒体平台

    • 上传 → 转码 → 切片 → 分发的完整流水线
    • HLS/DASH 切片与自适应码率(ABR)
    • CDN 分发与回源策略、边缘缓存命中率
    • 弹幕与互动的实时通道、存储与带宽成本模型
  3. 附近的人(LBS 服务)

    • 地理空间索引:Geohash / Quadtree / S2 对比
    • 位置上报的写入放大与批量聚合
    • 在线状态与心跳、查询半径与排序策略
    • 隐私保护与位置精度模糊化
  4. 监控与告警系统

    • 指标采集:拉模型 vs 推模型、采集频率与开销
    • 时序存储与降采样、聚合查询与保留策略
    • 告警规则引擎、抑制与静默、分组收敛
    • 通知分发与值班轮转、可观测性三支柱协同
  5. 分布式锁服务

    • Redis 锁与 Redlock 的争议、单点与主从切换风险
    • ZooKeeper/etcd 租约与临时顺序节点
    • fencing token:让过期持有者无法造成破坏
    • 续租、故障恢复、性能对比与常见误用清单
  6. 广告投放系统

    • 广告检索与召回、定向与用户画像
    • 竞价机制与预算控制(pacing)、频次控制
    • 计费与归因模型、点击率预估特征
    • 反作弊与效果衡量、冷启动与探索

设计原则速查

CAP 定理

组合代表系统场景
CPZookeeper、etcd配置中心、服务发现
APCassandra、Eureka高可用场景
CA传统 RDBMS(单机)非分布式

扩展性指标

指标说明优化方向
QPS每秒查询数缓存、CDN、读写分离
TPS每秒事务数消息队列削峰、拆分事务
P99 延迟99% 请求延迟异步化、本地缓存
可用性99.9% / 99.99%冗余、故障转移

每篇案例包含:需求分析、架构演进、数据模型、核心算法、性能考量。

全部文章 Books game Java Indie golang 客户端开发 Minigame Saas rust Python