SpringCloud之Gateway基礎認識-服務網關

0、Gateway基本知識

  1. Gateway 是在 Spring 生態系統之上構建的 API 網關服務,基于 Spring ,Spring Boot 和 Project?Reactor 等技術。

  2. Gateway 旨在提供一種簡單而有效的方式來對 API 進行由,以及提供一些強大的過濾器功能,例如∶熔斷、限流、重試等。

官網:

https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/

先認識網關:

在沒有網關服務之前:

有了網關服務之后:

網關服務核心功能?

  1. ??統一調用接口??

    • 對外提供統一入口,根據請求URL路徑轉發到對應的后端服務
    • ??配置化路由??:通過配置即可實現斷言(匹配規則)和過濾
  2. ??流量治理與安全??

    • 負載均衡(商品服務集群多實例場景)
    • 限流(防止刷接口)
    • 熔斷(服務異常時快速失敗)
    • 鑒權(攔截非法請求)
    • 日志監控
    • 反向代理

1、網絡拓撲圖

?

2、Gateway 和 Zuul 區別?

  1. SpringCloud Gateway 作為 Spring Cloud 生態系統中的網關,目標是替代 Zuul
  2. SpringCloud Gateway 是基于 Spring WebFlux 框架實現的
  3. Spring WebFlux 框架底層則使用了高性能的 Reactor 模式通信框架 Netty提升了網關性能

3、Gateway 特性

Spring Cloud Gateway 基于 Spring Framework(支持 Spring WebFlux)Project Reactor Spring Boot 進行構建,具有如下特性:

  • 動態路由:根據url動態的決定調用的哪個遠程地址
  • 可以對路由指定 Predicate(斷言)和Filter(過濾器):判斷這個請求能不能處理,過濾器用于在請求被路由到后端服務 ??前(Pre)?? 或 ??后(Post)?? 對請求或響應進行修改或增強。
  • 集成Hystrix的斷路器功能:熔斷
  • 集成 Spring Cloud 服務發現功能:從 Eureka Server 獲取遠程Service地址
  • 請求限流功能:
  • 支持路徑重寫:根據業務需求進行重寫

?4、Gateway 核心組件

1、Route(路由):

路由是構建網關的基本模塊,它由 ID,目標 URI,一系列的斷言和過濾器組成,如果斷言為 true 則匹配該路由

2、Predicate(斷言):?

對 HTTP 請求中的所有內容(例如請求頭或請求參數)進行匹配,如果請求與斷言相匹配則進行路由。

簡單舉例, 比如配置路徑,?? - Path=/member/get/**? ==>斷言路徑相匹配的進行路由轉發, 如果Http請求的路徑不匹配, 則不進行路由轉發.

3、filters(過濾器):

使用過濾器,可以在請求被路由或者之對請求進行處理

你可以理解成, 在對 Http 請求斷言匹配成功后, 可以通過網關的過濾機制, 對 Http 請求處理

簡單舉例:

- AddRequestParameter=color, blue #過濾器在匹配的請求頭加上一對請求頭,名稱為color 值為blue, 比如原來的http 請求是 http://localhost:10000/member/get/1

==過濾器處理=> 統一攜帶參數:http://localhost:10000/member/get/1?color=blue

5、流程梳理?

  1. 客戶端向 Spring Cloud Gateway 發出請求。然后在 Gateway Handler Mapping 中找到與請求相匹配的路由,將其發送到 Gateway Web Handler

  2. Handler 再通過指定的過濾器鏈來將請求發送到我們實際的服務執行業務邏輯,然后返回。

  3. 過濾器之間用虛線分開是因為過濾器可能會在發送代理請求之前("pre")或之后("post")執行業務邏輯。

  4. Filter 在"pre"類型的過濾器可以做參數校驗、權限校驗、流量監控、日志輸出、協議轉換

  5. 在"post"類型的過濾器中可以做響應內容、響應頭的修改,日志的輸出,流量監控等有著非常重要的作用。

紅色方框為一個過濾器?

一句話說:路由轉發+執行過濾器鏈

路由轉發=發送到后端服務之前=‘pre’執行過后

6、其他

后續服務網關代替消費端,被視為Erueka Client

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

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

相關文章

Redis掃盲

Redis 緩存中間件 基礎篇 鍵值數據庫 key Value 是NoSql數據庫 非結構化、無關聯的、非SQL、BASE(無法滿足ACID) 命令執行是單線程,符合原子性。 低延遲、速度塊(基于內存,IO多路復用,良好的編碼&am…

【FMMT】基于模糊多模態變壓器模型的個性化情感分析

遇到很難的文獻看不懂,不應該感到氣餒,應該激動,因為外審估計也看不太懂,那么學明白了可以嚇唬他 缺陷一:輸入依賴性與上下文建模不足?? ??缺陷描述??: 傳統自注意力機制缺乏因果關系,難以捕捉序列歷史背景多模態數據間的復雜依賴關系未被充分建模CNN/RNN類模型在…

Qt Creator 配置 Android 編譯環境

Qt Creator 配置 Android 編譯環境 環境配置流程下載JDK修改Qt Creator默認android配置文件修改sdk_definitions.json配置修改的內容 Qt Creator配置 異常處理刪除提示占用編譯報錯連接安卓機調試APP閃退無法進入 debug 斷點 環境 Qt Creator 版本 qtcreator-16.0.1Win10 嗯, …

使用聊天模型和提示模板構建一個簡單的 LLM 應用程序

官方教程 官方案例 在上面的鏈接注冊后,請確保設置您的環境變量以開始記錄追蹤 export LANGSMITH_TRACING"true" export LANGSMITH_API_KEY"..."或者,如果在筆記本中,您可以使用以下命令設置它們 import getpass imp…

React vs Vue:點擊外部事件處理的對比與實現

React vs Vue:點擊外部事件處理的對比與實現 在 Web 應用中,“點擊外部事件監聽”是一種常見需求,典型應用如:點擊彈窗外部關閉彈窗、點擊下拉菜單外關閉菜單。雖然在 React 和 Vue 中實現的原理類似——都是通過監聽 document 的…

3335. 字符串轉換后的長度 I

3335. 字符串轉換后的長度 I class Solution:def lengthAfterTransformations(self, s: str, t: int) -> int:# 大質數mod 10**97# 創建一個長度為26的數組cnt,對應26個小寫字母cnt [0]*26# 計算出s中26個字符分別有多少個for ch in s:cnt[ord(ch)-ord(a)] 1f…

Java詳解LeetCode 熱題 100(15):LeetCode 189. 輪轉數組(Rotate Array)詳解

文章目錄 1. 題目描述2. 理解題目3. 解法一:使用額外數組3.1 思路3.2 Java代碼實現3.3 代碼詳解3.4 復雜度分析3.5 適用場景 4. 解法二:環狀替換法(原地算法)4.1 思路4.2 Java代碼實現4.3 代碼詳解4.4 復雜度分析4.5 陷阱與注意事…

數據治理域——日志數據采集設計

摘要 本文主要介紹了Web頁面端日志采集的設計。首先闡述了頁面瀏覽日志采集,包括客戶端日志采集的實現方式、采集內容及技術亮點。接著介紹了無線客戶端端日志采集,包括UserTrack的核心設計、移動端與瀏覽器端采集差異以及典型應用場景崩潰分析。最后探…

PYTHON訓練營DAY24

# SO代碼我們的感情好像跳樓機 # 元組創建時,可以省略括號:my_tuple4 10, 20, thirty # 字符串要加“ ” 元組 一、創建 my_tuple1 (1, 2, 3) my_tuple2 (a, b, c) my_tuple3 (1, hello, 3.14, [4, 5]) # 可以包含不同類型的元素 print(my_tupl…

超聲波傳感器模塊

歡迎來到 破曉的歷程的 博客 ??不負時光,不負己?? 文章目錄 1.HC-SR04介紹2.HC-SR04原理介紹2.1原理概述3.2原理詳解 4驅動代碼編寫4.1寫前思考4.2硬件連線 5.總結hcsr04.hhcsr04.c 1.HC-SR04介紹 超聲波傳感器有很多種類的型號:HC-SR04、UC-025、…

《Effective Python》第2章 字符串和切片操作——深入理解Python 中的字符數據類型(bytes 與 str)的差異

引言 本篇博客基于學習《Effective Python》第三版 Chapter 2: Strings and Slicing 中的 Item 10: Know the Differences Between bytes and str 的總結與延伸。在 Python 編程中,字符串處理是幾乎每個開發者都會頻繁接觸的基礎操作。然而,Python 中的…

py7zr解壓文件時報錯CrcError(crc32, f.crc32, f.filename)

報錯信息 Traceback (most recent call last):File "/home/hp/project/test/file_util.py", line 130, in extract_archive_7zarchive.extract(targets[fixed_file], pathoutput_dir, recursiveTrue)File "/home/hp/miniconda3/envs/celery/lib/python3.10/sit…

物理:由基本粒子組成的個體能否提煉和重組?

個體差異源于基本粒子組合的復雜性與隨機性,這一假設若成立,確實可能為生物醫學帶來革命性突破——但需要突破技術、理論與系統層級的多重壁壘。以下從科學邏輯與技術路徑展開分析: 一、隨機組合中的共性與穩定結構 1. 自然界的自組織規律 涌現性(Emergence):盡管粒子組…

動態路由EIGRP的配置

動態路由EIGRP的配置 動態路由EIGRP:增強內部網關協議 為何收斂快、不成環? 路由計算的無環路和路由的收斂速度是路由計算的重要指標。EIGRP協議由于使用了DUAL算法,使得EIGRP協議在路由計算中不可能有環路路由產生,同時路由計…

組合問題(多條件)

39. 組合總和 - 力扣&#xff08;LeetCode&#xff09; class Solution { private:vector<vector<int>>result;vector<int>path;void backtracking(vector<int>& candidates, int target,int sum,int startIndex){if(sum>target){return;}if(…

SimScape物理建模實例2--帶控制的單質量彈簧阻尼系統

模型下載&#xff1a; 基于simscape&#xff0c;單質量系統帶位置控制資源-CSDN文庫 在實例1中&#xff0c;我們搭建了不帶控制的單質量彈簧阻尼系統&#xff0c;該系統沒有外界力量介入&#xff0c;只有彈簧的初始彈力&#xff0c;帶著彈簧使勁彈來彈去。 SimScape物理建模實…

OpenAI Text 模型與 Chat 模型調用實戰指南:從基礎配置到創意花店命名

在 AI 應用開發的浪潮中&#xff0c;OpenAI 的大語言模型成為開發者實現創新功能的得力工具。其中&#xff0c;Text 模型和 Chat 模型作為核心接口&#xff0c;被廣泛應用于文本生成、對話交互等場景。本文將以 “為花店起名” 為實際需求&#xff0c;手把手教你如何安全調用這…

網頁常見水印實現方式

文章目錄 1 明水印技術實現1.1 DOM覆蓋方案1.2 Canvas動態渲染1.3 CSS偽元素方案2 暗水印技術解析2.1 空域LSB算法2.2 頻域傅里葉變換3 防篡改機制設計3.1 MutationObserver防護3.2 Canvas指紋追蹤4 前后端實現對比5 攻防博弈深度分析5.1 常見破解手段5.2 進階防御策略6 選型近…

現代化QML組件開發教程

現代化QML組件開發教程 目錄 QML基礎介紹QML項目結構基本組件詳解自定義組件開發狀態與過渡高級主題最佳實踐 QML基礎介紹 什么是QML QML (Qt Meta Language) 是一種聲明式語言&#xff0c;專為用戶界面設計而創建。它是Qt框架的一部分&#xff0c;讓開發者能夠創建流暢、…

C/C++ 程序執行的主要過程

預處理&#xff08;Preprocessing&#xff09; 任務&#xff1a; 處理源代碼中以 # 開頭的預處理指令&#xff0c;包括&#xff1a; 頭文件包含&#xff08;#include&#xff09;&#xff1a;將頭文件&#xff08;如 stdio.h&#xff09;的內容直接插入到源文件中。宏替換&…