动态

详情 返回 返回

Spring Cloud Gateway,這一篇就夠了 - 动态 详情

簡介

  • 文章背景:當前國內Spring Cloud 微服務框架各個組件,使用已經比較普遍,但是市面上的技術文檔比較零碎,有的文章很深入的講一個問題,卻沒有形成體系,對初學者不太友好,更有很多是複製粘貼,浪費閲讀精力,為了縮短尋找文檔或者書籍的時間,決定整理出一系列成體系文章,並定時檢查官方更新,維持文章相關技術的時效性。
  • 項目實例:用一個微服務商城作為基礎,結合對應的技術去實現。

目錄

Part1:微服務網關與Spring Cloud Gateway簡介  
Part2:按照步驟來創建網關服務模塊  
Part3:與Nacos的整合  
Part4:斷言
Part5:過濾器
Part6:與Sentinel的整合
Part8:超時、跨域等相關配置  
Part9:如何建立網關集羣

Part1:微服務網關與Spring Cloud Gateway簡介

1.1 微服務網關的基本概念和模型

微服務網關是對外服務的一個入口,其隱藏了內部架構的實現,充當着前端與後端微服務之間的中間層級,是微服務架構中必不可少的一個組件。其可以為我們管理大量的API接口,還可以對接客户端、適配協議、進行安全認證、轉發路由、限制流量、監控日誌、防止爬蟲、進行灰度發佈等。(請文章讀完後,去查下一下這些作用怎麼去實現)

1.1.1 微服務網關是什麼及其作用

微服務網關是一種服務端應用,是系統訪問的唯一入口,從設計模式上講,其可看作外觀模式(Facade)的一種表現形式。外觀模式作用是

  • 降低客户端與複雜子系統之間的耦合度。
  • 簡化客户端對複雜系統的操作,隱藏內部實現細節。模式設計如下圖

截屏2025-08-02 15.35.40.png

微服務網關使客户端和服務端在調用關係進行解耦,向客户端隱藏了各個服務的細節。通過微服務網關,客户端可以通過一個統一的入口點訪問多個微服務,而無須直接與每個微服務通信。(請思考下這樣的好處。)

微服務網關的核心是所有的客户端和消費端都通過統一的網關接入微服務,它封裝了微服務系統的內部架構,在微服務網關統一處理所有的非業務功能,如身份驗證、監控、負載均衡、緩存、協議轉換、限流熔斷、靜態響應處理等。通常,網關提供REST/HTTP的訪問API。

1.1.2 微服務網關解決那些問題

在微服務架構下應用被拆分成多個微服務,如果將所有的微服務直接對外暴露接口,就會出現接口安全、負載均衡等方面的問題,也會嚴重影響服務的可擴展和伸縮性。另外,每一個微服務都面臨鑑權認證、Session處理、安全檢查、日誌處理等問題。如果讓各個微服務都實現一遍,勢必會造成代碼冗餘。

比如在微服務架構下,要實現統一的權限驗證,有三種不同的實現方案:

(1)每個服務都實現權限校驗的功能。

(2)將權限校驗的代碼抽取出來並作為公共服務,然後其他所有服務都依賴這個服務。

(3)創建統一入口服務,在此服務中增加過濾器,所有請求進行權限校驗。

顯然第三種實現方案就是微服務網關,如圖

截屏2025-08-02 15.36.16.png

1.1.3 微服務網關有哪些核心功能

主要功能如圖

截屏2025-08-02 15.36.58.png

1.1.4 當前常用的微服務網關
  • Spring Cloud Gateway: Spring Cloud Gateway是Spring Cloud生態系統中的一個組件,當前穩定版本4.3.0基於Spring 6、Spring Boot 3和Project Reactor等技術實現。它提供了路由、負載均衡、安全認證、限流、重試等功能。
  • Zuul: Zuul是Netflix開源的微服務網關實現,提供了路由、負載均衡、安全認證、限流等功能。不過,由於Netflix已經停止維護Zuul 1.x版本,因此推薦使用Zuul 2.x版本(即Zuul2)。
  • Kong: Kong是一個開源的微服務網關和API管理平台,提供了路由、負載均衡、安全認證、限流、緩存等功能。Kong基於Nginx實現,可以通過插件擴展其功能

微服務網關與傳統API網關的區別

• 粒度:微服務網關是基於微服務架構設計的,它的粒度更細,可以對每個微服務進行獨立的路由和管理。而傳統的API網關通常對整個應用程序的API進行管理。

• 功能定位:微服務網關不僅提供路由轉發和負載均衡等功能,還承擔了微服務架構中的其他職責,如安全認證、請求過濾、轉換和聚合等。傳統的API網關主要關注請求的路由和轉發。

• 解耦性:微服務網關通過隱藏後端微服務的實現細節,實現了客户端與微服務之間的解耦,每個微服務可以獨立演化和部署。而傳統的API網關通常對整個應用程序進行管理,各個模塊之間的耦合性較高。

• 靈活性:微服務網關提供了更高的靈活性,可以根據不同的路由規則將請求路由到不同的微服務實例上,實現動態的負載均衡和容錯處理。傳統的API網關通常是將請求轉發到固定的後端服務。

• 性能:微服務網關的粒度更細,可以更精確地控制請求的路由和處理,從而提高系統的性能。傳統的API網關可能需要處理更大規模的請求,性能可能相對較低

1.2 Spring Cloud Gateway

目前Gateway是運用廣泛的網關軟件,官方網站截止目前2025年7月份截圖(相關內容改變文檔會同步更新),當前GA版本是 4.3.0,相關的文檔點擊Reference Doc查閲,對應文檔的描述這裏不再做複述。

截屏2025-08-02 15.37.36.png

如下圖Gateway是整個微服務系統的門户入口,具有路由轉發、監控、限流、權限檢查等功能。

截屏2025-08-02 15.37.45.png

Gateway按照響應式編程的模式開發,運用了Spring的WebFlux響應式框架,以高性能的Netty作為服務器。

Gateway包括以下三大核心技術。

  • 路由(Router)轉發:按照既定的路由,把請求轉發給相應的微服務。
  • 斷言(Predicate):判斷請求是否符合特定條件。
  • 過濾(Filter):在請求到達微服務之前,以及微服務返回響應結果之後,進行的一些通用處理

Add a new 评论

Some HTML is okay.