CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
构建可扩展系统/课时/综合练习
RawBlame
课时目录12 节

构建可扩展系统

  1. 01可扩展性是什么
  2. 02CAP 定理
  3. 03无状态服务
  4. 04缓存与读扩展
  5. 05分片策略
  6. 06数据复制
  7. 07N+1 查询问题
  8. 08负载均衡
  9. 09背压与限流
  10. 10负载转移
  11. 11读写分离
  12. 12综合练习

综合练习

为 tracks API 画扩展方案与瓶颈清单。

40 分钟

综合练习

把本 track 串起来:为 CodeRoadMap 的 tracks API 设计一套可扩展架构,并列出瓶颈与演进路径。目标不是画完美架构图,而是证明你能在 building-for-scale 节点上 说清取舍。

学习目标

  • 综合运用无状态、缓存、读写分离、限流、队列等手段
  • 产出瓶颈清单与分阶段演进计划(MVP → 10x → 100x)
  • 交叉引用本 track 与 redis-essentials、nginx-essentials、kafka-essentials

任务说明

假设 tracks API 现状:单体 Spring Boot + PostgreSQL,峰值 500 QPS,P99 800ms。需求:支撑活动推广后 5000 QPS,读多写少,track 列表与详情占 90% 流量。

交付物

  1. 架构图(ASCII 或 Mermaid):Client → 边缘 → App → 缓存 → DB → 队列
  2. 瓶颈清单:至少 5 项,每项标注组件、症状、优先级
  3. 演进三阶段:每阶段改什么、预期 QPS、风险
Phase 1: 无状态 + Redis 缓存 + 读写分离
Phase 2: Nginx 限流 + Kafka 异步写统计
Phase 3: 分片(按 track_id)+ 多区域读副本

自检清单

  • Session 是否外置?见 scale-stateless
  • 列表接口是否存在 N+1?见 scale-n1
  • 缓存 miss 与 DB 故障是否有降级?见 reliability-essentials
  • 超流量时 429 还是排队?见 scale-backpressure
  • CAP 取舍是否写进设计说明?见 scale-cap

加分项

  • 用 spring-cloud-essentials 组件替换图中自定义部分并说明理由
  • 估算 Redis 内存:10 万 track 详情,平均 2KB,命中率 95% 时 DB 剩余 QPS

练习

  • 完成上述三份交付物(可写在 PR 或笔记里)
  • 与同伴交叉 review:对方架构最先崩的是哪一环
  • 回到 全栈路线图,勾选 building-for-scale 相关节点

小结

扩展方案的价值在瓶颈清单与分阶段演进——能解释「先做什么、为什么、代价是什么」,比一张炫图更重要。

加载本节练习…
← 上一课读写分离