Skip to content

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 配合的方式

  1. 服务注册: 后端服务(比如用户服务、商品服务)启动后自动注册进 Nacos。

  2. Gateway 发现服务: Gateway 不需要写死服务地址,它从 Nacos 获取服务列表。

  3. 动态路由(可选): 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 + 微服务」的完整架构图

Released under the MIT License.