微服務應用開發入門④服務網關

簡述

相信通過微服務應用開發入門①web端架構演進的閱讀,大家已經知道服務網關是幹嘛的;

一般來說服務網關會做以下幾件事情:

  • 路由:路由是API網關很核心的模塊功能,此模塊實現根據請求,鎖定目標微服務並將請求進行轉發
  • 鑑權:權限身份認證
  • 控:記錄請求響應數據,api耗時分析,性能監控。
  • 日誌:日誌記錄。
  • 限流:實現微服務訪問流量計算,基於流量計算分析進行限流,可以定義多種限流規則。

Spring Cloud Gateway

在SpringBoot1.x的版本中,一般來說用Netflix公司的zuul;(對又是netflix、Netflix是SpringCloud的開源組件大戶)

但是在SpirngBoot2.x的發佈後,zuul2.x的版本閉源,於是Spring團隊有開發了gateway這個網關;

關於相關的資訊,以及註冊中心、服務網關選型參考之前的博客SpingCloud資訊-斷路器、註冊中心、網關

 

一般來說: 內部請求通過feignribbon進行訪問 (這個在之前的文章微服務應用開發入門③微服務組件eureka、ribbon、feign和hystrix初識有介紹)

 外部請求通過gateway做統一的路由

      1.當請求到達gateway首先Gateway Handler Mapping會判斷請求是否匹配

2.如果不匹配404

3.如果匹配將其發送Gateway web handler處理。

4.Gateway web handler處理請求時會經過一系列的過濾器鏈;

類似zuul,在執行所有“pre”過濾器邏輯時,往往進行了鑑權、限流、日誌輸出等功能,以及請求頭的更改、協議的轉換;轉發之後收到響應之後,會執行所有“post”過濾器的邏輯,在這裏可以響應數據進行了修改,比如響應頭、協議的轉換等。

簡單應用

 

Predicates

Gateway Handler Mapping中用到一個概念叫Predicates,用斷言來判斷請求是否匹配;

Gateway爲我們提供的斷言有:時間斷言、cookie斷言、header斷言、host斷言、方法類型斷言、路徑斷言等

一般我們會用到路徑斷言或者header斷言;當然可以自定義斷言

這是項目 https://github.com/zhouxiaohei/cloud-start-demo/tree/master/cloud-gateway-demo的配置文件

大家也可以加上header斷言 ,請求頭不包含X-Request-Id並且值是123的,會404;值也可以是一個正則表達式

- Header=X-Request-Id, 123

Gateway Filter 

          和zuul一樣分爲pre、post、也從範圍上分爲單個路由和global filter;

          剛纔用到了切割前綴過濾器,可以打開StripPrefixGatewayFilterFactory查看它的源碼

        未完待續。。。。。

          

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章