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

一、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的特征
  • Java 8
  • Spring Framework 5
  • Spring Boot 2
  • 动态路由
  • 内置到Spring Handler映射中的路由匹配
  • 基于HTTP请求的路由匹配 (Path, Method, Header, Host, etc…)
  • 过滤器作用于匹配的路由
  • 过滤器可以修改下游HTTP请求和HTTP响应 (Add/Remove Headers, Add/Remove Parameters, Rewrite Path, Set Path, Hystrix, etc…)
  • 通过API或配置驱动
  • 支持Spring Cloud DiscoveryClient配置路由,与服务发现与注册配合使用
三、Spring Cloud Gateway核心概念

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

  • Route(路由): 路由是网关的基本组件。它的定义是一个ID,一个目标URI,一组谓词和一组过滤器。如果聚合谓词为真,则匹配路由。
  • Predicate(谓词): 这是一个 Java 8 Function Predicate。输入类型是一个 Spring Framework ServerWebExchange。这允许开发人员对HTTP请求中的任何内容进行匹配,例如头和参数。
  • Filter(过滤器): 一个标准的Spring webFilter。Spring Cloud Gateway中的Filter分为两种类型的Filter,分别是Gateway Filter和Global Filter。在这里,可以在发送下游请求之前或之后修改请求和响应。
四、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方式。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页