深入剖析網(wǎng)關(guān)gateway原理
一 背景
微服務(wù)架構(gòu)提供一種簡單有效的統(tǒng)一的 API入口
負責(zé)服務(wù)請求路由、組合及協(xié)議轉(zhuǎn)換,并且基于 Filter 鏈的方式提供了權(quán)限認證,監(jiān)控、限流等功能。
- 優(yōu)點:
性能強勁:是第一代網(wǎng)關(guān)Zuul的1.6倍。
功能強大:內(nèi)置了很多實用的功能,例如轉(zhuǎn)發(fā)、監(jiān)控、限流等設(shè)計優(yōu)雅,容易擴展。
- 缺點:
依賴Netty與WebFlux(Spring5.0),不是傳統(tǒng)的Servlet編程模型(Spring MVC就是基于此模型實現(xiàn)),學(xué)習(xí)成本高。需要Spring Boot 2.0及以上的版本,才支持
二需要的依賴:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency>
添加配置文件及說明:
server:
port: 9000
spring:
application:
name: sca-gateway
cloud:
gateway:
routes: #配置網(wǎng)關(guān)路由規(guī)則
- id: route01 #路由id,自己指定一個唯一值即可
uri: http://localhost:8081/ #網(wǎng)關(guān)幫我們轉(zhuǎn)發(fā)的url
predicates: ###斷言(謂此):匹配請求規(guī)則
- Path=/nacos/provider/echo/** #請求路徑定義,此路徑對應(yīng)uri中的資源
filters: ##網(wǎng)關(guān)過濾器,用于對謂詞中的內(nèi)容進行判斷分析以及處理
- StripPrefix=1 #轉(zhuǎn)發(fā)之前去掉path中第一層路徑,例如nacos
說明
路由(Route) 是 gateway 中最基本的組件之一
表示一個具體的路由信息載體。
主要定義了下面的幾個信息:
id
,路由標識符,區(qū)別于其他 Route。
uri
,路由指向的目的地 uri,即客戶端請求最終被轉(zhuǎn)發(fā)到的微服務(wù)。
predicate
,斷言(謂詞)的作用是進行條件判斷,只有斷言都返回真,才會執(zhí)行路由。
filter
,過濾器用于修改請求和響應(yīng)信息。
什么是網(wǎng)關(guān)?
服務(wù)訪問(流量)的一個入口,類似生活中的“海關(guān)“
為什么使用網(wǎng)關(guān)?
服務(wù)安全,統(tǒng)一服務(wù)入口管理,負載均衡,限流,鑒權(quán)
Spring Cloud Gateway 應(yīng)用的初始構(gòu)建過程(添加依賴,配置
Gateway 服務(wù)的啟動底層是通過誰去實現(xiàn)的?
Netty網(wǎng)絡(luò)編程框架-ServerSocket
Gateway 服務(wù)做請求轉(zhuǎn)發(fā)時一定要在注冊中心進行注冊嗎?
不一定,可以直接通過遠端url進行服務(wù)訪問
三 負載均衡
需要的porm文件是nacos的配置和包,是通過nacos配置中心,尋找實例。
網(wǎng)關(guān)層面是如何實現(xiàn)負載均衡的?
通過服務(wù)名去查找具體的服務(wù)實例
網(wǎng)關(guān)層面是如何通過服務(wù)名查找服務(wù)實例的?
Ribbon
你了解Ribbon中的哪些負載均衡算法?
輪詢,權(quán)重,hash,……可通過IRule接口進行查看分析
網(wǎng)關(guān)進行請求轉(zhuǎn)發(fā)的流程是怎樣,有哪些關(guān)鍵對象?
XxxHandlerMapping,Handler,。。。
網(wǎng)關(guān)層面服務(wù)的映射方式怎樣的?
謂詞-path,…,服務(wù)名/服務(wù)實例
網(wǎng)關(guān)層如何記錄服務(wù)的映射?
通過map,并要考慮讀寫鎖的應(yīng)用
下圖是定義在網(wǎng)關(guān)層面定義全局過濾器
網(wǎng)關(guān)(Gateway)
誕生的背景?
第一:統(tǒng)一微服務(wù)訪問的入口,
第二:對系統(tǒng)服務(wù)進行保護,
第三進行統(tǒng)一的認證,授權(quán),限流
網(wǎng)關(guān)的選型?
Netifix Zuul,Spring Cloud Gateway,…
Spring Cloud Gateway的入門實現(xiàn)
添加依賴,路由配置,啟動類
Spring Cloud Gateway中的負載均衡?
網(wǎng)關(guān)服務(wù)注冊,服務(wù)的發(fā)現(xiàn),基于uri:lb://服務(wù)id方式訪問具體服務(wù)實例
Spring Cloud Gateway中的斷言配置?
掌握常用幾個就可,用時可以通過搜索引擎去查
Spring Cloud Gateway中的過濾器配置?
掌握過濾器中的兩大類型-局部和全局
Spring Cloud Gateway中的限流設(shè)計?
Sentinel
Gateway在互聯(lián)網(wǎng)架構(gòu)中的位置?
nginx->gateway–>微服務(wù)–>微服務(wù)
Gateway底層負載均衡的實現(xiàn)?
Ribbon
Gateway應(yīng)用過程中設(shè)計的主要概念?
路由id,路由uri,斷言,過濾器
Gateway中你做過哪些斷言配置?
after,header,path,cookie,…
Gateway中你用的過濾器有哪些?
添加前綴,去掉前綴,添加請求頭,…,負載均衡,…
以上就是深入理解網(wǎng)關(guān)gateway的詳細內(nèi)容,更多關(guān)于網(wǎng)關(guān)gateway的資料請關(guān)注腳本之家其它相關(guān)文章!
- SpringCloud超詳細講解微服務(wù)網(wǎng)關(guān)Gateway
- 網(wǎng)關(guān)Gateway過濾器的使用詳解
- SpringCloud?GateWay網(wǎng)關(guān)示例代碼詳解
- springcloud gateway網(wǎng)關(guān)服務(wù)啟動報錯的解決
- springcloud整合gateway實現(xiàn)網(wǎng)關(guān)全局過濾器功能
- springboot整合gateway實現(xiàn)網(wǎng)關(guān)功能的示例代碼
- springcloud整合gateway實現(xiàn)網(wǎng)關(guān)的示例代碼
- Gateway網(wǎng)關(guān)工作原理及使用方法
- Gateway網(wǎng)關(guān)源碼解析
相關(guān)文章
git可視化工具Sourcetree使用全攻略(git沖突解決)
本文主要介紹了git可視化工具Sourcetree使用全攻略,文中通過圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01在Visual Studio Code環(huán)境中使用SVN的方案
這篇文章主要介紹了在Visual Studio Code環(huán)境中使用SVN的方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04踩坑記錄關(guān)于"authentication failed "的解決方法
今天給大家分享我的踩坑記錄關(guān)于報錯 authentication failed,這個報錯的原因是“身份驗證失敗”,本文給大家分享我的解決方法,感興趣的朋友跟隨小編一起看看吧2023-01-01