溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Zuul是什么

發(fā)布時(shí)間:2021-12-29 14:02:30 來源:億速云 閱讀:176 作者:小新 欄目:軟件技術(shù)

這篇文章主要介紹了Zuul是什么,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

1. Zuul是什么

微服務(wù)場景下,每一個(gè)微服務(wù)對(duì)外暴露了一組細(xì)粒度的服務(wù)??蛻舳说恼?qǐng)求可能會(huì)涉及到一串的服務(wù)調(diào)用,如果將這些微服務(wù)都暴露給客戶端,那么會(huì)增加客戶端代碼的復(fù)雜度。

參考GOF設(shè)計(jì)模式中的Facade模式,將細(xì)粒度的服務(wù)組合起來提供一個(gè)粗粒度的服務(wù),所有請(qǐng)求都導(dǎo)入一個(gè)統(tǒng)一的入口,那么整個(gè)服務(wù)只需要暴露一個(gè)api,對(duì)外屏蔽了服務(wù)端的實(shí)現(xiàn)細(xì)節(jié),也減少了客戶端與服務(wù)器的網(wǎng)絡(luò)調(diào)用次數(shù)。這就是api gateway。

有了api gateway之后,一些與業(yè)務(wù)關(guān)系并不大的通用處理邏輯可以從api gateway中剝離出來,api gateway僅僅負(fù)責(zé)服務(wù)的編排與結(jié)果的組裝。

Spring Cloud Netflix的Zuul組件可以做反向代理的功能,通過路由尋址將請(qǐng)求轉(zhuǎn)發(fā)到后端的粗粒度服務(wù)上,并做一些通用的邏輯處理。

2.Zuul 能做什么

Zuul可以通過加載動(dòng)態(tài)過濾機(jī)制,從而實(shí)現(xiàn)以下各項(xiàng)功能:

驗(yàn)證與安全保障: 識(shí)別面向各類資源的驗(yàn)證要求并拒絕那些與要求不符的請(qǐng)求。

審查與監(jiān)控: 在邊緣位置追蹤有意義數(shù)據(jù)及統(tǒng)計(jì)結(jié)果,從而為我們帶來準(zhǔn)確的生產(chǎn)狀態(tài)結(jié)論。

動(dòng)態(tài)路由: 以動(dòng)態(tài)方式根據(jù)需要將請(qǐng)求路由至不同后端集群處。

壓力測試: 逐漸增加指向集群的負(fù)載流量,從而計(jì)算性能水平。

負(fù)載分配: 為每一種負(fù)載類型分配對(duì)應(yīng)容量,并棄用超出限定值的請(qǐng)求。

靜態(tài)響應(yīng)處理: 在邊緣位置直接建立部分響應(yīng),從而避免其流入內(nèi)部集群。

多區(qū)域彈性: 跨越AWS區(qū)域進(jìn)行請(qǐng)求路由,旨在實(shí)現(xiàn)ELB使用多樣化并保證邊緣位置與使用者盡可能接近。

3.Zuul的核心

Filter是Zuul的核心,用來實(shí)現(xiàn)對(duì)外服務(wù)的控制。Filter的生命周期有4個(gè),分別是“PRE”、“ROUTING”、“POST”、“ERROR”,整個(gè)生命周期可以用下圖來表示。

Zuul是什么

Zuul大部分功能都是通過過濾器來實(shí)現(xiàn)的,這些過濾器類型對(duì)應(yīng)于請(qǐng)求的典型生命周期。

PRE: 這種過濾器在請(qǐng)求被路由之前調(diào)用。我們可利用這種過濾器實(shí)現(xiàn)身份驗(yàn)證、在集群中選擇請(qǐng)求的微服務(wù)、記錄調(diào)試信息等。

ROUTING:這種過濾器將請(qǐng)求路由到微服務(wù)。這種過濾器用于構(gòu)建發(fā)送給微服務(wù)的請(qǐng)求,并使用Apache HttpClient或Netfilx Ribbon請(qǐng)求微服務(wù)。

POST:這種過濾器在路由到微服務(wù)以后執(zhí)行。這種過濾器可用來為響應(yīng)添加標(biāo)準(zhǔn)的HTTP Header、收集統(tǒng)計(jì)信息和指標(biāo)、將響應(yīng)從微服務(wù)發(fā)送給客戶端等。

ERROR:在其他階段發(fā)生錯(cuò)誤時(shí)執(zhí)行該過濾器。 除了默認(rèn)的過濾器類型,Zuul還允許我們創(chuàng)建自定義的過濾器類型。例如,我們可以定制一種STATIC類型的過濾器,直接在Zuul中生成響應(yīng),而不將請(qǐng)求轉(zhuǎn)發(fā)到后端的微服務(wù)。

Zuul中默認(rèn)實(shí)現(xiàn)的Filter

Zuul是什么

4.怎么使用Zuul

Spring Cloud Zuul路由是微服務(wù)架構(gòu)的不可或缺的一部分,提供動(dòng)態(tài)路由,監(jiān)控,彈性,安全等的邊緣服務(wù)。Zuul是Netflix出品的一個(gè)基于JVM路由和服務(wù)端的負(fù)載均衡器。

下面我們通過代碼來了解Zuul是如何工作的

1.簡單使用

1、添加依賴

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>

引入spring-cloud-starter-zuul包

2、配置文件

spring.application.name=gateway-service-zuul
server.port=8888
#這里的配置表示,訪問/it/** 直接重定向到http://www.ityouknow.com/**
zuul.routes.baidu.path=/it/**
zuul.routes.baidu.url=http://www.ityouknow.com/

3、啟動(dòng)類

@SpringBootApplication
@EnableZuulProxy
public class GatewayServiceZuulApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(GatewayServiceZuulApplication.class, args);
    }
}

啟動(dòng)類添加@EnableZuulProxy,支持網(wǎng)關(guān)路由。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Zuul是什么”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI