springCloud五大组件--Gateway
SpringCloud Gateway 是 Spring Cloud 的一個全新項目,該項目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技術開發的網關,它旨在為微服務架構提供一種簡單有效的統一的 API 路由管理方式。
Spring Cloud Gateway 的目標,不僅提供統一的路由方式,并且基于 Filter 鏈的方式提供了網關基本的功能,例如:安全,監控/指標,和限流。
提前聲明:Spring Cloud Gateway 底層使用了高性能的通信框架Netty。
1.2?SpringCloud Gateway 特征
SpringCloud官方,對SpringCloud Gateway 特征介紹如下:
(1)基于 Spring Framework 5,Project Reactor 和 Spring Boot 2.0
(2)集成 Hystrix 斷路器
(3)集成 Spring Cloud DiscoveryClient
(4)Predicates 和 Filters 作用于特定路由,易于編寫的 Predicates 和 Filters
(5)具備一些網關的高級功能:動態路由、限流、路徑重寫
從以上的特征來說,和Zuul的特征差別不大。SpringCloud Gateway和Zuul主要的區別,還是在底層的通信框架上。
簡單說明一下上文中的三個術語:
(1)Filter(過濾器):
和Zuul的過濾器在概念上類似,可以使用它攔截和修改請求,并且對上游的響應,進行二次處理。過濾器為org.springframework.cloud.gateway.filter.GatewayFilter類的實例。
(2)Route(路由):
網關配置的基本組成模塊,和Zuul的路由配置模塊類似。一個Route模塊由一個 ID,一個目標 URI,一組斷言和一組過濾器定義。如果斷言為真,則路由匹配,目標URI會被訪問。
(3)Predicate(斷言):
這是一個 Java 8 的 Predicate,可以使用它來匹配來自 HTTP 請求的任何內容,例如 headers 或參數。斷言的輸入類型是一個 ServerWebExchange。
客戶端向 Spring Cloud Gateway 發出請求。然后在 Gateway Handler Mapping 中找到與請求相匹配的路由,將其發送到 Gateway Web Handler。Handler 再通過指定的過濾器鏈來將請求發送到我們實際的服務執行業務邏輯,然后返回。過濾器之間用虛線分開是因為過濾器可能會在發送代理請求之前(“pre”)或之后(“post”)執行業務邏輯。
gateway的配置過濾器分為兩種
order值越小,優先級越高。
getOrder(); 2個變量:最高級(數值最小)和最低級(數值最大)。
①:全局過濾器
全局過濾器 不需要在配置文件配置,所有到服務的請求都會進行攔截,
@Configuration @Slf4j public class TokenFilter implements GlobalFilter, Ordered {@Overridepublic int getOrder() {return -10000;}@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {return chain.filter(exchange);} }②:指定過濾器
需要繼承?AbstractGatewayFilterFactory??
優點,可在配置文件中配置,可以為某個服務指定過濾器,
只需把filter對應的名字寫入配置文件即可如圖:
這里值得注意的是, 如果你filter的名稱后綴是 GatewayFilterFactory 如?TestGatewayFilterFactory 在配置文件中只需要寫Test即可 如果不是那就寫全稱就可以了
?
可以看到 id 如果不寫的話默認是uuid 唯一值。不可重復,
?uri指需要跳轉的地址,?這里的uri不是一個具體的地址了,而是lb://開頭,加上serviceId
Predicates就是上面說的謂語了,可以配置多個,使用正則匹配.?
請求地址攜帶/auth則會跳轉到我們配置的uri
這個是過濾器,對應的是filters 配置,有寫好的過濾器,應該也可以自定義,
這里會先進行Predicates 判斷,為true? 如果有filters則進行相關過濾。之后再轉發的相關服務
?
?
-
- 限流:實現微服務訪問流量計算,基于流量計算分析進行限流,可以定義多種限流規則。
- 緩存:數據緩存。
- 日志:日志記錄。
- 監控:記錄請求響應數據,api耗時分析,性能監控。
- 鑒權:權限身份認證。
- 灰度:線上灰度部署,可以減小風險。
- 路由:路由是API網關很核心的模塊功能,此模塊實現根據請求,鎖定目標微服務并將請求進行轉發。
- 通過斷言找到指定的微服務,通過路由進行轉發,過濾器可以實現在轉發前或轉發后對請求進行修改
?
總結
以上是生活随笔為你收集整理的springCloud五大组件--Gateway的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最后、最长的22公里隧道贯通!功勋成昆铁
- 下一篇: 【Python 标准库学习】多种操作系统