Spring Cloud Gateway核心概念和工作原理-Part 1

一、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 過濾器邏輯。

Spring Cloud Gateway核心概念和工作原理-Part 1



五、Spring Cloud Gateway相關依賴項

將如下依賴項添加到Spring Cloud項目的pom.xml文件中。

<dependencies>

<dependency>

<groupid>org.springframework.boot/<groupid>

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

<dependency>

<groupid>org.springframework.cloud/<groupid>

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


Spring Cloud Gateway提供了一個gateway actuator,該EndPoint 提供了關於Filter和Routes的信息查詢。可以在application.yml 中配置開啟。

Spring Cloud Gateway核心概念和工作原理-Part 1

訪問gateway 端點:

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

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

Spring Cloud Gateway核心概念和工作原理-Part 1



六、Spring Cloud Gateway網關路由方式

新的gateway網關路由配置有兩種方式:

1.通過@Bean自定義RouteLocator,在啟動主類Application中配置。

Spring Cloud Gateway核心概念和工作原理-Part 1


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

Spring Cloud Gateway核心概念和工作原理-Part 1


這兩種方式都可以實現網關路由是等價的,但是通常項目開發中會使用配置文件yml方式。


分享到:


相關文章: