大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
负载均衡
负载均衡把流量分到多台后端,提高可用性与吞吐。分 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路径分流 - 阅读
deploy/nginx/prod.conf.example中的 upstream 块 - 画扩展为双 8080 实例时的流量图
小结
Nginx 是本站 L7 入口:443 终止 TLS,按路径分到 3000 与 8080。 下一课讲 NAT 与反向代理的关系。