Spring Cloud Gateway 架构
👍 提到 Spring Cloud Gateway,那我们就来聊聊它是干嘛的,怎么配合 Nacos 和前端使用。
🚪 什么是 Spring Cloud Gateway?
Spring Cloud Gateway 是 Spring 官方推出的 API 网关组件,用来统一接收、路由、过滤 HTTP 请求 —— 就像一个“智能守门员”。
🧭 一句话总结:
它是一个基于 Spring WebFlux 的 反应式网关,是 Zuul 的官方升级替代。
🔧 Spring Cloud Gateway 的核心功能
| 功能 | 描述 |
|---|---|
| 请求路由 | 按路径/头/参数把请求转发到指定服务 |
| 服务注册发现 | 和 Nacos 配合,自动发现后端服务 |
| 过滤器机制 | 登录鉴权、限流、日志、重写路径等 |
| 负载均衡 | 自带 LoadBalancer 自动选用健康服务 |
| 断路器/熔断 | 结合 Resilience4j 或 Sentinel 实现 |
| 支持动态路由 | 路由配置也可以从 Nacos 来 |
| 高性能 | 基于 Reactor Netty,异步非阻塞 |
🖼️ 架构示意图
[ 前端或 App 请求 ]
↓
┌────────────────────┐
│ Spring Cloud Gateway│
└────────────────────┘
↓ ↓ ↓
[服务A] [服务B] [服务C] (自动从 Nacos 发现)🌐 架构流程图
css
[浏览器请求] → [网关] →(从 Nacos 查目标服务)→ [后端服务A]📦 和 Nacos 配合的方式
服务注册: 后端服务(比如用户服务、商品服务)启动后自动注册进 Nacos。
Gateway 发现服务: Gateway 不需要写死服务地址,它从 Nacos 获取服务列表。
动态路由(可选): Gateway 的路由规则也可以配置在 Nacos 中,做动态刷新。
📘 application.yml 示例(核心配置)
yaml
spring:
cloud:
gateway:
discovery:
locator:
enabled: true # 打开从注册中心自动创建路由
lower-case-service-id: true
nacos:
discovery:
server-addr: nacos.company.com:8848这样 Gateway 会自动从 Nacos 读取所有服务名,比如:
http://gateway/api/user/** → http://user-service/**🚀 前端访问流程
你可以把前端所有接口统一指向 Gateway:
前端 → https://api.company.com/user/getInfo → Gateway → user-service不需要暴露多个后端服务地址,方便跨域、统一认证、安全控制。
🧠 小结一句话
Spring Cloud Gateway 是你微服务系统的“入口”,负责统一代理请求、做鉴权限流、安全校验。而 Nacos 提供服务列表 + 路由配置,Gateway 靠它完成动态服务发现。
如果你现在是前端或全栈角色,这里有个建议:
🧩 前端 + Gateway + Nacos 实践建议:
| 功能 | 推荐做法 |
|---|---|
| API 地址 | 前端只请求 Gateway 地址,如 /api/** |
| 网关鉴权 | 可以在 Gateway 层统一校验 Token |
| 服务发现 | 网关自动代理到 user/order/product 等服务 |
| 配置动态化 | 前端配置也可以通过 Nacos 下发,部署零修改 |
下面是一个「前端 + Gateway + Nacos + 微服务」的完整架构图
