1. 程式人生 > 程式設計 >深入剖析閘道器gateway原理

深入剖析閘道器gateway原理

目錄
  • 一 背景
    • 微服務架構提供一種簡單有效的統一的 API入口
  • 二需要的依賴:
    • 新增配置檔案及說明:
  • 說明
    • 路由(Route) 是 gateway 中最基本的元件之一
    • 什麼是閘道器?
    • 為什麼使用閘道器?
    • Gateway 服務的啟動底層是通過yweHKsJES誰去實現的?
    • Gateway 服務做請求轉發時一定要在註冊中心進行註冊嗎?
  • 三 負載均衡
    • 閘道器層面是如何實現負載均衡的?
    • 閘道器層面是如何通過服務名查詢服務例項的?
    • 你瞭解Ribbon中的哪些負載均衡演算法?
    • 閘道器進行請求轉發的流程是怎樣,有哪些關鍵物件?
    • 閘道器層面服務的對映方式怎樣的?
    • 閘道器層如何記錄服務的對映?
  • 閘道器(Gateway)
    • 誕生的背景?
    • 閘道器的選型?
    • Spring Cloud Gateway的入門實現
    • Spring Cloud Gateway中的負載均衡?
    • Spring Cloud Gateway中的斷言配置?
    • Spring Cloudwww.cppcns.com Gateway中的過濾器配置?
    • Spring Cloud Gateway中的限流設計?
    • Gateway在網際網路架構中的位置?
    • Gateway底層負載均衡的實現?
    • Gateway應用過程中設計的主要概念?
    • Gateway中你做過哪些斷言配置?
    • Gateway中你用的過濾器有哪些?

一 背景

微服務架構提供一種簡單有效的統一的 API入口

負責服務請求路由、組合及協議轉換,並且基於 Filter 鏈的方式提供了許可權認證,監控、限流等功能。

優點:

效能強勁:是第一代閘道器Zuul的1.6倍。

功能強大:內建了很多實用的功能,例如轉發、監控、限流等設計優雅,容易擴充套件。

缺點:依賴Netty與WebFlux(Spring5.0),不是傳統的Servlet模型(Spring MVC就是基於此模型實現),學習成本高。需要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: #配置閘道器路由規則
- id: route01 #路由id,自己指定一個唯一值即可
uri: http://localhost:8081/ #閘道器幫我們轉發的url
predicates: ###斷言(謂此):匹配請求規則
- Path=/nacos/provider/echo/** #請求路徑定義,此路徑對應uri中的資源
filters: ##閘道器過濾器,用於對謂詞中的內容進行判斷分析以及處理
- StripPrefix=1 #轉發之前去掉path中第一層路徑,例如nacos

說明

路由(Route) 是 gateway 中最基本的元件之一

表示一個具體的路由資訊載體。

主要定義了下面的幾個資訊:

id,路由識別符號,區別於其他 Route。

uri,路由指向的目的地 uri,即客戶端請求最終被轉發到的微服務。

predichttp://www.cppcns.comate,斷言(謂詞)的作用是進行條件判斷,只有斷言都返回真,才會執行路由。

filter,過濾器用於修改請求和響應資訊。

什麼是閘道器?

服務訪問(流量)的一個入口,類似生活中的“海關“

為什麼使用閘道器?

服務安全,統一服務入口管理,負載均衡,限流,鑑權

Spring Cloud Gateway 應用的初始構建過程(新增依賴,配置

Gateway 服務的啟動底層是通過誰去實現的?

Netty網路程式設計框架-ServerSocket

Gateway 服務做請求轉發時一定要在註冊中心進行註冊嗎?

不一定,可以直接通過遠端url進行服務訪問

三 負載均衡

需要的porm檔案是nacos的配置和包,是通過nacos配置中心,尋找例項。

閘道器層面是如何實現負載均衡的?

通過服務名去查詢具體的服務例項

閘道器層面是如何通過服務名查詢服務例項的?

Ribbon

你瞭解Ribbon中的哪些負載均衡演算法?

輪詢,權重,hash,……可通過IRule介面進行檢視分析

閘道器進行請求轉發的流程是怎樣,有哪些關鍵物件?

XxxHandlerMapping,Handler,。。。

閘道器層面服務的對映方式怎樣的?

謂詞-path,…,服務名/服務例項

閘道器層如何記錄服務的對映?

通過map,並要考慮讀寫鎖的應用

下圖是定義在閘道器層面定義全域性過濾器

深入剖析閘道器gateway原理

閘道器(Gateway)

誕生的背景?

第一:統一微服務訪問的入口,

第二:對系統服務進行保護,

第三進行統一的認證,授權,限流

閘道器的選型?

Netifix Zuul,Spring Cloud Gateway,…

Spring Cloud Gateway的入門實現

新增依賴,路由配置,啟動類

Spring Cloud Gateway中的負載均衡?

閘道器服務註冊,服務的發現,基於uri:lb://服務id方式訪問具體服務例項

Spring Cloud Gateway中的斷言配置?

掌握常用幾個就可,用時可以通過搜尋引擎去查

Spring Cloud Gateway中的過濾器配置?

掌握過濾器中的兩大型別-區域性和全域性

Spring Cloud Gateway中的限流設計?

Sentinel

Gateway在網際網路架構中的位置?

nginx->gateway–>微服務–>微服務

Gateway底層負載均衡的實現?

Ribbon

Gateway應用過程中設計的主要概念?

路由id,路由uri,斷言,過濾器

Gateway中你做過哪些斷言配置?

after,header,path,cookie,…

Gateway中你用的過濾器有哪些?

新增字首,去掉字首,新增請求頭,…,負載均衡,…

以上就是深入理解閘道器gateway的詳細內容,更多關於閘道器gateway的資料請關注我們其它相關文章!