Spring Cloud Gateway详解(图文全面总结)

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

Spring Cloud Gateway

Spring Cloud Gateway :是 Spring Cloud 体系中的第二代网关。

基于 Spring 5 + Spring WebFlux + Reactor(响应式编程) 构建,专门用于替代早期的 Netflix Zuul。

Spring Cloud Gateway详解(图文全面总结)-mikechen

在微服务架构中,网关是“入口流量的总闸门”,核心职责包括:

  • 路由转发(Routing);
  • 鉴权认证(Auth);
  • 限流熔断(Rate Limit & Circuit Breaker);
  • 日志监控(Logging);
  • 协议转换(HTTP / WebSocket)。

它的典型价值主要有三点:统一入口、统一治理、统一扩展。

 

Spring Cloud Gateway架构

从架构上看,Gateway 处在客户端和微服务之间,是所有流量的统一入口。

整体架构,如下:

Spring Cloud Gateway详解(图文全面总结)-mikechen

客户端
  |
  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详解(图文全面总结)-mikechen

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 的工作流程可以分为以下几个关键步骤:

  1. Gateway Client 向网关发起请求。
  2. Gateway Handler Mapping 确定请求是否与某个特定路由匹配。
  3. 如果匹配成功,则将其发送到 Gateway Web Handler。
  4. 该 Handler 通过特定的过滤器链(Filter Chain)将请求发送到 Proxied Service。
  5. 过滤器链 被虚线分割的原因是:过滤器可以在代理请求发送前(Pre)或发送后(Post)执行逻辑。
  6. Pre 逻辑: 参数校验、权限认证、流量监控、协议转换。
  7. Post 逻辑: 响应头修改、日志记录、耗时统计。

评论交流
    说说你的看法