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综合练习

负载均衡

L4/L7;对照 nginx-essentials。

25 分钟

负载均衡

多实例无状态服务前面需要 负载均衡器(LB) 分发流量,避免单点过载。理解 L4 与 L7 差异、常见算法与健康检查,是 building-for-scale 流量层的必修课,细节实现见 nginx-essentials。

学习目标

  • 区分四层(TCP)与七层(HTTP)负载均衡的能力边界
  • 掌握轮询、加权轮询、最少连接、一致性哈希等算法
  • 配置健康检查与优雅摘流,避免把流量打到宕机实例

核心概念

层级工作对象典型产品能做什么
L4IP + 端口LVS、NLB快速转发、低延迟
L7HTTP 头、路径Nginx、ALB路径路由、TLS、限流
Client → LB → { App-1, App-2, App-3 }
              ↑ health check: GET /actuator/health

常用算法:

  • Round Robin:简单均匀,不考虑实例负载
  • Least Connections:长连接场景更公平
  • IP Hash / Consistent Hash:会话粘滞或缓存 locality
  • Weighted:新机器权重低,灰度放量

Spring Cloud 中 @LoadBalanced RestTemplate、Gateway 背后是服务发现 + 客户端 LB;边缘仍常放 Nginx/Ingress。

陷阱:健康检查过慢导致误摘流;max_fails 过小导致抖动。摘流前配合 graceful shutdown(完成在途请求再退出)。

与微服务

spring-cloud-essentials 的 Gateway + 注册中心与 scale-stateless 无状态实例组合,构成完整入口层。超限流量需 scale-backpressure。

练习

  • 为三个 App 实例写 Nginx upstream 配置(含 health check)
  • 对比轮询与最少连接在 WebSocket 场景下的表现
  • 模拟一台实例 503,确认 LB 是否在 3 次失败后摘除

小结

负载均衡把流量摊到健康实例上——算法选对、探活可靠,扩容才有意义。

加载本节练习…
← 上一课
N+1 查询问题
下一课 →背压与限流