HiHuo
首页
博客
手册
工具
关于
首页
博客
手册
工具
关于
  • 系统设计实战

    • 系统设计面试教程
    • 系统设计方法论
    • 01-短链系统设计
    • 02 - 秒杀系统设计
    • 03 - IM 即时通讯系统设计
    • 04 - Feed 流系统设计
    • 05 - 分布式 ID 生成器设计
    • 06 - 限流系统设计
    • 第7章:搜索引擎设计
    • 08 - 推荐系统设计
    • 09 - 支付系统设计
    • 10 - 电商系统设计
    • 11 - 直播系统设计
    • 第12章:缓存系统设计
    • 第13章:消息队列设计
    • 第14章:分布式事务
    • 15 - 监控系统设计

系统设计面试教程

架构师必备:从需求到架构的完整系统设计方法论

教程简介

本教程专为架构师面试设计,涵盖15个经典系统设计案例,从需求分析到架构设计的完整流程。每个案例都包含方法论 + 容量估算 + 架构设计 + 优化方案 + 面试要点,帮助你系统化地掌握大厂架构师面试的核心能力。

学习目标

  • 掌握系统设计方法论:需求分析、容量估算、架构设计的标准流程
  • 熟练15个经典案例:短链、秒杀、IM、Feed流等高频面试题
  • 提升架构设计能力:从单体到分布式,从功能到性能的完整思路
  • 具备问题拆解能力:将复杂需求拆解为可落地的技术方案
  • 掌握权衡决策能力:在成本、性能、可用性之间做最优选择

📖 学习路径

基础篇:方法论

  • 00-系统设计方法论 - 完整的系统设计流程和技巧
    • 需求分析与功能拆解
    • 容量估算(QPS、存储、带宽)
    • 数据库设计与分库分表
    • 接口设计与API规范
    • 架构演进路径

🔥 高频案例(必备)

这5个案例是大厂面试的高频题,务必熟练掌握:

  • 01-短链系统设计

    • 短链生成算法(Base62、雪花算法、哈希)
    • 高并发读写分离架构
    • Redis缓存设计与更新策略
    • 统计系统设计(实时、离线)
  • 02-秒杀系统设计

    • 流量削峰(MQ、令牌桶、漏桶)
    • 库存扣减(Redis预减、数据库兜底)
    • 超卖防护(乐观锁、分布式锁)
    • 限流熔断降级策略
  • 03-IM即时通讯系统

    • 长连接架构(WebSocket、TCP)
    • 消息推送(在线、离线、推拉结合)
    • 群聊架构(扩散读 vs 扩散写)
    • 消息可靠性保证(ACK、重传)
  • 04-Feed流系统设计

    • 推模式 vs 拉模式 vs 推拉结合
    • 关注关系存储(Redis ZSet)
    • 热点内容缓存(多级缓存)
    • 分页与去重策略
  • 05-分布式ID生成器

    • 雪花算法原理与优化
    • 美团Leaf、百度UIDGenerator
    • 时钟回拨问题解决
    • 高可用设计(多机房部署)

💰 电商业务场景

电商系统是最综合的考察场景,涵盖支付、订单、库存等核心业务:

  • 06-支付系统架构

    • 支付流程设计(下单、支付、回调)
    • 分布式事务(TCC、Saga)
    • 幂等性设计(防重、去重)
    • 对账与清算系统
  • 07-电商订单系统

    • 订单状态机设计
    • 库存扣减(预占、扣减、回滚)
    • 优惠券系统设计
    • 订单拆分与合并

搜索与推荐

搜索和推荐是互联网公司的核心竞争力:

  • 08-搜索系统设计

    • 倒排索引原理
    • Elasticsearch架构设计
    • 搜索优化(分词、相关性排序)
    • 热门搜索与搜索建议
  • 09-推荐系统架构

    • 召回层、排序层、重排层
    • 特征工程与模型训练
    • 在线推理与离线训练
    • AB测试与效果评估

📹 实时互动场景

实时系统需要处理高并发、低延迟的挑战:

  • 10-直播系统架构
    • 推流拉流架构(RTMP、WebRTC)
    • CDN加速与边缘节点
    • 弹幕系统设计
    • 直播间管理

基础设施与中台

基础设施是支撑业务的底座:

  • 11-API网关设计

    • 路由、鉴权、限流、熔断
    • 网关高可用设计
    • 灰度发布与流量染色
    • Kong、APISIX架构对比
  • 12-监控告警系统

    • Prometheus架构设计
    • 指标采集与存储(TSDB)
    • 告警规则与通知
    • 分布式追踪(Jaeger)
  • 13-配置中心设计

    • Nacos、Apollo架构对比
    • 配置推送机制(推、拉)
    • 配置版本管理
    • 灰度发布配置

🤖 任务调度与爬虫

后台任务系统的设计考验:

  • 14-任务调度系统

    • 分片策略(一致性哈希)
    • 失败重试与补偿
    • 任务依赖管理(DAG)
    • XXL-JOB、Elastic-Job对比
  • 15-分布式爬虫系统

    • URL去重(布隆过滤器)
    • 分布式调度
    • 反爬虫策略
    • 数据清洗与存储

适合人群

  • 准备架构师、技术专家岗位面试
  • 3年以上开发经验,想系统学习架构设计
  • 技术Leader,需要提升系统设计能力
  • 有单点技术深度,缺少端到端架构经验

⏱️ 学习时长

  • 快速刷题:每个案例 2-3 小时,共 30-45 小时
  • 深度学习:每个案例 4-6 小时,含代码实现,共 60-90 小时
  • 面试准备:重点准备 Top 5 案例,15-20 小时

教程特色

📘 完整的设计流程

每个案例都遵循标准的设计流程:

1. 需求分析
   - 功能需求(核心功能、扩展功能)
   - 非功能需求(性能、可用性、一致性)

2. 容量估算
   - QPS估算(DAU → 读写比 → QPS)
   - 存储估算(数据量 × 增长率)
   - 带宽估算(流量 × 并发)

3. 接口设计
   - RESTful API设计
   - 请求/响应格式
   - 错误码定义

4. 数据库设计
   - 表结构设计
   - 索引设计
   - 分库分表策略

5. 架构设计
   - V1:单体架构(MVP)
   - V2:微服务架构(服务拆分)
   - V3:高可用架构(多活、容灾)

6. 性能优化
   - 缓存优化
   - 数据库优化
   - 异步化改造

7. 监控告警
   - 核心指标
   - 告警规则
   - 故障处理

真实的技术方案

  • 提供可落地的架构图(draw.io源文件)
  • 包含关键代码片段(Go/Java)
  • 参考大厂真实架构(美团、字节、阿里)
  • 分析技术选型的权衡(为什么用Redis而不是MySQL)

深度的技术剖析

  • 不仅讲"怎么做",更讲"为什么这么做"
  • 分析每个设计决策的权衡(trade-off)
  • 讲解从V1到V3的架构演进路径
  • 提供面试中的加分项和易错点

快速开始

学习建议

  1. 先学方法论:从 00-系统设计方法论 开始
  2. 刷Top 5案例:短链、秒杀、IM、Feed流、分布式ID
  3. 深入1-2个领域:选择你熟悉的领域(电商、社交、内容)深入学习
  4. 模拟面试:找朋友模拟面试,练习讲解架构

面试技巧

面试流程:

  1. 需求澄清(5分钟):问清楚功能范围、数据规模、性能要求
  2. 容量估算(5分钟):计算QPS、存储、带宽,展示数据敏感度
  3. 架构设计(20分钟):画架构图,讲解核心模块
  4. 深入细节(15分钟):讨论技术选型、优化方案、权衡决策
  5. Q&A(10分钟):回答面试官的追问

加分项:

  • 主动询问需求,不要假设
  • 给出多个方案并对比优缺点
  • 提到真实的技术案例(我在XX公司做过类似系统)
  • 讲清楚架构演进路径(从简单到复杂)

易错点:

  • 一开始就设计复杂架构(应该先MVP,再优化)
  • 容量估算不准确(记住常用数字:1KB、1MB、1GB)
  • 忽略非功能需求(性能、可用性、一致性)
  • 画架构图太乱(用标准符号,逻辑清晰)

配套资源

前置知识(来自其他教程)

建议先学习以下教程,打好基础:

  • 分布式系统:Kafka教程、Redis教程
  • 数据库:MySQL教程
  • 容器编排:Kubernetes教程
  • 微服务:Golang教程 第9章

推荐书籍

  • 《System Design Interview》- Alex Xu
  • 《Designing Data-Intensive Applications》- Martin Kleppmann
  • 《微服务架构设计模式》- Chris Richardson

在线资源

  • System Design Primer
  • Grokking the System Design Interview
  • ByteByteGo - Alex Xu的系统设计课程

学习成果

完成本教程后,你将能够:

  • 在45-60分钟内设计一个完整的系统
  • 准确估算系统的容量和性能
  • 设计合理的数据库表结构和索引
  • 画出清晰的架构图并讲解核心流程
  • 分析技术选型的权衡(trade-off)
  • 提出系统的优化方案和演进路径

案例难度与准备时间

案例难度面试频率准备时间核心考点
短链系统2-3h算法、缓存、重定向
秒杀系统4-5h高并发、限流、分布式锁
IM系统5-6h长连接、消息推送、群聊
Feed流3-4h推拉模式、缓存、分页
分布式ID2-3h雪花算法、高可用
支付系统5-6h分布式事务、幂等性
订单系统4-5h状态机、库存扣减
搜索系统3-4h倒排索引、ES架构
推荐系统4-5h召回排序、在线推理
直播系统3-4h推拉流、CDN、弹幕
API网关3-4h路由、限流、熔断
监控告警2-3hPrometheus、告警
配置中心2-3hNacos、配置推送
任务调度2-3h分片、失败重试
爬虫系统2-3h去重、分布式调度

🤝 贡献指南

欢迎提交Issue和Pull Request:

  • 补充新的系统设计案例
  • 优化现有架构方案
  • 分享真实的面试经验
  • 更正错误或改进表达

📄 许可证

MIT License


开始你的系统设计学习之旅吧!

建议先学习 00-系统设计方法论,掌握完整的设计流程,然后逐个攻克15个经典案例。


温馨提示

系统设计没有标准答案,重要的是:

  1. 展示你的思考过程(比结果更重要)
  2. 沟通你的设计决策(为什么选这个方案)
  3. 权衡各种trade-off(没有完美方案,只有最合适的)
  4. 保持开放心态(接受面试官的建议和挑战)

记住:架构师的核心能力不是记住所有技术,而是在复杂场景下做出合理的权衡决策。

Next
系统设计方法论