Spring Cloud Gateway 概述

Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关,目标是替代Netflix ZUUL,其不仅提供统一的路由方式,并且基于filter链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。

Spring Cloud Gateway的特征Spring Cloud Gateway核心概念

使用过Zuul的人,都知道网关的核心肯定是Filter以及Filter Chain(Filter 责任链)。Spring Cloud Gateway也具有路由和Filter的概念。下面介绍一下Spring Cloud Gateway中的几个重要概念。

Spring Cloud Gateway的工作原理

Spring Cloud Gateway 核心处理流程如下所示。

Gateway的客户端向Spring Cloud Gateway发起请求,请求首先会被 Gateway Handler Mapping 接收,决定请求匹配的路由,然后发送给Gateway Web Handler。Handler 通过特定的请求filter链发送请求。

过滤链通过虚线分隔的原因是过滤器filter可以在代理请求发送之前或者之后执行逻辑。执行所有 pre 过滤逻辑,然后发出请求给代理服务(proxied service),之后将执行 post 过滤器逻辑。

springcloud各种概念(SpringCloudGateway核心概念和工作原理-Part)(1)

Spring Cloud Gateway相关依赖项

将如下依赖项添加到Spring Cloud项目的pom.xml文件中。

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-actuator</artifactId>

</dependency>

<!--Spring Cloud Gateway的Starter-->

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-gateway</artifactId>

</dependency>

</dependencies>

Spring Cloud Gateway提供了一个gateway actuator,该EndPoint 提供了关于Filter和Routes的信息查询。可以在application.yml 中配置开启。

springcloud各种概念(SpringCloudGateway核心概念和工作原理-Part)(2)

访问gateway 端点:

http://localhost:8080/actuator/gateway/routes

可以看到返回的路由信息:

springcloud各种概念(SpringCloudGateway核心概念和工作原理-Part)(3)

Spring Cloud Gateway网关路由方式

新的gateway网关路由配置有两种方式:

1.通过@Bean自定义RouteLocator,在启动主类Application中配置。

springcloud各种概念(SpringCloudGateway核心概念和工作原理-Part)(4)

2.在配置文件yml中配置。

springcloud各种概念(SpringCloudGateway核心概念和工作原理-Part)(5)

这两种方式都可以实现网关路由是等价的,但是通常项目开发中会使用配置文件yml方式。

相关链接:

https://cloud.spring.io/spring-cloud-gateway/spring-cloud-gateway.html

,