女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

    瀏覽量

    15068
  • 微服務
    +關注

    關注

    0

    文章

    145

    瀏覽量

    7742
  • Cloud
    +關注

    關注

    0

    文章

    73

    瀏覽量

    5658
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

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

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

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

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

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

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

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

    什么是微服務架構 簡單地說,微服務是系統架構上的一種設計風格, 它的主旨是將一個原本獨立的系統拆分成多個小型服務,這些小型服務都在各自獨立的進程
    的頭像 發表于 06-02 10:03 ?1.8w次閱讀
    什么是<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 ?2634次閱讀
    使用FastAPI構建機器學習<b class='flag-5'>微服務</b>

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

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

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

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

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

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

    什么是微服務架構?

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

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

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

    基于Traefik自研的微服務網關

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

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

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

    設計微服務架構的原則

    微服務是一種軟件架構策略,有利于改善整體性能和可擴展性。你可能會想,我的團隊需不需要采用微服務,設計微服務架構有哪些原則?本文會給你一些靈感。文章速覽:
    的頭像 發表于 11-26 08:05 ?918次閱讀
    設計<b class='flag-5'>微服務</b>架構的原則