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

SpringCloud之Zuul服務網關詳解

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

ZUUL服務網關是什么

服務網關是微服務架構中一個不可或缺的部分。

通過服務網關統一向外系統提供REST API的過程中,除了具備服務路由、均衡負載功能之外,它還具備了權限控制(鑒權)等功能。

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

ZUUL官網:https://github.com/Netflix/zuul

ZUUL服務架構

在這里插入圖片描述

在這里插入圖片描述

ZUUL 路由(Router)

ZUUL的簡單使用

1)新建一個服務

在這里插入圖片描述

2)引入依賴

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

3)編寫啟動類

@SpringBootApplication
@EnableEurekaClient // 開啟Eureka客戶端
@EnableZuulProxy    // 開啟服務網關
public class ZuulApp {
    public static void main(String[] args) {
        System.out.println("Zuul網關服務啟動。。。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實際的服務地址,寫服務名即可
zuul.routes.springcloud-consumer.url=springcloud-consumer
# 讓zuul去eureka獲取服務
# 獲取服務列表的周期
eureka.client.registry-fetch-interval-seconds=5
# eureka的服務地址
eureka.client.service-url.defaultZone=http://eureka-8888:8888/eureka/
# 當調用getHostname獲取實例的hostname時,返回ip而不是host名稱
eureka.instance.prefer-ip-address=true
# 指定ip地址
eureka.instance.ip-address=127.0.0.1

5)測試

先啟動 eureka服務,再啟動其他服務

在這里插入圖片描述

訪問 //localhost:8885/consumer/queryUserList

在這里插入圖片描述

可以看出,zuul服務網關已經可以正常運作了。

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

ZUUL 過濾器 Filter

zuulFilter的使用場景

  1. 請求鑒權:一般放在pre類型,如果發(fā)現沒有訪問權限,直接就攔截了
  2. 異常處理:一般會在error類型和post類型過濾器中結合來處理。
  3. 服務調用時長統計:pre和post結合使用。

filter的類型

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

Filter 的生命周期

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

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

在這里插入圖片描述

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

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

在這里插入圖片描述

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

相關文章

  • Java多線程 原子操作類詳細

    Java多線程 原子操作類詳細

    這篇文章主要介紹了Java多線程中的原子操作類,原子的本意是不能被分割的粒子,而對于一個操作來說,如果它是不可被中斷的一個或者一組操作,那么他就是原子操作。顯然,原子操作是安全的,因為它不會被打斷,需要的朋友可以參考下
    2021-10-10
  • 代碼實例Java IO判斷目錄和文件是否存在

    代碼實例Java IO判斷目錄和文件是否存在

    本篇文章給大家分享了Java IO判斷目錄和文件是否存在的代碼,對此有需要的讀者們可以跟著小編一起學習下。
    2018-02-02
  • Spring AOP基本概念

    Spring AOP基本概念

    這篇文章主要為大家詳細介紹了spring基礎概念AOP與動態(tài)代理,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助
    2021-07-07
  • Spring boot通過HttpSessionListener監(jiān)聽器統計在線人數的實現代碼

    Spring boot通過HttpSessionListener監(jiān)聽器統計在線人數的實現代碼

    這篇文章主要介紹了Spring boot通過HttpSessionListener監(jiān)聽器統計在線人數的實現代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-02-02
  • java中for循環(huán)執(zhí)行的順序圖文詳析

    java中for循環(huán)執(zhí)行的順序圖文詳析

    關于java的for循環(huán)想必大家非常熟悉,它是java常用的語句之一,這篇文章主要給大家介紹了關于java中for循環(huán)執(zhí)行順序的相關資料,需要的朋友可以參考下
    2021-06-06
  • Java 實戰(zhàn)項目錘煉之在線美食網站系統的實現流程

    Java 實戰(zhàn)項目錘煉之在線美食網站系統的實現流程

    讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實現一個在線美食網站系統,大家可以在過程中查缺補漏,提升水平
    2021-11-11
  • 解決SpringBoot項目中l(wèi)og4j與logback的Jar包沖突問題

    解決SpringBoot項目中l(wèi)og4j與logback的Jar包沖突問題

    這篇文章主要給大家介紹了解決SpringBoot項目中l(wèi)og4j與logback的Jar包沖突問題,文中有詳細的解決方法和沖突的原因,有遇到相同問題的朋友可以參考閱讀本文
    2023-10-10
  • java實現Excel的導入導出

    java實現Excel的導入導出

    這篇文章主要為大家詳細介紹了java實現Excel的導入導出,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 使用Spring Data JDBC實現DDD聚合的示例代碼

    使用Spring Data JDBC實現DDD聚合的示例代碼

    這篇文章主要介紹了使用Spring Data JDBC實現DDD聚合的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • 基于Java 數組內存分配的相關問題

    基于Java 數組內存分配的相關問題

    本篇文章是對Java中數組內存分配進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05

最新評論