一、zuul簡介
zuul使用一系列的filter實現(xiàn)以下功能
- 動態(tài)路由 - 動態(tài)的將request路由到后端的服務(wù)上去
- 權(quán)限校驗
- 監(jiān)控 - 實時觀察后端微服務(wù)的TPS、響應(yīng)時間,失敗數(shù)量等準確的信息
- 日志 - 記錄所有請求的訪問日志數(shù)據(jù)振愿,可以為日志分析和查詢提供統(tǒng)一支持
- 壓力測試 - 逐漸的增加訪問集群的壓力,來測試集群的性能
- 限流
- 靜態(tài)響應(yīng) - 直接在網(wǎng)關(guān)返回一些響應(yīng),而不是通過內(nèi)部的服務(wù)返回響應(yīng)
github地址:https://github.com/Netflix/zuul/
二揽乱、zuul filter
2.1、關(guān)鍵元素
Type:值可以是:pre粟矿、route凰棉、post、error陌粹、custom
Execution Order: 指定一個type中的多個filter的執(zhí)行順序
Criteria:滿足該條件撒犀,filter執(zhí)行
Action: filter執(zhí)行的動作的具體邏輯
注意點:
- filters之間不會直接進行通訊交流,他們通過一個RequestContext共享一個state申屹;該RequestContext對于每一個request都是唯一的绘证;
- filter當前使用groovy來寫的,也可以使用java
- zuul可以動態(tài)的read, compile, and run these Filters哗讥,被更新后的filter會被從disk讀取到內(nèi)存嚷那,并動態(tài)編譯到正在運行的server中,之后可以用于其后的每一個請求
2.2杆煞、filter type
1魏宽、PRE Filters執(zhí)行時機: before routing to the origin.
這類filter可能做的事:權(quán)限校驗、選取路由機器决乎、限流等队询。
2、ROUTING Filters
這類filter可能做的事:真正的向service的一臺server(這臺server是pre filter選出來的)發(fā)請求构诚。
3蚌斩、POST Filters執(zhí)行時機:after the request has been routed to the origin
這類filter可能做的事:adding standard HTTP headers to the response,收集統(tǒng)計數(shù)據(jù)范嘱、streaming the response from the origin to the client
4送膳、ERROR Filters執(zhí)行時機:其他三個階段任一階段發(fā)生錯誤時執(zhí)行
5员魏、CUSTOM Filters沿著默認的filter流,zuul允許我們創(chuàng)建一些自定義的Filter type叠聋,并且準確的執(zhí)行他們撕阎。
例如:我們自定義一個STATIC type的filter,用于從zuul直接產(chǎn)生響應(yīng)碌补,而不是從后端服務(wù)獲取虏束。
三、zuul request lifecycle(filter流)
<div>
</div>
說明:對應(yīng)(二)的filter type來看
四厦章、zuul核心架構(gòu)