成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

首先根據我選中的記錄的 ID,去服務端查詢這條記錄當前的值。

去查詢活動渠道,因為活動記錄中保存的是渠道 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 顯然不太現實。

責任編輯:武曉燕 來源: 江南一點雨
相關推薦

2016-01-20 09:54:51

微服務架構設計SOA

2024-10-29 08:44:18

2020-01-18 09:35:03

微服務團隊架構

2022-05-25 08:00:00

開發微服務企業

2022-03-29 08:30:15

微服務架構單體架構

2022-01-10 13:06:13

微服務API網關

2022-12-01 14:43:56

物聯網智慧城市

2020-04-06 14:45:22

云計算邊緣計算網絡

2025-06-24 02:00:00

5G-A運營商基站

2018-09-14 18:00:29

無損網絡

2023-09-05 09:49:03

2022-08-26 08:00:19

企業架構IT

2019-08-05 08:42:37

物聯網IOT技術

2021-08-03 07:21:14

架構微服務開發

2020-07-10 15:18:12

微服務設計模型

2020-02-04 14:41:37

微服務設計DDD

2018-05-30 14:49:51

編程語言API語法

2020-12-04 09:11:50

CTOAPI網關

2015-08-03 10:40:45

動效設計優勢

2015-11-11 13:35:15

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品在线播放 | 亚洲精品1 | 午夜免费观看体验区 | 精品福利在线视频 | 天天干天天草 | 亚洲欧美日韩一区二区 | 91麻豆精品国产91久久久更新资源速度超快 | 中文字幕一区二区不卡 | 天天色图 | 久久久久国产精品午夜一区 | 99精品欧美一区二区三区综合在线 | 国产高清亚洲 | 中文字幕不卡在线88 | 国产精品久久精品 | 久久99视频精品 | 国产麻豆乱码精品一区二区三区 | 亚洲福利在线视频 | 久操国产 | 黄色一级大片在线免费看产 | 亚洲成人自拍 | 日本免费在线看 | 一级一级一级毛片 | 午夜精品一区二区三区在线观看 | 华丽的挑战在线观看 | 人干人人 | 久色视频在线 | 美女视频一区 | 成人中文网 | 99久久电影 | 一区二区三区欧美在线 | 蜜臀久久99精品久久久久野外 | 欧美天堂| av网站在线播放 | 欧美极品在线观看 | 久久久一区二区三区四区 | 久热国产在线 | 手机av在线 | 国产精品国产亚洲精品看不卡15 | 精品一区二区三区不卡 | 欧美激情综合五月色丁香小说 | 国产精品99久久久久久久久 |