Zuul之Filter详解
Zuul詳解
官方文檔:https://github.com/Netflix/zuul/wiki/How-it-Works
Zuul的中心是一系列過(guò)濾器,能夠在HTTP請(qǐng)求和響應(yīng)的路由過(guò)程中執(zhí)行一系列操作。
以下是Zuul過(guò)濾器的主要特征:
- 類(lèi)型:通常在應(yīng)用過(guò)濾器時(shí)在路由流程中定義階段(盡管它可以是任何自定義字符串)
- 執(zhí)行順序:在類(lèi)型中應(yīng)用,定義跨多個(gè)過(guò)濾器的執(zhí)行順序
- 標(biāo)準(zhǔn):執(zhí)行過(guò)濾器所需的條件
- 操作:滿足條件時(shí)要執(zhí)行的操作
Zuul提供了一個(gè)動(dòng)態(tài)讀取,編譯和運(yùn)行這些過(guò)濾器的框架。過(guò)濾器不直接相互通信 - 而是通過(guò)RequestContext共享狀態(tài),RequestContext對(duì)每個(gè)請(qǐng)求都是唯一的。
過(guò)濾器目前用Groovy編寫(xiě),盡管Zuul支持任何基于JVM的語(yǔ)言。每個(gè)Filter的源代碼都寫(xiě)入Zuul服務(wù)器上的一組指定目錄,這些目錄會(huì)定期輪詢更改。更新的過(guò)濾器從磁盤(pán)讀取,動(dòng)態(tài)編譯到正在運(yùn)行的服務(wù)器中,并由Zuul為每個(gè)后續(xù)請(qǐng)求調(diào)用。
過(guò)濾類(lèi)型
Zuul大部分功能都是通過(guò)過(guò)濾器來(lái)實(shí)現(xiàn)的。Zuul中定義了四種標(biāo)準(zhǔn)過(guò)濾器類(lèi)型,這些過(guò)濾器類(lèi)型對(duì)應(yīng)于請(qǐng)求的典型生命周期:
- PRE:這種過(guò)濾器在請(qǐng)求被路由調(diào)用之前調(diào)用。我們可利用這種過(guò)濾器實(shí)現(xiàn)身份驗(yàn)證、再集群中選擇請(qǐng)求的微服務(wù)、記錄調(diào)試信息等。
- ROUTING:這種過(guò)濾器將請(qǐng)求路由到微服務(wù)。用于構(gòu)建發(fā)送給微服務(wù)的請(qǐng)求,并使用Apache HttpClient或Netflix Ribbon構(gòu)建和發(fā)送原始HTTP請(qǐng)求的位置。
- POST:請(qǐng)求在路由到微服務(wù)之后執(zhí)行。示例包括向響應(yīng)添加標(biāo)準(zhǔn)HTTP標(biāo)頭、收集統(tǒng)計(jì)信息和指標(biāo)、以及將響應(yīng)從源傳輸?shù)娇蛻舳恕?/li>
- ERROR:過(guò)濾器在其中一個(gè)階段發(fā)生錯(cuò)誤時(shí)執(zhí)行。
除了默認(rèn)的過(guò)濾器類(lèi)型,Zuul還允許我們創(chuàng)建自定義過(guò)濾器類(lèi)型。例如,我們有一個(gè)自定義STATIC類(lèi)型的過(guò)濾器,它直接在Zuul中生成響應(yīng),而不是將請(qǐng)求轉(zhuǎn)發(fā)到后端的微服務(wù)。
Zuul請(qǐng)求的生命周期
Zuul請(qǐng)求的生命周期如下圖所示,改圖詳細(xì)的描述了各種類(lèi)型的過(guò)濾器執(zhí)行順序。?
轉(zhuǎn)載于:https://www.cnblogs.com/mmzs/p/10097538.html
總結(jié)
以上是生活随笔為你收集整理的Zuul之Filter详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql 主从
- 下一篇: Oracle触发器简单使用记录