Gateway 網關 之 概述


Gateway 概述

什么是網關:

  API網關作用就是把各個服務對外提供的API匯聚起來,讓外界看起來是一個統一的接口。同時也可在網關中提供額外的功能。總結:網關就是所有項目的一個統一入口

  網關 = 路由轉發 + 過濾器(編寫額外功能)

路由轉發:

接收外界請求,通過網關的路由轉發,轉發到后端的服務上。

如果只有這個一個功能看起來和之前學習的Nginx反向代理服務器很像,外界訪問nginx,由nginx做負載均衡,后把請求轉發到對應服務器上。

過濾器:

網關非常重要的功能就是過濾器。

過濾器中默認提供了 25 內置功能還自持額外的自定義功能。

對於我們來說比較常用的功能有網關的容錯、限流以及請求及相應的額外處理。


Spring Cloud Gateway

1、官網:https://cloud.spring.io/spring-cloud-gateway/reference/html/

2、Gateway 提供一種簡單有效的方式對 API 進行路由,以及提供強大的過濾功能,如:熔斷、限流、重試 等

3、SpringCloud Gateway 是SpringCloud 的一個新項目,基於Spring 5.0+SpringBoot2.0 和 Project Reactor 等技術開發的網關,它指在微服務架構提供一種簡單有效的統一的 API 路由管理方式

4、SpringCloud Gateway 作為SpringCloud 生態系統中的網關,目標是替代 zuul,在SpringCloud 2.0以上版本中,沒有對新版本的 zuul2.0進行集成,任然還是使用 zuul1.x 非 Reactor模式的老版本,Zuul理念更先進,想基於 Netty 非阻塞是和支持長連接,性能,但SpringCloud沒有整合 Zuul2.x,而是借鑒了 Zuul的理念,開發了SpringCloud Gateway,而為了提高網關性能SpringCloud Gateway 是居於 WebFlux 框架實現的,而WebFlux 底層是居於高性能的 Reactor 模式通信框架 Netty,是基於異步非阻塞模型上進行開發的,性能上強勁,據官方基准測試,SpringCloud Gateway 的 RPS(每秒請求數)是 Zuul1.x的1.6倍,

5、SpringCloud Gateway 的目標是提供統一的 路由方式基於 Filter 鏈的方式提供網關的基本功能,如:安全、監控/指示、限流

6、作用:反向代理、鑒權、流量控制(過濾處理)、熔斷、日志控制

 

 

 


Gateway 的三大和核心概念 

1、Route (路由):路由是構建網關的基本模塊,由:ID、目標URI、一系列斷言和過濾器組成,Gateway 的核心,一個Gateway 項目由若干個 route 組成,一個rote 代表一個完整的Api網關節點包含了:路由規則(Predicate),校驗、過濾處理和容錯處理(filter)

2、Predicate (斷言):參看Java8的 java.util.function.Predicate,開發人員可以匹配 HTTP請求中的所有內容(例如請求和和請求參數),如果請求與斷言匹配,則進行路由

3、Filter  (過濾):指的是Spring框架中GatewayFilter實例,使用過濾器,可以在請求被路由前或之后對請求進行修改,類似Servlet中的過濾器,同樣是 鏈式執行

總結:

Web請求,通過匹配一些條件,定位到真正的服務節點,並在這個轉發的前后進行一些精細化的控制,Predicate 是我們的匹配條件,Filter 可以理解為一個無所不能的過濾器,有兩個元素,在加上 URI,就可以實現具體的路由

 

 

客戶端向 Gateway 發送請求,然后 Gateway Handler Mapping中找到與之相匹配的路由,將其發給 Gateway Web Handler,Handler再通過指定的過濾器鏈將請求發送到我們實際的服務執行業務邏輯,然后返回,

過濾器中虛線分開的是可能會在發送代理請求之前(pre)或之后(post)執行業務邏輯

Filter 在 Pre 類型的過濾器可以做參數校驗,權限校驗,流量監控,日志輸出協議轉換等,在 Post 類型的過濾器可以做響應內容修改、響應頭的修改、日志輸出、流量監控 等重要操作

 

  • Gateway 將路由作為 WebFlux Handler Mapping 基礎架構的一部分,包括內置的 Route Predicate 工廠,所有這些 Predicate 都與 HTTP 請求的不同屬性匹配,多個 Route Predicate  可以進行組合使用
  • Gateway 創建 Route 對象時,使用 RoutePredicateFactory 創建 Predicate 對象,Predicate 對象可以賦值給 Route,Gateway 包含了許多內置的 Route Predicate Factories
  • 所有這些斷言都匹配 HTTP 請求的不同屬性,多種謂詞工廠可以組合使用,並且通過邏輯 And

 

>>>>>>>>>>>>>>>>>>>   下一遍:https://www.cnblogs.com/Alay/p/15150489.html   <<<<<<<<<<<<<<<<<<<<<<


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM