Spring Cloud Gateway是微服务的核心,下面我全面来详解Spring Cloud Gateway@mikechen
Spring Cloud Gateway
Spring Cloud Gateway :是 Spring Cloud 体系中的第二代网关。
基于 Spring 5 + Spring WebFlux + Reactor(响应式编程) 构建,专门用于替代早期的 Netflix Zuul。

在微服务架构中,网关是“入口流量的总闸门”,核心职责包括:
- 路由转发(Routing);
- 鉴权认证(Auth);
- 限流熔断(Rate Limit & Circuit Breaker);
- 日志监控(Logging);
- 协议转换(HTTP / WebSocket)。
它的典型价值主要有三点:统一入口、统一治理、统一扩展。
Spring Cloud Gateway架构
从架构上看,Gateway 处在客户端和微服务之间,是所有流量的统一入口。
整体架构,如下:

客户端 | v Spring Cloud Gateway | +--> 路由匹配(Predicate) | +--> 过滤器链(Filter Chain) | - Pre Filter | - Post Filter | +--> 目标微服务 A / B / C
网关的设计主要围绕三个核心概念展开:
Route(路由): 网关的基本模块。
它由一个 ID、一个目标 URI、一组断言和一组过滤器定义。如果断言为真,则匹配路由。
Predicate(断言): 这是一个 Java 8 的 Predicate,输入类型是 ServerWebExchange。
它允许开发者匹配来自 HTTP 请求的任何内容,例如 Headers 或 Query 参数。
Filter(过滤器): 指的是 GatewayFilter 的实例。
使用过滤器,可以在发送下游请求之前或之后修改请求和响应。
Spring Cloud Gateway原理
Spring Cloud Gateway 本质上是一个 API Gateway,负责把客户端请求转发到后端微服务,并在转发前后做统一处理。
整理流程,如下图所示:

spring:
cloud:
gateway:
routes:
- id: user-route
uri: http://localhost:8081
predicates:
- Path=/user/**
filters:
- StripPrefix=1
- id: order-route
uri: http://localhost:8082
predicates:
- Path=/order/**
Spring Cloud Gateway 的工作流程可以分为以下几个关键步骤:
- Gateway Client 向网关发起请求。
- Gateway Handler Mapping 确定请求是否与某个特定路由匹配。
- 如果匹配成功,则将其发送到 Gateway Web Handler。
- 该 Handler 通过特定的过滤器链(Filter Chain)将请求发送到 Proxied Service。
- 过滤器链 被虚线分割的原因是:过滤器可以在代理请求发送前(Pre)或发送后(Post)执行逻辑。
- Pre 逻辑: 参数校验、权限认证、流量监控、协议转换。
- Post 逻辑: 响应头修改、日志记录、耗时统计。