Spring Cloud Gateway 介紹

什么是Spring Cloud Gateway?

????????Spring Cloud Gateway 是 Spring Cloud 社區官方推出的一個基于 Spring Framework 5、Project Reactor 和 Spring Boot 2.x 的下一代 API 網關(API Gateway)解決方案。它旨在為微服務架構提供統一、簡潔、高效的 API 網關層。

????????你可以把它想象成一個大門口的智能保安和交通樞紐。所有外部客戶端(如Web瀏覽器、移動App)對微服務集群的請求,都需要先經過這個網關。網關負責檢查、過濾、路由請求到后端的各個具體微服務,并在請求進入和離開時執行各種邏輯。


核心特性:

基于 Spring Ecosystem:

與 Spring Boot、Spring WebFlux 等無縫集成,開發體驗良好。


響應式編程模型:

內部使用 Project Reactor(Mono, Flux),能夠高效處理高并發請求,性能優異。


高度可配置:

大部分配置可以通過 YAML/Properties 文件或 Spring Cloud Config 動態管理。


豐富的過濾功能:

提供多種內置過濾器,并支持自定義過濾器,實現靈活的請求處理邏輯。

為什么需要 Spring Cloud Gateway?(核心價值)

在微服務架構中,服務數量眾多,接口分散,直接暴露給外部客戶端會帶來諸多問題。API 網關的出現是為了解決這些痛點:

統一入口:

將所有微服務的入口統一到網關,簡化客戶端調用,隱藏內部服務細節。

路由轉發:

根據請求的 URL、Header 等信息,將請求智能地轉發到對應的微服務實例。

請求過濾與安全:

在請求到達具體微服務之前,進行身份認證、權限校驗、非法請求攔截等。

負載均衡:

可以在網關層對后端微服務實例進行簡單的負載均衡(通常與 Spring Cloud LoadBalancer 結合)。

限流熔斷:

保護后端微服務,防止因流量過大或異常請求導致服務崩潰(通常與 Sentinel、Resilience4j 等結合)。

日志監控:

統一記錄所有通過網關的請求和響應信息,便于監控和問題排查。

協議轉換:

可以在網關層進行協議轉換,例如將 HTTP 請求轉換為內部 RPC 調用。

Spring Cloud Gateway 的核心組件

Spring Cloud Gateway 的核心功能由以下幾個關鍵組件構成:

Route(路由):

路由是網關的基本構建塊。它包含一個唯一的 ID、一個目標 URI(指向后端微服務)、一組 Predicate(斷言)和一組 Filter(過濾器)。
?

ID: 路由的唯一標識符。
?

URI: 后端服務的地址,可以是 HTTP 也可以是其他協議。
?

Predicate: 這是一個 Java 8 的 Predicate。輸入類型是 Spring Framework 的 ServerWebExchange(包含請求和響應信息)。如果 Predicate 返回 true,則說明該請求匹配此路由。
?

Filter: 可以是 GatewayFilter 的實例,也可以是 GlobalFilter 的實例。Filter 用于在請求發送到后端之前或之后,對請求或響應進行修改或處理。

Predicate(斷言):

用于匹配 HTTP 請求的各個方面,如路徑(Path)、方法(Method)、頭信息(Header)、參數(Query)、來源 IP(RemoteAddr)等。只有當所有配置的 Predicate 都返回 true 時,請求才會匹配該路由。Spring Cloud Gateway 提供了多種內置 Predicate_FACTORY。

Filter(過濾器):

這是網關實現各種復雜邏輯的核心。Filter 可以分為兩類:


GatewayFilter: 作用于特定的路由。可以對請求路徑進行重寫、添加請求頭、設置超時時間、記錄日志等。
?

GlobalFilter: 作用于所有路由。通常用于實現橫切關注點,如認證、限流、監控等。Spring Cloud Gateway 提供了一些內置的 GlobalFilter。

Spring Cloud Gateway 的工作流程

一個典型的請求在 Spring Cloud Gateway 中的處理流程如下:

接收請求:

網關服務器接收到來自客戶端的 HTTP 請求。

路由匹配:

網關根據請求的屬性(如 URL 路徑、HTTP 方法等),遍歷所有已配置的路由。


斷言執行:

對于每個路由,執行其關聯的 Predicate。如果所有 Predicate 對該請求返回 true,則認為請求匹配了該路由。


執行前置過濾器:

執行該路由關聯的 GatewayFilter(如果有)。這些過濾器可以在請求發送到后端之前修改請求內容或執行其他邏輯(如認證)。


轉發請求:

將處理后的請求轉發到路由中指定的后端 URI。


接收響應:

網關接收到后端微服務返回的響應。


執行后置過濾器:

執行該路由關聯的 GatewayFilter(如果有)。這些過濾器可以在響應返回給客戶端之前修改響應內容或執行其他邏輯(如日志記錄)。


返回響應:

將最終處理后的響應返回給客戶端。

Spring Cloud Gateway 的主要功能


路由轉發:

核心功能,根據規則將請求路由到不同的微服務。


熔斷集成:

可以輕松集成 Hystrix 或 Resilience4j,當后端服務不可用時,返回降級響應。


請求限流:

可以基于各種維度(如 Key-Resolver 定義的鍵、IP、用戶等)對請求進行限流,防止系統過載。


安全認證:

可以通過過濾器實現 JWT 解析、OAuth2 認證等安全機制。


請求/響應修改:

使用 GatewayFilter 修改請求頭、請求參數、響應狀態碼、響應頭等。


日志記錄與監控:

通過 GlobalFilter 記錄請求耗時、參數、狀態碼等信息,用于監控和審計。


動態路由:

可以通過配置中心(如 Nacos, Consul, Spring Cloud Config)動態更新路由規則,無需重啟網關。


Spring Cloud Gateway 的應用場景

所有微服務對外暴露的 API 都通過 Gateway 進行統一管理。
需要集中進行認證、授權的場景。
需要對 API 進行限流、熔斷保護的場景。
需要統一記錄 API 調用日志和監控指標的場景。
需要對外提供統一的 API 版本管理或協議轉換的場景。

總結

????????Spring Cloud Gateway 是現代微服務架構中的核心組件,作為高性能API網關,它能集中處理路由、安全和限流等功能,簡化客戶端與微服務的交互,提升系統穩定性和安全性,是Spring Cloud微服務的首選網關方案。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/83496.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/83496.shtml
英文地址,請注明出處:http://en.pswp.cn/web/83496.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

slam--高斯分布

教程 博主解釋 高斯分布 高斯分布(Gaussian Distribution),又稱正態分布(Normal Distribution),是描述連續型隨機變量分布規律的一種概率分布。 (1) 一維高斯分布 μ:均值/數學期望&#xff0…

機器視覺標定講解

B站 :道傳科技上位機 觀看教程 一、什么是相機標定 相機標定(Camera Calibration)是指通過實驗或算法手段確定相機的內部參數(如焦距、主點坐標、畸變系數)和外部參數(如旋轉矩陣、平移向量&#xff0…

文件的秒傳、分片上傳以及斷點續傳 || Redis緩存減輕數據庫讀寫壓力

實現文件的秒傳、分片上傳以及斷點續傳的功能。使用 Redis 緩存上傳的文件分片信息減輕數據庫讀寫壓力,同時防止有人惡意攻擊服務器導致服務器磁盤爆滿無法提供服務。 🔍 詳解: 1. 實現文件的秒傳、分片上傳以及斷點續傳功能 秒傳&#xff0…

安全大模型智驅網絡和數據安全效能躍遷

從2023年ChatGPT開始,網絡安全行業就一直嘗試和AI大模型來結合,解決網絡安全的痛點,例如告警多,專家少,新的APT攻擊層出不窮,已有的基于規則的防護手段失靈,如何使用大模型的泛化能力來提升對未…

Android S - 恢復部分應用安裝

使用展銳提供的代碼編譯出來的固件&#xff0c;不包含DeskClock等應用。 之前也遇到過這個情況&#xff0c;只是時間太久忘記了&#xff0c;在這里再次記錄&#xff01; frameworks/native/data/etc/android.app.remove.xml<?xml version"1.0" encoding"ut…

android 之 CALL

一、組件職責與定位 組件所在進程核心職責關鍵特性CallsManagerTelecom系統進程通話狀態機核心&#xff1a;管理所有Call對象的生命周期&#xff08;創建、狀態更新、銷毀&#xff09;。監聽Call狀態變化并通知所有觀察者&#xff08;如InCallController&#xff09;。通過mLi…

Swift 6 學習筆記(二)The Basics

這篇筆記也是同步 Swift 6 官方教程中的第二篇 《The Basics》&#xff0c;這篇博客中的大部分內容在第一篇中已經涉及&#xff0c;這篇可以被認為是基礎類型的的補充篇&#xff0c;多了很多說明信息。 官方教學文檔 《The Basics》&#xff1a; Swift 提供了許多基本數據類型…

【PHP】BC Math 函數參考表

BC Math 函數參考表: 函數名描述語法bcadd兩個任意精度數字的加法bcadd($num1, $num2, [scale])bcsub兩個任意精度數字的減法bcsub($num1, $num2, [scale])bcmul兩個任意精度數字乘法bcmul($num1, $num2, [scale])bcdiv兩個任意精度數字除法bcdiv($num1, $num2, [scale])bcmod…

C# TAP異步編程(Task/async/await)總結

C#中有個很好用的東西&#xff0c;TAP異步編程&#xff08;Task-based Asynchronous Pattern&#xff09;&#xff0c;是目前C#推薦的異步編程模型。它基于 System.Threading.Tasks.Task 和 async/await 關鍵字&#xff0c;旨在簡化異步代碼的編寫、調試和維護。TAP 是現代 .NE…

達夢數據庫(DM)用戶名大小寫處理規則

達夢數據庫(DM)用戶名大小寫處理規則 達夢數據庫對用戶名的處理與PostgreSQL和Oracle有所不同&#xff0c;以下是相關說明&#xff1a; 一、基本規則 默認情況下&#xff1a;達夢數據庫區分用戶名大小寫 創建的用戶名會保留原始大小寫格式連接時必須使用相同的大小寫形式 …

黑馬點評面試話術

文章目錄 1.項目介紹2. 分布式登錄功能2.1 講講登錄的整個流程2.2 集群模式session下存儲用戶信息會有啥問題&#xff1f;2.3 為什么采用redis存儲用戶信息和驗證碼2.4 redis的存儲格式怎么樣的&#xff1f;2.5 為什么采用Hash結構存儲用戶信息2.6 為什么采用雙攔截器&#xff…

MTK APEX測光系統中各變量具體的計算方式探究

目錄 一、APEX測光系統介紹 二、MTK測光系統實例介紹 三、關于測光系統的一些疑問 一、APEX測光系統介紹 詳細內容可以參考; AE(自動曝光)系統簡介

K8S的基本概念

Kubernetes是一個開源的容器編排部署管理平臺,用于管理云平臺中多個主機上的容器化應用。Kubernetes的目標是讓部署容器化的應用簡單并且高效,Kubernetes提供了應用部署、規劃、更新、維護的一種機制。 對應用開發者而言,可以把Kubernetes看成一個集群操作系統。Kubernetes…

NLP學習路線圖(三十四): 命名實體識別(NER)

一、命名實體識別(NER)是什么? 命名實體識別(Named Entity Recognition, NER)是自然語言處理中的一項關鍵序列標注任務。其核心目標是從非結構化的文本中自動識別出特定類別的名詞性短語,并將其歸類到預定義的類別中。 核心目標:找到文本中提到的命名實體,并分類。 典…

大三自學筆記:探索Hyperlane框架的心路歷程

## Day 1&#xff1a;初識 Hyperlane 在 GitHub 上發現了 Hyperlane 這個 Rust HTTP 框架&#xff0c;立刻被它的性能數據吸引。官方文檔寫著&#xff1a; > "hyperlane 是一個高性能且輕量級的 Rust HTTP 框架&#xff0c;設計目標是簡化現代 Web 服務的開發&#xff…

Java大廠面試真題:謝飛機的技術挑戰

Java大廠面試真題&#xff1a;謝飛機的技術挑戰 場景一&#xff1a;電商場景 面試官&#xff1a;在電商項目中&#xff0c;我們通常需要處理大量的并發請求。請談談你對JVM調優的理解。 謝飛機&#xff1a;嗯&#xff0c;JVM調優主要是為了提高程序的性能和穩定性。比如&…

【Docker管理工具】安裝容器管理工具Oxker

【Docker管理工具】安裝Oxker容器管理工具 一、Oxker介紹1.1 Oxker簡介1.2 Oxker功能1.3 Docker介紹 二、本地環境介紹2.1 本地環境規劃2.2 本次實踐介紹 三、本地環境檢查3.1 檢查Docker服務狀態3.2 檢查Docker版本3.3 檢查docker compose 版本 四、下載Oxker鏡像五、安裝Oxke…

產品成本分析怎么做?從0到1搭建全生命周期分析框架!

目錄 一、為什么要做產品全生命周期成本分析&#xff1f; 1.資源再分配 2.動態成本校準 3.戰略決策支持 二、產品成本分析思路 1.建立全生命周期成本追蹤 2.聯動分析關鍵指標 3.定位問題產品線 4.資源效率四象限分配 三、產品成本分析指標 1.分投入成本&#xff1a;…

機器學習與深度學習20-數學優化

目錄 前文回顧1.梯度下降的基本原理2.什么是損失函數&#xff1f;3.隨機梯度下降和小批量梯度下降4.什么是學習率5.優化算法中的收斂性6.常用的數學優化算法 前文回顧 上一篇文章鏈接&#xff1a;地址 1.梯度下降的基本原理 梯度下降&#xff08;Gradient Descent&#xff0…

Photoshop 2025 性能配置全攻略:硬件選購與軟件優化指南

一、硬件配置核心建議 根據Adobe官方要求及實測反饋&#xff0c;Photoshop 2025對硬件的需求側重CPU、內存和存儲&#xff0c;顯卡需求相對寬松&#xff0c;但特定功能&#xff08;如AI濾鏡、3D渲染&#xff09;需關注顯卡性能。 硬件類別最低配置推薦配置&#xff08;流暢運…