负载均衡
L4/L7、Nginx upstream 对照。
30 分钟
负载均衡
负载均衡把流量分到多台后端,提高可用性与吞吐。分 L4(传输层) 与 L7(应用层);CodeRoadMap 单机阶段用 Nginx 做 反向代理 + 路径分流,扩展时可加 upstream 多实例。
学习目标
- 区分 L4 与 L7 负载均衡
- 理解 Nginx upstream 与 health check 直觉
- 对照本站
/api与/的路径级「均衡」
核心内容
L4 vs L7
| 类型 | 依据 | 典型设备/软件 | 能力 |
|---|---|---|---|
| L4 | IP + 端口 | 云 SLB、HAProxy TCP | 快,不懂 HTTP 路径 |
| L7 | HTTP 头、路径 | Nginx、Traefik | 按 URL 路由、TLS 终止 |
本站 Nginx 在 L7 按 location 把 /api/* 转到 :8080,其余转到 :3000(ngx-intro)。
单机路径分流(当前架构)
Nginx :443
│
┌────────────┴────────────┐
│ │
location /api/* location /
│ │
upstream backend upstream platform
127.0.0.1:8080 127.0.0.1:3000
│ │
Spring Boot Next.js
└──────────┬──────────────┘
│
MySQL :3306
这是 反向代理 + 路由,不是多机轮询;概念上与负载均衡同属「入口聚合」。
扩展为多实例
upstream backend {
server 127.0.0.1:8080;
server 127.0.0.1:8081; # 第二实例
}
健康检查:upstream 无响应时 Nginx 返回 502(排障见 net-troubleshoot)。HTTP 层缓存与限流也在 L7 配置(http-caching)。
验证
curl -s -o /dev/null -w "%{http_code}\n" https://coderoadmap.cn/
curl -s -o /dev/null -w "%{http_code}\n" https://coderoadmap.cn/api/tracks
nginx -t && sudo nginx -s reload
练习
- 说明 L4 负载均衡能否按
/api路径分流