在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

我們的微服務中為什么需要網關?

jf_78858299 ? 來源:江南一點雨 ? 作者:江南一點雨 ? 2023-05-04 17:38 ? 次閱讀

玩過微服務的小伙伴對 Spring Cloud 中的的 Spring Cloud Gateway 多多少少都有一些了解,松哥之前既寫過相關的文章,也錄過相關的視頻跟小伙伴們介紹 Spring Cloud Gateway,不過在之前的介紹中,我可能更加側重于跟小伙伴們介紹 Spring Cloud Gateway 的用法,對于我們在微服務中為什么要使用 Spring Cloud Gateway 可能沒有和大家仔細分析過,最近年前得空,我們來一起探討一下這個話題

說起 Spring Cloud Gateway 的使用場景,我相信很多小伙伴都能夠脫口而出認證二字,確實,在網關中完成認證操作,確實是 Gateway 的重要使用場景之一,然而并不是唯一的使用場景。在微服務中使用網關的好處可太多了,今天我們就來逐一分析一下。

1. 請求路由

首先,Gateway 的第一個重要特點就是對請求進行路由,根據不同的請求頭、請求參數、請求路徑等,將請求路由到不同的服務上。

從這個角度來說,Spring Cloud Gateway 所扮演的角色與 Nginx 這一類的反向代理服務器類似,之前就有小伙伴問我,Spring Cloud Gateway 和 Nginx 有啥區別?能不能用 Nginx 代替 Spring Cloud Gateway?其實,你要是單純的只看請求路由這一個功能,那么確實可以用 Nginx 代替 Spring Cloud Gateway,然而在實際開發中,我們 Spring Cloud Gateway 所承擔的責任可不僅僅是請求路由轉發,還有其他方面的功能(后文有介紹),其他的功能用 Nginx 做起來就有一些吃力了。

如果用 Spring Cloud Gateway 做請求路由轉發,我們可以畫一張簡單的架構圖,如下:

圖片

2. API 組合

網關的另一個作用就是可以實現 API 的組合。當然這個一般來說需要一些代碼開發,單純的配置一般來說是無法實現需求的。

先來說說沒有網關的時候我們可能會存在什么情況。

以松哥最近在錄的 TienChin 項目視頻為例,我有一個活動管理服務,也就是健身房定期會做一些促銷活動,促銷活動往往又分為線上或者線下,線上線下又繼續細分為不同的渠道,如小紅書推廣、抖音推廣、公眾號推廣、線下地推等等,所以,假設我現在要做一個修改活動的功能,那么當我選中一條記錄,點擊修改按鈕,此時,客戶端至少要發送兩條請求:

  1. 首先根據我選中的記錄的 ID,去服務端查詢這條記錄當前的值。
  2. 去查詢活動渠道,因為活動記錄中保存的是渠道 ID,我們得去查詢所有的渠道信息,然后根據渠道信息才能顯示出來具體的渠道。

畫一張簡單的架構圖,類似下面這樣:

圖片

如上圖所示,如果你是一個微服務項目,但是卻沒有網關,那么前端用戶一個點擊事件你可能需要在后臺發出 N 多個操作。并且,這 N 多個操作還都屬于互聯網請求,小伙伴們知道,互聯網請求的一個特點就是低帶寬和高延遲,連著發送兩個甚至多個請求,用戶體驗肯定不佳。

像這樣的場景,如果我們有網關,就可以在網關中提供一個粗粒度的 API,這樣,前端只需要發送一個請求到網關,然后又網關去發送多個請求,從不同的微服務上把數據拿回來再統一返回給前端。如下圖:

圖片

可能有小伙伴會說,你這個請求還是發送了兩次,不一定省時間。其實不然!網關往往和微服務處于同一個局域網之中,相比于互聯網,局域網的通信延遲就要小很多了。

這是網關的第二個作用。

3. 協議切換

通過網關我們還能實現請求協議的切換。

一般來說我們暴露給外部的服務都是 RESTful API,但是,有時候考慮到服務內部的執行效率問題,我們可以在服務內容實用其他更高效的協議,通過服務網關就可以實現這個切換。

當然,這并不是必須的,只是說,當我們在微服務中使用了網關之后,如果想做請求協議的切換,就會比較容易實現。

4. 限流

微服務中的限流操作,一個比較好的限流位置就是網關了,我們可以利用 Alibaba 的 Sentinel 結合 Spring Cloud Gateway 就可以非常方便的實現限流操作。

5. 請求分析

如果我們需要統計某一個請求的細節,如執行時間、參數等信息,那么這個操作也可以在網關上來做,在網關上對請求進行詳細分析。

6. 緩存

對于一些不經常變化的數據,我們可以設置緩存時間,在網關上直接進行檢查,如果緩存還沒失效,直接響應 304,讓從客戶端讀取即可。

7. 認證

這個是大家比較熟悉的了。

一般來說,我們可能會有單獨的認證服務,當認證請求到達網關之后,網關將之轉發到相應的認證服務上去完成認證。對于非認證請求,到達網關的時候需要校驗這個請求是否有進行認證,這個校驗就沒必要轉發了,可以直接在網關上進行校驗。

松哥舉個簡單的例子,也是我自己之前在項目中的一個實踐經驗,就是用戶登錄請求到達網關之后,網關將之轉發到專門的認證服務上去(由于認證的過程往往需要操作用戶數據庫,所以不要在網關上做認證,轉發到專門的認證服務上去做認證操作),認證成功之后,返回 JWT 字符串給前端。下一次,請求帶著 JWT 字符串來到網關,可以直接在網關上校驗 JWT 字符串,這個校驗本身比較容易,又不需要連接數據庫,所以可以在網關上完成,校驗成功之后,將校驗得到的用戶信息放到請求頭中,然后再轉發請求到不同的微服務上,這樣在各個微服務上,就知道請求的用戶到底是誰了。

8. 記錄請求日志

如果需要記錄請求日志,網關也是一個好地方。

網關能干這么多事,so,想要用 Nginx 代替 Spring Cloud Gateway 顯然不太現實。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • spring
    +關注

    關注

    0

    文章

    340

    瀏覽量

    14343
  • 微服務
    +關注

    關注

    0

    文章

    137

    瀏覽量

    7348
  • Cloud
    +關注

    關注

    0

    文章

    68

    瀏覽量

    5355
收藏 人收藏

    評論

    相關推薦

    微服務架構和CQRS架構基本概念介紹

    微服務架構現在很熱,到處可以看到各大互聯網公司的微服務實踐的分享總結。但是,我今天的分享和微服務沒有關系,希望可以帶給大家一些新的東西。如果一定要說微服務和CQRS架構的關系,那我覺得
    發表于 05-22 09:03

    微服務網關gateway的相關資料推薦

    目錄微服務網關 gateway 概述[路由器網關 Zuul 概述]嵌入式 Zuul 反向代理微服務網關 gateway 概述1、想象一下一個購物應用程序的產品詳情頁面展示了指定商品的信息:2、若是
    發表于 12-23 08:19

    微服務優勢_微服務架構的好處與不足

    我們需要根據項目業務和團隊情況來選擇合適的架構。 構建復雜的應用真的是非常困難。單體式的架構更適合輕量級的簡單應用。如果你用它來開發復雜應用,那真的會很糟糕。微服務架構模式可以用來構建復雜應用,當然,這種架構模型也有自己的缺點
    發表于 02-23 11:24 ?4394次閱讀

    什么是微服務和容器?微服務和容器的作用是什么

    微服務是將應用程序拆分為多個服務的一種架構類型,這些服務具備構成整個應用程序的細粒度功能。每個微服務將具備針對您的應用程序的不同邏輯功能。與應用程序的所有組件和功能都在單個實例
    的頭像 發表于 01-13 10:54 ?3.2w次閱讀
    什么是<b class='flag-5'>微服務</b>和容器?<b class='flag-5'>微服務</b>和容器的作用是什么

    什么是微服務架構_微服務架構的優缺點及應用

    什么是微服務架構 簡單地說,微服務是系統架構上的一種設計風格, 它的主旨是將一個原本獨立的系統拆分成多個小型服務,這些小型服務都在各自獨立的進程
    的頭像 發表于 06-02 10:03 ?1.7w次閱讀
    什么是<b class='flag-5'>微服務</b>架構_<b class='flag-5'>微服務</b>架構的優缺點及應用

    微服務架構有哪些_微服務架構設計模式

    小伙伴們知道常用的微服務架構框架有哪些嗎?上回我們介紹了一些常用的微服務架構設計模式,這次我們就來了解一下一些常用的微服務架構框架吧。
    的頭像 發表于 05-17 17:06 ?2.9w次閱讀
    <b class='flag-5'>微服務</b>架構有哪些_<b class='flag-5'>微服務</b>架構設計模式

    使用FastAPI構建機器學習微服務

    使用微服務架構部署應用程序有幾個優點:更容易進行主系統集成、更簡單的測試和可重用的代碼組件。 FastAPI 最近已成為 Python 中用于開發微服務的最流行的 web 框架之一。 FastAPI
    的頭像 發表于 10-10 16:44 ?2212次閱讀
    使用FastAPI構建機器學習<b class='flag-5'>微服務</b>

    華為云服務治理?| 微服務常見故障模式

    ),微服務可觀測性能力(日志、監控、告警等)構建等。 華為云微服務治理專題主要探討運行時治理。我們首先從常見的故障模式開始。 擴容縮容 在擴容場景下,新啟動的微服務實例
    的頭像 發表于 01-18 17:44 ?774次閱讀

    微服務架構服務之間如何互相調用呢?

    微服務架構需要調用很多服務才能完成一項功能。服務之間如何互相調用就變成微服務架構
    的頭像 發表于 01-31 09:46 ?2208次閱讀

    讓遠程成為本地,微服務后端開發的福音

    如果我們想與其他微服務進行聯動調試,則需要在本地環境啟動對應的微服務模塊,這可能需要大量的配置
    的頭像 發表于 02-09 11:12 ?800次閱讀

    什么是微服務架構?

    在Medium,我們的技術堆棧始于2012年的單片Node.js應用程序。我們已經構建了幾個衛星服務,但我們還沒有制定一個系統地采用微服務
    的頭像 發表于 02-24 11:15 ?1343次閱讀
    什么是<b class='flag-5'>微服務</b>架構?

    微服務為什么要用到API網關

    微服務架構(通常簡稱為微服務)是指開發應用所用的一種架構形式。通過微服務,可將大型應用分解成多個獨立的組件,其中每個組件都有各自的責任領域。
    的頭像 發表于 04-14 09:17 ?746次閱讀

    基于Traefik自研的微服務網關

    數據平面主要功能是接入用戶的HTTP請求和微服務被拆分后的聚合。使用微服務網關統一對外暴露后端服務的API和契約,路由和過濾功能正是網關的核心能力模塊。另外,
    的頭像 發表于 04-16 11:08 ?2635次閱讀

    Spring Cloud :打造可擴展的微服務網關

    Spring Cloud Gateway是一個基于Spring Framework 5和Project Reactor的反應式編程模型的微服務網關。它提供了豐富的功能,包括動態路由、請求限流、集成安全性等,使其成為構建微服務架構的理想選擇。
    的頭像 發表于 10-22 10:03 ?527次閱讀
    Spring Cloud :打造可擴展的<b class='flag-5'>微服務網關</b>

    設計微服務架構的原則

    微服務是一種軟件架構策略,有利于改善整體性能和可擴展性。你可能會想,我的團隊需不需要采用微服務,設計微服務架構有哪些原則?本文會給你一些靈感。文章速覽:
    的頭像 發表于 11-26 08:05 ?596次閱讀
    設計<b class='flag-5'>微服務</b>架構的原則
    主站蜘蛛池模板: 2021最新久久久视精品爱 | 亚洲羞羞裸色私人影院| 精品亚洲成a人片在线观看| 亚洲不卡视频| 日本一道dvd在线中文字幕| 在线jlzzjlzz免费播放| 日xxxx| 婷婷资源| 成人性色生活影片| 操干干| 特别毛片| 一级片影院| 亚洲免费一区二区| 欧美色伊人| 人日人操| 一区二区三区影院| 国产精品四虎在线观看免费| 成人黄色免费网站| 天堂网2021天堂手机版| 91九色成人| 在线婷婷| 美女黄色在线看| 九九精品在线观看| 亚洲成人三级| 9797色| 日本高清视频不卡| 毛片的网站| 51xtv成人影院| 日本三级成人午夜视频网| 天天干天天干天天天天天天爽| 久久久久久午夜精品| 黄色视屏免费看| 奇米影视亚洲四色8888| 日本免费黄色| 激情五月激情综合网| 五色网| 天天干天天操天天添| 伊人狠狠丁香婷婷综合色| www.色五月.com| 色综合视频一区二区三区| 狠狠色狠狠色综合日日不卡|