欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringCloud之Zuul服務(wù)網(wǎng)關(guān)詳解

 更新時間:2023年08月29日 10:20:15   作者:瘋狂的帆  
這篇文章主要介紹了SpringCloud之Zuul服務(wù)網(wǎng)關(guān)詳解,服務(wù)網(wǎng)關(guān)是微服務(wù)架構(gòu)中一個不可或缺的部分,通過服務(wù)網(wǎng)關(guān)統(tǒng)一向外系統(tǒng)提供REST?API的過程中,除了具備服務(wù)路由、均衡負(fù)載功能之外,它還具備了權(quán)限控制(鑒權(quán))等功能,需要的朋友可以參考下

ZUUL服務(wù)網(wǎng)關(guān)是什么

服務(wù)網(wǎng)關(guān)是微服務(wù)架構(gòu)中一個不可或缺的部分。

通過服務(wù)網(wǎng)關(guān)統(tǒng)一向外系統(tǒng)提供REST API的過程中,除了具備服務(wù)路由、均衡負(fù)載功能之外,它還具備了權(quán)限控制(鑒權(quán))等功能。

Spring Cloud Netflix中的Zuul就擔(dān)任了這樣的一個角色,為微服務(wù)架構(gòu)提供了前門保護(hù)的作用,同時將權(quán)限控制這些較重的非業(yè)務(wù)邏輯內(nèi)容遷移到服務(wù)路由層面,使得服務(wù)集群主體能夠具備更高的可復(fù)用性和可測試性。

ZUUL官網(wǎng):https://github.com/Netflix/zuul

ZUUL服務(wù)架構(gòu)

在這里插入圖片描述

在這里插入圖片描述

ZUUL 路由(Router)

ZUUL的簡單使用

1)新建一個服務(wù)

在這里插入圖片描述

2)引入依賴

<!-- zuul依賴 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<!-- 導(dǎo)入eureka客戶端 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

3)編寫啟動類

@SpringBootApplication
@EnableEurekaClient // 開啟Eureka客戶端
@EnableZuulProxy    // 開啟服務(wù)網(wǎng)關(guān)
public class ZuulApp {
    public static void main(String[] args) {
        System.out.println("Zuul網(wǎng)關(guān)服務(wù)啟動。。。8885");
        SpringApplication.run(ZuulApp.class, args);
    }
}

4)配置zuul

server.port=8885
spring.application.name=springcloud-zuul-gateway
# springcloud-consumer:指定路由ID,名字是自定義的
# path:映射的地址
zuul.routes.springcloud-consumer.path=/consumer/**
# url:springcloud-consumer實(shí)際的服務(wù)地址,寫服務(wù)名即可
zuul.routes.springcloud-consumer.url=springcloud-consumer
# 讓zuul去eureka獲取服務(wù)
# 獲取服務(wù)列表的周期
eureka.client.registry-fetch-interval-seconds=5
# eureka的服務(wù)地址
eureka.client.service-url.defaultZone=http://eureka-8888:8888/eureka/
# 當(dāng)調(diào)用getHostname獲取實(shí)例的hostname時,返回ip而不是host名稱
eureka.instance.prefer-ip-address=true
# 指定ip地址
eureka.instance.ip-address=127.0.0.1

5)測試

先啟動 eureka服務(wù),再啟動其他服務(wù)

在這里插入圖片描述

訪問 //localhost:8885/consumer/queryUserList

在這里插入圖片描述

可以看出,zuul服務(wù)網(wǎng)關(guān)已經(jīng)可以正常運(yùn)作了。

這便是 ZUUL服務(wù)網(wǎng)關(guān)中路由(Router)的功能。接下來我們來了解zuul的另一大功能—過濾器(Filter)。

ZUUL 過濾器 Filter

zuulFilter的使用場景

  1. 請求鑒權(quán):一般放在pre類型,如果發(fā)現(xiàn)沒有訪問權(quán)限,直接就攔截了
  2. 異常處理:一般會在error類型和post類型過濾器中結(jié)合來處理。
  3. 服務(wù)調(diào)用時長統(tǒng)計(jì):pre和post結(jié)合使用。

filter的類型

  • pre:請求在被路由之前執(zhí)行
  • routing:在路由請求時調(diào)用
  • post:在routing和errror過濾器之后調(diào)用
  • error:處理請求時發(fā)生錯誤調(diào)用

Filter 的生命周期

Filter 的生命周期有 4 個,分別是 “PRE”、“ROUTING”、“POST” 和“ERROR”。

  1. PRE:這種過濾器在請求被路由之前調(diào)用。我們可利用這種過濾器實(shí)現(xiàn)身份驗(yàn)證、在集群中選擇請求的微服務(wù)、記錄調(diào)試信息等。
  2. ROUTING:這種過濾器將請求路由到微服務(wù)。這種過濾器用于構(gòu)建發(fā)送給微服務(wù)的請求,并使用 Apache HttpClient 或 Netfilx Ribbon 請求微服務(wù)。
  3. POST:這種過濾器在路由到微服務(wù)以后執(zhí)行。這種過濾器可用來為響應(yīng)添加標(biāo)準(zhǔn)的 HTTP Header、收集統(tǒng)計(jì)信息和指標(biāo)、將響應(yīng)從微服務(wù)發(fā)送給客戶端等。
  4. ERROR:在其他階段發(fā)生錯誤時執(zhí)行該過濾器。 除了默認(rèn)的過濾器類型,Zuul 還允許我們創(chuàng)建自定義的過濾器類型。例如,我們可以定制一種 STATIC 類型的過濾器,直接在 Zuul 中生成響應(yīng),而不將請求轉(zhuǎn)發(fā)到后端的微服務(wù)。

在這里插入圖片描述

  • 正常流程:
    • 請求到達(dá)首先會經(jīng)過pre類型過濾器,而后到達(dá)routing類型,進(jìn)行路由,請求就到達(dá)真正的服務(wù)提供者,執(zhí)行請求,返回結(jié)果后,會到達(dá)post過濾器。而后返回響應(yīng)。
  • 異常流程:
    • 整個過程中,pre或者routing過濾器出現(xiàn)異常,都會直接進(jìn)入error過濾器,再error處理完畢后,會將請求交給POST過濾器,最后返回給用戶。
    • 如果是error過濾器自己出現(xiàn)異常,最終也會進(jìn)入POST過濾器,而后返回。
    • 如果是POST過濾器出現(xiàn)異常,會跳轉(zhuǎn)到error過濾器,但是與pre和routing不同的時,請求不會再到達(dá)POST過濾器了。

Zuul中Filter的默認(rèn)執(zhí)行順序

在這里插入圖片描述

到此這篇關(guān)于SpringCloud之Zuul服務(wù)網(wǎng)關(guān)詳解的文章就介紹到這了,更多相關(guān)Zuul服務(wù)網(wǎng)關(guān)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論