1.網關Gateway
1.1什么是網關Gateway ?
服務網關 = 路由轉發+過濾器
路由轉發:接收一切外界請求,轉發到后端的微服務上去,
過濾器:在服務網關中可以完成一系列的橫切功能,例如權限校驗、限流、監控等,都能通過過濾器完成,(其實路由轉發也是通過過濾器完成的)
網關本質上要提供一個各種服務訪問的入口,并提供服務接收并轉發所有內外部的客戶端呼叫,還有就是權限認證,限流控制等等,

1.2為什么要使用網關?
將權限校驗的邏輯寫在網關的過濾器中,后端服務不需要關注權限校驗的代碼,所以服務的jar包中也不會引入權限校驗的邏輯,不會增加jar包大小,如果想修改權限校驗的邏輯,只需要修改網關中的權限校驗過濾器即可,而不需要升級所有已存在的微服務, 或者這樣理解:
我們知道,一個大型系統在設計時,經常會被拆分為很多個微服務,那么作為客戶端要如何去呼叫 這么多的微服務呢?客戶端可以直接向微服務發送請求,每個微服務都有一個公開的URL,該URL可以直接映射到具體的微服務,如果沒有網關的存在,我們只能在客戶端記錄每個微服務的地址,然后分別去呼叫,這樣的架構,會存在著諸多的問題,例如,客戶端請求不同的微服務可能會增加客戶端代碼或配置的復雜性,還有就是每個服務,在呼叫時都需要獨立認證,并且存在跨域請求,也在一定程度上提高了代碼的復雜度,基于微服務架構中的設計及實作上的問題,為了在專案中簡化前端的呼叫邏輯,同時也簡化內部服務之間互相呼叫的復雜度,更好保護內部服務,提出了網關的概念,
————————————————
總結:統一后端權限校驗,減少了代碼的復雜度,方便了服務的升級與維護,簡化前端的呼叫邏輯,同時也簡化內部服務之間互相呼叫的復雜度,更好保護內部服務,
2.網關入門案例
2.1 業務:
通過網關作為服務訪問入口,對系統中的服務進行訪問,例如通過網關服務去訪問sca-provider服務.
2.2 業務實作
第一步:創建網關sca-getaway專案,并添加依賴

第二步:創建Application.yml檔案并添加

lb為LoadBalancer(負載平衡器--負載均衡)的簡寫 為服務前綴,不能隨意寫,
第三步:創建啟動類

第四步:負載均衡測驗
router01:


router02:



小節面試分析?
1.什么是網關?服務訪問(流量)的一個入口,類似生活中的“海關“
2.為什么使用網關?(服務安全,統一服務入口管理,負載均衡,限流,鑒權)
3.Spring Cloud Gateway 應用的初始構建程序(添加依賴,配置)
4.Gateway 服務的啟動底層是通過誰去實作的?(Netty網路編程框架-ServerSocket)
5.Gateway 服務做請求轉發時一定要在注冊中心進行注冊嗎?(不一定,可以直接通過遠端url進行服務訪問)
6.為什么要使用負載均衡?網關才是服務訪問的入口,所有服務都會在網關層面進行底層映射,所以在訪問服務時,要基于服務serivce id(服務名)去查找對應的服務,讓請求從網關層進行均衡轉發,以平衡服務實體的處理能力,
7.網關層面是如何實作負載均衡的?(通過服務名去查找具體的服務實體)
8.網關層面是如何通過服務名查找服務實體的?(Ribbon)
9.你了解Ribbon中的哪些負載均衡演算法?(輪詢,權重,hash,……可通過IRule介面進行查看分析)
1.網關進行請求轉發的流程是怎樣,有哪些關鍵物件(XxxHandlerMapping,Handler,過濾器)
2.網關層面服務的映射方式怎樣的?(謂詞-path,…,服務名/服務實體)
3.網關層如何記錄服務的映射?(通過map,并要考慮讀寫鎖的應用)
3.執行流程分析

客戶端向Spring Cloud Gateway發出請求, 如果Gateway Handler Mapping 通過斷言predicates(predicates)的集合確定請求與路由(Routers)匹配,則將其發送到Gateway Web Handler, Gateway Web Handler 通過確定的路由中所配置的過濾器集合鏈式呼叫過濾器(也就是所謂的責任鏈模式), Filter由虛線分隔的原因是, Filter可以在發送代理請求之前和之后運行邏輯,處理的邏輯是 在處理請求時 排在前面的過濾器先執行,而處理回傳相應的時候,排在后面的過濾器先執行,

斷言工程
4.斷言(Predicate)增強
Predicate(斷言)又稱謂詞 ,用于條件判斷,只有斷言結果都為真,才會真正的執行路由,斷言其本質就是定義路由轉發的條件(請求邏輯設計),
- 何為謂詞?(網關中封裝了判斷邏輯的一個物件)
- 謂詞邏輯的設計是怎樣的?(謂詞判斷邏輯回傳值為true則進行請求轉發)
- 你了解哪些謂詞邏輯?(path,請求引數,ip,請求方式,cookie,請求頭,….)
- 我們可以自己定義謂詞工廠物件嗎?(可以的)
5.過濾器(Filter)增強
過濾器(Filter)就是在請求傳遞程序中,對請求和回應做一個處理,Gateway 的Filter從作用范圍可分為兩種:GatewayFilter與GlobalFilter,其中:
GatewayFilter:應用到單個路由或者一個分組的路由上,
GlobalFilter:應用到所有的路由上,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/302473.html
標籤:其他
