SpringCloud Gateway最全详解(图文全面总结)

SpringCloud Gateway是微服务的核心,下面我全面来详解SpringCloud Gateway@mikechen

Spring Cloud Gateway

Spring Cloud Gateway是Spring官方基于Spring 5、Spring Boot 2和Project Reactor…等技术,开发的微服务API网关。

在微服务架构中,API 网关(API Gateway), 就像是所有微服务对外暴露的“门面”或“统一入口”。

SpringCloud Gateway最全详解(图文全面总结)-mikechen

在微服务架构中,系统被拆分为多个服务模块,客户端往往需要分别调用这些服务。

存在如下问题:

客户端调用复杂,维护成本高;

统一认证、限流、日志、监控等功能,无法集中处理;

缺乏统一的安全控制入口…等等问题,网关应运而生,作为系统的唯一入口,统一处理认证。

 

Spring Cloud Gateway核心

Spring Cloud Gateway 作为微服务架构的统一入口,扮演着至关重要的角色。

如下图所示:

SpringCloud Gateway最全详解(图文全面总结)-mikechen

涵盖:路由、限流、日志、安全…等功能。

服务路由 (Service Routing)

服务路由,这是Gateway最基本也是最重要的功能。

它像一个智能的交通指挥员,根据预设的规则(如请求路径、HTTP方法…等),将客户端发来的请求准确无误地转发到对应的后端微服务实例。

它还能与服务注册中心(如Eureka、Nacos)无缝协作,实现服务的动态发现和负载均衡。

安全认证 (Security Authentication)

Gateway能够统一处理客户端的身份认证、和权限校验,提供了一个集中的安全防护层。

这意味着在请求到达后端服务之前,网关就可以验证用户的身份(比如通过校验JWT令牌),并判断是否有权访问目标资源。

流量控制 限流 

为了防止后端服务因突发流量而过载甚至崩溃,Gateway提供了强大的限流功能。

它能根据设定的策略(如每秒允许的请求数、基于IP或用户ID限流等),控制进入系统的流量,确保服务的稳定运行。

日志监控 (Logging & Monitoring)

Gateway是系统可观测性的重要一环,记录详细的请求日志、性能指标(如请求延迟、吞吐量)。

并追踪请求在各个服务间的调用路径,方便故障排查和性能分析。

熔断保护 (Circuit Breaking)

为了防止微服务间出现“雪崩效应”,Gateway提供了熔断机制。

当某个后端服务出现故障或响应变慢时,熔断器会自动“断开”,阻止新的请求继续发送到该问题服务,避免故障扩散。

 

Spring Cloud Gateway原理

Spring Cloud Gateway,大致流程如下图所示:

SpringCloud Gateway最全详解(图文全面总结)-mikechen

Client Request
      ↓
Spring Cloud Gateway(核心流程):
    ① 请求进入 DispatcherHandler
    ② RouteLocator 匹配路由(Predicates)
    ③ 构建 FilterChain(Global + Gateway)
    ④ 执行前置过滤器(认证、限流、重写等)
    ⑤ 调用下游服务(WebClient + LoadBalancer)
    ⑥ 执行后置过滤器(日志、响应改写等)
      ↓
Client Response

Gateway 处理一个请求的生命周期,可以概括为以下几个关键阶段:

1.请求入口

客户端的 HTTP 请求,首先被 Gateway 内嵌的 Reactor Netty 服务器接收。

请求被封装成 ServerWebExchange 对象,其中包含了 ServerHttpRequest (请求) 和 ServerHttpResponse (响应) 的上下文。

2.路由匹配

这是 Gateway 的核心调度器,它维护了所有加载的路由定义 (Route Definitions)

网关根据配置的路由规则(Predicate 断言),匹配请求对应的后端服务路由。

3.过滤器链执行

对匹配路由,依次执行全局过滤器(GlobalFilter)和路由过滤器(GatewayFilter),处理认证、限流、日志等功能。

4.请求转发

经过过滤器链后,使用响应式 WebClient 非阻塞地将请求转发到目标服务。

5.响应处理

下游服务响应返回后,执行后置过滤器处理响应内容,如日志记录、响应修改等。

6.返回客户端

最终将处理后的响应返回给客户端,完成整个请求流程。

与其它网关对比

项目 Spring Cloud Gateway Zuul 1.x Nginx Kong
模型 响应式(WebFlux) Servlet阻塞 C++/C异步 Lua + Nginx
性能 ⭐⭐⭐⭐⭐ ⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐
扩展性 Java,自定义 Filter Java Lua/配置 插件式
Spring 集成 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐
服务发现支持 插件支持

评论交流
    说说你的看法