SpringCloud入門(七): Zuul 簡介與使用


Zuul 簡介

  Zuul 微服務網關是為Spring Cloud Netflix提供動態路由,監控,彈性,安全等服務的框架。可以和Eureka、Ribbon、Hystrix等組件配合使用。

Zuul 主要功能

  1、 身份認證與安全:識別每個資源的驗證要求,並拒絕那些與要求不符的請求。

  2、審查與監控:在邊緣位置追蹤有意義的數據和統計結果,從而為我們帶來精確的生產視圖。

  3、動態路由:動態地將請求路由到不同的后端集群;

  4、壓力測試:逐漸增加指向集群的流量,以了解性能;

  5、為每一種負載類型分配對應容量,並棄用超出限定值的請求;

Zuul 帶了什么優勢

  沒有使用網關服務的時候:

  1、客戶端會多次請求不同的微服務,增加了客戶端的復雜性。

  2、存在跨域請求,在一定場景下處理相對復雜。

  3、認證復雜,每個服務都需要獨立認證。

 

  使用服務網關后:

  1、易於監控,可在微服務網關收集監控數據並將其推送到外部系統進行分析。

  2、易於認證,可在微服務網關上進行認證,然后再將請求轉發到后端的微服務,而無須在每個微服務中進行認證。

  3、減少了客戶端與各個微服務之間的交互次數。

Zuul的高可用

zuul的高可用分為兩種,一種是將zuul的客戶端與服務端同時注冊到了Eureka上,不過現實中這種場景並不多見。

 

zuul的第二種高可用,客戶端不注冊到Eureka上,客戶端通過Nginx等進行負載均衡。 

 

 Zuul 入門

<!--1. 配置pom文件,引入spring-cloud-starter-netflix-zuul包-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

<!-- 2. 配置屬性文件-->
server.port=9004
#注冊到eureka服務端的微服務名稱
spring.application.name=ms-gateway-zuul
#注冊到eureka服務端的地址
eureka.client.service-url.defaultZone=http://localhost:9000/eureka/
#點擊具體的微服務,右下角是否顯示ip
eureka.instance.prefer-ip-address=true
#顯示微服務的名稱
eureka.instance.instance-id=ms-gateway-zuul-9004

<!-- 3. 在Spring的啟動入口添加@EnableZuulProxy注解 -->
@SpringBootApplication
@EnableZuulProxy
public class ZuulApplication {

    public static void main(String[] args) {
        SpringApplication.run(ZuulApplication.class, args);
    }
}

通過Url訪問:http://localhost:9004/zuul/ms-consumer-user/userController/getUserInfo/{loginName}

Zuul 的常規配置

1、設置訪問路徑,默認值為zuul 

  zuul.servlet-path=/zuul

2、關閉通過微服務名稱路訪問(避免暴露服務名稱)

  全部設置:zuul.ignored-services=*  

  分服務設置:zuul.ignored-services=ms-provider-order,ms-consumer-user

3、通過服務實例指定映射路徑

  zuul.routes.ms-provider-order=/order-service/**

  訪問:http://localhost:9004/zuul/order-service/userController/getUserInfo/{loginName}

4、通過服務的serviceId指定映射路徑

  zuul.routes.use-routing.serviceId=ms-provider-order

  zuul.routes.use-routing.path=/order-service/**

5、通過url指定映射路徑(路由不會作為HystrixCommand執行,同時也不能使用Ribbon來負載均衡多個URL)

  zuul.routes.use-routing.url=http://localhost:8004/

  zuul.routes.use-routing.path=/order-service/**

6、統一設置路由前綴

  全局設置:zuul.prefix=/order-api

       zuul.strip-prefix=true(是否剝離前綴,默認是true)

       zuul.routes.use-routing.serviceId=ms-provider-order

       zuul.routes.use-routing.path=/order-service/**

       訪問:http://localhost:9004/order-api/order-service/userController/getUserInfo/{loginName}

  分服務設置:zuul.strip-prefix=true

        zuul.routes.use-routing.serviceId=ms-provider-order

        zuul.routes.use-routing.path=/order-service/**

        zuul.routes.use-routing.stripPrefix=true

        訪問:http://localhost:9004/zuul/order-service/userController/getUserInfo/{loginName}

7、過濾敏感路徑

  zuul.ignored-patterns=/**/admin/**

8、過濾敏感頭信息(通過zuul網關的時候,會過濾掉敏感的頭信息,比如cookie等其他的)

  全局設置:zuul.sensitive-headers=

  分模塊設置:zuul.routes.use-routing.serviceId=ms-provider-order

        zuul.routes.use-routing.path=/order-service/**

        zuul.routes.use-routing.sensitiveHeaders=

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM