← 返回题目列表

Spring Cloud Gateway 的核心概念(Route、Predicate、Filter)是什么?

高频 中等 第 11 / 25 题 更新于 2026/07/28
API网关Spring Cloud GatewayRouteFilter

简化版

Spring Cloud Gateway 有三个核心概念:① Route(路由)——网关的基本单元,包含 id、目标 URI、一组断言和一组过滤器,决定「什么样的请求转发到哪里」;② Predicate(断言)——匹配条件,判断请求是否符合某个路由的规则(如路径匹配 /api/order/**、请求方法是 GET、请求头满足某条件),断言全部通过才走这条路由;③ Filter(过滤器)——对请求/响应做处理的拦截器,分pre(转发前,如鉴权、改请求头、限流)和post(响应后,如改响应、记录日志),实现网关的各种功能。简明区分:Predicate 决定「匹不匹配」,Route 决定「转发到哪」,Filter 决定「怎么加工」

详细版

三大核心概念:

概念作用
Route(路由)路由的基本单元 = id + 目标 URI + Predicates + Filters
Predicate(断言)匹配条件,决定请求是否走这条路由(路径/方法/请求头/时间等)
Filter(过滤器)对请求/响应加工(鉴权、限流、改写、日志),分 pre/post

配置示例:

spring:
  cloud:
    gateway:
      routes:
        - id: order-route              # 路由 id
          uri: lb://order-service      # 目标(lb= 负载均衡到 order-service)
          predicates:                  # 断言:满足才走这条路由
            - Path=/api/order/**       # 路径匹配
            - Method=GET,POST          # 方法匹配
          filters:                     # 过滤器:加工请求
            - StripPrefix=1            # 去掉路径前缀
            - name: RequestRateLimiter # 限流

内置断言:Path、Method、Header、Query、Host、After/Before/Between(时间)、Cookie 等。 内置过滤器:AddRequestHeader、StripPrefix、RewritePath、RequestRateLimiter、Retry、CircuitBreaker 等。

完整版教学

一、Spring Cloud Gateway 概览

Spring Cloud Gateway 是 Spring 官方的 API 网关,基于 Spring WebFlux(响应式、Netty) 构建,性能好、与 Spring 生态无缝。它的工作模型可以用三个核心概念概括——Route、Predicate、Filter,理解了这三个就理解了 Gateway 的工作方式。一个请求进来,Gateway 会用 Predicate 找到匹配的 Route,经过 Route 上的 Filter 链加工,最后转发到 Route 指定的目标服务。

二、Route(路由):路由的基本单元

Route(路由) 是 Gateway 的基本构建块,代表一条完整的路由规则。一个 Route 包含:

  • id:路由的唯一标识。
  • uri目标地址——请求匹配这条路由后转发到哪里(可以是具体地址 http://...,也可以是 lb://service-name 表示负载均衡到某个注册的服务)。
  • predicates(断言集合):匹配条件——什么样的请求走这条路由。
  • filters(过滤器集合):对请求/响应的加工逻辑。

一个网关可以配置很多 Route,每个 Route 定义「满足什么条件(Predicates)的请求,经过什么加工(Filters),转发到哪个目标(uri)」。

三、Predicate(断言):匹配条件

Predicate(断言) 是一个返回 true/false 的匹配条件,用来判断一个请求是否符合某条路由的规则。一条路由可以配多个断言,所有断言都通过(AND 关系),请求才走这条路由。

Gateway 内置了丰富的断言工厂:

  • Path:按路径匹配,如 Path=/api/order/**(最常用)。
  • Method:按 HTTP 方法匹配,如 Method=GET,POST
  • Header:按请求头匹配。
  • Query:按请求参数匹配。
  • Host:按域名匹配。
  • After / Before / Between:按时间匹配(如某时间后才生效)。
  • CookieRemoteAddr 等。

请求进入网关,Gateway 会用各条路由的断言去匹配,找到第一条所有断言都满足的路由,就用它。断言决定了「这个请求匹不匹配这条路由」。

四、Filter(过滤器):请求/响应的加工

Filter(过滤器) 是对请求和响应进行拦截和加工的组件,是网关各种功能的实现载体(鉴权、限流、改写、日志都靠 Filter)。

Filter 分两个阶段(类似 AOP 的前置/后置):

  • pre(前置,转发前):请求转发到后端之前执行——如鉴权校验、修改请求头/路径、参数校验、限流。
  • post(后置,响应后):后端返回响应之后执行——如修改响应头、记录日志、统计耗时。

Gateway 的 Filter 分两类:

  • GatewayFilter(局部过滤器):作用于指定的路由(在某条 route 的 filters 里配置)。内置如 StripPrefix(去路径前缀)、AddRequestHeader(加请求头)、RewritePath(重写路径)、RequestRateLimiter(限流)、Retry(重试)、CircuitBreaker(熔断)。
  • GlobalFilter(全局过滤器):作用于所有路由,无需在每条路由单独配置。常用于全局鉴权、全局日志等。可自定义实现。

多个 Filter 组成一条过滤器链,请求依次经过各 Filter 的 pre 逻辑 → 转发到后端 → 响应依次经过各 Filter 的 post 逻辑。

五、三者如何协作:一次请求的流转

把三个概念串起来,一次请求在 Gateway 里的流转:

  1. 请求进入网关。
  2. Gateway 遍历所有 Route,用每条路由的 Predicate 匹配请求,找到匹配的路由。
  3. 请求进入这条路由的 Filter 链:依次执行各 Filter 的 pre 逻辑(鉴权、限流、改写请求…)。
  4. 转发请求到路由指定的 uri(目标服务,经负载均衡)。
  5. 后端返回响应,依次执行各 Filter 的 post 逻辑(改响应、记日志…)。
  6. 返回响应给客户端。

简明区分:Predicate 判断「匹不匹配这条路由」→ Route 决定「转发到哪个目标」→ Filter 决定「请求/响应怎么加工」

六、常见误区与追问

这道题面试时最容易丢分的地方,是把「Spring Cloud Gateway 核心概念」答成一段泛泛的组件介绍。更稳的答法是先给结论,再沿着 统一流量入口链路 拆清楚流程,最后补上异常场景、数字边界和选型取舍。

回答层次要讲清的内容容易漏掉的边界
核心定义Spring Cloud Gateway 的核心是 Route、Predicate、Filter,基于 WebFlux/Reactor Netty 处理请求不要停在名词解释
流程机制请求进入 Gateway Handler Mapping -> Predicate 判断是否匹配 Route -> 构造 Gateway Filter Chain -> 执行 Pre Filter -> 转发到目标服务 -> 执行 Post Filter说明谁触发、谁存储、谁通知、谁兜底
工程取舍一条路由通常包含 id、uri、predicates 和 filters;Predicate 命中后 Filter 链执行再转发网关适合收口横切能力,但不能把业务逻辑堆到网关,否则会形成新的复杂单体
Spring Cloud Gateway 核心概念 面试拆解:
1. 请求进入 Gateway Handler Mapping
2. Predicate 判断是否匹配 Route
3. 构造 Gateway Filter Chain
4. 执行 Pre Filter
5. 转发到目标服务
6. 执行 Post Filter

记忆钩子:先拆路由、过滤器、鉴权、限流、熔断、灰度,再说明网关和业务服务的边界;回答时一定要落到题目中的「Spring Cloud Gateway 核心概念」,不要把相邻中间件的能力混着讲。

  • 误区:Predicate 和 Filter 是一回事。 Predicate 负责判断是否匹配路由,Filter 负责修改请求响应或执行横切逻辑。
  • 误区:Gateway 基于 Servlet 阻塞模型。 Spring Cloud Gateway 基于 WebFlux 和 Reactor Netty,区别于 Zuul 1 的阻塞模型。
  • 误区:Filter 只有全局一种。 它有 GlobalFilter 和 GatewayFilter,作用范围不同。
  • 追问:Route 由哪些部分组成? 路由 ID、目标 URI、断言 Predicate、过滤器 Filter 和顺序等。
  • 追问:Pre 和 Post Filter 区别是什么? Pre 在转发前执行,Post 在后端响应返回后执行。
  • 追问:为什么 Gateway 适合高并发网关? 非阻塞事件模型能减少线程阻塞,适合 I/O 密集转发。

七、加强记忆

Spring Cloud Gateway(基于 WebFlux/Netty 响应式)三大核心概念:① Route(路由)——基本单元 = id + 目标 uri(lb://服务名 负载均衡)+ Predicates + Filters,定义「什么请求经什么加工转发到哪」;② Predicate(断言)——匹配条件(Path/Method/Header/Query/Host/时间等,多个 AND),决定请求走不走这条路由;③ Filter(过滤器)——对请求/响应加工(鉴权/限流/改写/日志),分 pre(转发前)/post(响应后),有局部 GatewayFilter(指定路由)和全局 GlobalFilter(所有路由)。协作流程:Predicate 匹配路由 → 走 Filter 链 pre → 转发到 uri → Filter 链 post → 返回。口诀:Predicate 管匹配、Route 管去向、Filter 管加工