最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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ù)路由、均衡負載功能之外,它還具備了權(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ù)路由、均衡負載功能之外,它還具備了權(quán)限控制(鑒權(quán))等功能。

Spring Cloud Netflix中的Zuul就擔任了這樣的一個角色,為微服務(wù)架構(gòu)提供了前門保護的作用,同時將權(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實際的服務(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/
# 當調(diào)用getHostname獲取實例的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)可以正常運作了。

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

在這里插入圖片描述

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

Zuul中Filter的默認執(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)文章

  • Java基礎(chǔ)篇之serialVersionUID用法及注意事項詳解

    Java基礎(chǔ)篇之serialVersionUID用法及注意事項詳解

    這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)篇之serialVersionUID用法及注意事項的相關(guān)資料,SerialVersionUID屬性是用于序列化/反序列化可序列化類的對象的標識符,我們可以用它來記住可序列化類的版本,以驗證加載的類和序列化對象是否兼容,需要的朋友可以參考下
    2024-02-02
  • springboot獲取根目錄下lib目錄下文件位置

    springboot獲取根目錄下lib目錄下文件位置

    在 Spring Boot 項目中,如果你有一個 lib 目錄,并且需要訪問這個目錄下的文件,你可以通過幾種不同的方式來獲取該文件的位置,下面小編就來和大家詳細講講
    2024-12-12
  • java開發(fā)實現(xiàn)五子棋游戲

    java開發(fā)實現(xiàn)五子棋游戲

    這篇文章主要為大家詳細介紹了java開發(fā)實現(xiàn)五子棋游戲,具有雙人對戰(zhàn)和人機對戰(zhàn)功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • java8 stream自定義分組求和并排序的實現(xiàn)

    java8 stream自定義分組求和并排序的實現(xiàn)

    這篇文章主要介紹了java8 stream自定義分組求和并排序的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • java并發(fā)編程之cas詳解

    java并發(fā)編程之cas詳解

    這篇文章主要介紹了java并發(fā)編程之cas詳解,涉及cas使用場景和cas用作原子操作等內(nèi)容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • @RequestParam?和@RequestBody注解的區(qū)別解析

    @RequestParam?和@RequestBody注解的區(qū)別解析

    在 Spring MVC 中,我們可以使用 @RequestParam 和 @RequestBody 來獲取請求參數(shù),但它們在用法和作用上有一些區(qū)別,這篇文章主要介紹了@RequestParam?和@RequestBody注解的區(qū)別,需要的朋友可以參考下
    2023-06-06
  • Java實現(xiàn)經(jīng)典游戲推箱子的示例代碼

    Java實現(xiàn)經(jīng)典游戲推箱子的示例代碼

    《推箱子》推箱子是一個古老的游戲,目的是在訓(xùn)練你的邏輯思考能力。本文將利用Java實現(xiàn)這一經(jīng)典的小游戲,并采用了swing技術(shù)進行了界面化處理,需要的可以參考一下
    2022-02-02
  • FeignClient實現(xiàn)接口調(diào)用方式(不同參數(shù)形式)

    FeignClient實現(xiàn)接口調(diào)用方式(不同參數(shù)形式)

    這篇文章主要介紹了FeignClient實現(xiàn)接口調(diào)用方式(不同參數(shù)形式),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 圖解Springboot集成七牛云并實現(xiàn)圖片上傳功能過程

    圖解Springboot集成七牛云并實現(xiàn)圖片上傳功能過程

    在實際開發(fā)中 ,基本都會有應(yīng)用到文件上傳的場景,但隨著或多或少的需求問題,之前有在springboot上用過七牛云實現(xiàn)圖片上傳,今天因為某些原因又重新使用了下七牛云因此想總結(jié)下七牛云
    2021-11-11
  • Java swing仿酷狗音樂播放器

    Java swing仿酷狗音樂播放器

    這篇文章主要為大家詳細介紹了Java swing實現(xiàn)音樂播放器,Java開發(fā)圖形界面程序音樂播放器仿酷狗音樂播放器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評論

龙南县| 中牟县| 宁国市| 和田县| 绥德县| 汉源县| 尼木县| 靖安县| 吴旗县| 桑植县| 云和县| 周宁县| 玉门市| 金湖县| 高要市| 得荣县| 阿拉善左旗| 石城县| 南召县| 宝兴县| 惠水县| 安化县| 绥中县| 历史| 洛浦县| 攀枝花市| 新泰市| 陇西县| 荔浦县| 辽宁省| 霍邱县| 兰考县| 永春县| 阿鲁科尔沁旗| 台北县| 武汉市| 年辖:市辖区| 桂平市| 札达县| 灵川县| 慈溪市|