Spring Cloud Gateway 是 Spring 官方研发的微服务网关组件,专为微服务架构打造,提供简洁、高效、统一的 API 路由管理能力。依靠过滤器链拓展各类通用能力,包含接口鉴权、运行指标监控、流量管控、服务熔断限流、请求重写、跨域处理等,是微服务架构中标准的流量入口组件
在微服务集群中若不使用统一网关,整套架构会暴露出诸多缺陷:
客户端需要直接对接多个不同微服务,大幅增加客户端代码与配置复杂度,后期维护成本持续升高。
各个微服务可独立配置认证、授权规则,客户端调用时需要适配多种认证逻辑,身份校验逻辑杂乱。
多服务直连模式下极易产生跨域问题,同时受防火墙、特殊协议限制,调用链路部署与调试难度加大。
项目迭代过程中常需要拆分、合并微服务,无统一入口时服务重构、迁移会牵连大量调用方,灵活性极差。
引入 Spring Cloud Gateway 可完美解决上述痛点,它作为整个微服务系统的统一流量入口,负责内部服务的路由转发与请求中转,对外为客户端提供统一访问端点。
网关将鉴权、安全校验、日志统计、限流防刷等非业务通用逻辑统一收拢,与业务服务解耦。其主流能力包含:请求路由转发、身份认证与权限校验、安全策略管控、接口防刷、流量控制、服务熔断、全链路日志与监控、请求 / 响应报文修改、路径重写、统一跨域处理等。
路由是 Spring Cloud Gateway 最基础的单元,每一条路由代表一套独立的请求转发规则。一条完整路由由 4 部分组成:唯一 ID、目标转发 URL、一组断言、一组过滤器。当请求匹配路由中的所有断言规则时,网关就会将请求转发至对应目标服务。
断言参考 Java 8 中的 java.util.function.Predicate 函数式接口,作用是匹配 HTTP 请求。开发者可基于请求路径、请求头、请求参数、请求方式、访问时间等维度配置断言,只有请求完全匹配断言规则,才会命中对应路由。
过滤器是标准的 Spring Web 过滤器,分为两大类型:Gateway Filter(局部过滤器) 和 Global Filter(全局过滤器)。
局部过滤器:仅对当前绑定的单条路由生效。
全局过滤器:对网关接收的所有请求统一生效。
过滤器可在请求路由前或路由后执行逻辑,灵活修改请求与响应内容。

客户端发起请求后,整体流转流程如下:
请求首先到达 Spring Cloud Gateway 网关;
网关通过 Gateway Handler Mapping 匹配当前请求对应的路由规则;
匹配成功后,请求被分发至 Gateway Web Handler;
Handler 驱动过滤器链执行逻辑,分为 Pre(前置) 和 Post(后置) 两个阶段;
前置过滤器执行完成后,请求转发至后端微服务执行业务逻辑;
后端服务处理完毕并返回响应,再执行后置过滤器逻辑,最终将响应结果回传给客户端。
前置过滤器常用场景:请求参数校验、身份权限校验、流量统计、日志记录、协议转换、限流熔断。
后置过滤器常用场景:修改响应报文、新增 / 修改响应头、结果日志记录、后置流量统计。