SpringCloud(十):Zuul之Filter詳解

Zuul詳解

官方文檔github.com/Netflix/zuu…git

Zuul的中心是一系列過濾器,可以在HTTP請求和響應的路由過程當中執行一系列操做。github

如下是Zuul過濾器的主要特徵:後端

  • 類型:一般在應用過濾器時在路由流程中定義階段(儘管它能夠是任何自定義字符串)
  • 執行順序:在類型中應用,定義跨多個過濾器的執行順序
  • 標準:執行過濾器所需的條件
  • 操做:知足條件時要執行的操做

Zuul提供了一個動態讀取,編譯和運行這些過濾器的框架。過濾器不直接相互通訊 - 而是經過RequestContext共享狀態,RequestContext對每一個請求都是惟一的。服務器

過濾器目前用Groovy編寫,儘管Zuul支持任何基於JVM的語言。每一個Filter的源代碼都寫入Zuul服務器上的一組指定目錄,這些目錄會按期輪詢更改。更新的過濾器從磁盤讀取,動態編譯到正在運行的服務器中,並由Zuul爲每一個後續請求調用。框架

過濾類型

Zuul大部分功能都是經過過濾器來實現的。Zuul中定義了四種標準過濾器類型,這些過濾器類型對應於請求的典型生命週期:微服務

  • PRE:這種過濾器在請求被路由調用以前調用。咱們可利用這種過濾器實現身份驗證、再集羣中選擇請求的微服務、記錄調試信息等。
  • ROUTING:這種過濾器將請求路由到微服務。用於構建發送給微服務的請求,並使用Apache HttpClientNetflix Ribbon構建和發送原始HTTP請求的位置。
  • POST:請求在路由到微服務以後執行。示例包括向響應添加標準HTTP標頭、收集統計信息和指標、以及將響應從源傳輸到客戶端。
  • ERROR:過濾器在其中一個階段發生錯誤時執行。

除了默認的過濾器類型,Zuul還容許咱們建立自定義過濾器類型。例如,咱們有一個自定義STATIC類型的過濾器,它直接在Zuul中生成響應,而不是將請求轉發到後端的微服務。調試

Zuul請求的生命週期

Zuul請求的生命週期以下圖所示,改圖詳細的描述了各類類型的過濾器執行順序。 code

image
相關文章
相關標籤/搜索