日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Cloud【Finchley】-16 Zuul的路由配置

發布時間:2025/3/21 javascript 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Cloud【Finchley】-16 Zuul的路由配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 概述
  • 路由配置
    • 1.忽略指定的微服務
    • 2.自定義微服務的訪問路徑
    • 3.忽略所有微服務,只用路由指定微服務
    • 4.同時指定微服務的serviceId和對應路徑
    • 5.同時指定微服務的URL和對應路徑
    • 6.同時指定微服務的URL和對應路徑,并且不破壞Zuul的Hystrix 、Ribbon特性
    • 7.使用正則表達式指定Zuul的路由匹配規則
    • 8.設置路由前綴
    • 9.忽略某些路徑
  • 小提示

概述

Spring Cloud【Finchley】-14 微服務網關Zuul的搭建與使用中我們搭建了zuul的微服務,對所有注冊在Eureka Server上的服務進行了代理。 當然了,zuul也支持更加細粒度的支持,比如對某些特定的微服務,或者特定的URL等,這里我們繼續來學習下zuul更加豐富的路由配置。

官方指導: https://cloud.spring.io/spring-cloud-static/Finchley.SR2/single/spring-cloud.html#netflix-zuul-reverse-proxy


路由配置

1.忽略指定的微服務

在application.yml中通過 zuul.ignored-services屬性指定忽略的微服務 ,多個服務使用,分隔

zuul:ignored-services: microservice-provider-user,micorservice-consumer-movie-ribbon

測試下:

  • 啟動注冊中心Eureka Server 項目 microservice-discovery-eureka
  • 啟動服務提供者micorservice-provider-user
  • 啟動服務消費者 micorservice-consumer-movie-ribbon
  • 啟動zuul網關microservice-gateway-zuul
  • 訪問zuul的端口 http://localhost:4534/microservice-provider-user/user/2

    同時查看 http://localhost:4534/actuator/routes

    說明配置生效了。


    2.自定義微服務的訪問路徑

    在application.yml中通過配置zuul.routes.微服務的ServiceId :指定路徑

    zuul:routes: microservice-provider-user: /userprovider/**

    這樣microservice-provider-user就會被映射到/userprovider/**路徑

    測試一下:

  • 啟動注冊中心Eureka Server 項目 microservice-discovery-eureka
  • 啟動服務提供者micorservice-provider-user
  • 啟動服務消費者 micorservice-consumer-movie-ribbon
  • 啟動zuul網關microservice-gateway-zuul
  • 先訪問 http://localhost:4534/microservice-provider-user/user/4

    再放問下設置的映射路徑: http://localhost:4534/userprovider/user/4

    發現兩個路徑都可以訪問的通,那我們看下zuul的路由映射呢

    http://localhost:4534/actuator/routes

    格式化如下:


    3.忽略所有微服務,只用路由指定微服務

    如果只想讓zuul代理指定的微服務,可以將zuul.ignored-services設置為'*' ,然后再routes中設置指定的微服務

    zuul:ignored-services: '*'routes: microservice-provider-user: /userprovider/**

    測試一下:

  • 啟動注冊中心Eureka Server 項目 microservice-discovery-eureka
  • 啟動服務提供者micorservice-provider-user
  • 啟動服務消費者 micorservice-consumer-movie-ribbon
  • 啟動zuul網關microservice-gateway-zuul
  • 訪問下映射后的路徑,

    那試試原來的地址還能訪問嗎?
    http://localhost:4534/microservice-provider-user/user/4

    看下 zuul的路由情況 http://localhost:4534/actuator/routes

    發現原來的地址沒有被zuul代理, ignored-services: ‘*’ 生效了。


    4.同時指定微服務的serviceId和對應路徑

    效果同效果同自定義微服務的訪問路徑 ,只不過這里用的是電影微服務

    zuul:routes:movie-route: # 該配置方式中,這個名稱是路由名稱,可自定義service-id: micorservice-consumer-movie-ribbonpath: /movie/** #與service-id對應的微服務的路徑

    測試下:

  • 啟動注冊中心Eureka Server 項目 microservice-discovery-eureka
  • 啟動服務提供者micorservice-provider-user
  • 啟動服務消費者 micorservice-consumer-movie-ribbon
  • 啟動zuul網關microservice-gateway-zuul
  • zuul的路由情況:

    訪問 movie微服務映射后的地址 http://localhost:4534/movie/movie/2


    5.同時指定微服務的URL和對應路徑

    zuul:routes:movie-route: # 該配置方式中,這個名稱是路由名稱,可自定義url: http://localhost:7902/ # 指定的url 7902 為 該微服務的啟動端口path: /movie/** #與service-id對應的微服務的路徑

    如上配置可以實現將/movie/** 映射到 http://localhost:7902/**

    測試

  • 啟動注冊中心Eureka Server 項目 microservice-discovery-eureka
  • 啟動服務提供者micorservice-provider-user
  • 啟動服務消費者 micorservice-consumer-movie-ribbon
  • 啟動zuul網關microservice-gateway-zuul
  • zuul的路由情況:

    訪問 movie微服務映射后的地址:

    但是這種配置方式的路由不會作為HystrixCommand執行,同時不能使用Ribbon來負載均衡多個URL。 可以使用下面的的配置來使用Zuul的Hystrix 、Ribbon特性


    6.同時指定微服務的URL和對應路徑,并且不破壞Zuul的Hystrix 、Ribbon特性

    方式一:

    根據官網的指導,我們來改造下

    zuul:routes:movie-route: # 該配置方式中,這個名稱是路由名稱,可自定義service-id: micorservice-consumer-movie-ribbonpath: /movie/** #與service-id對應的微服務的路徑ribbon:eureka:enabled: false # 為Ribbon禁用Eurekamicorservice-consumer-movie-ribbon: # 上面的service-idribbon:listOfServers: http://localhost:7901,http://localhost:7902

    方式二:


    7.使用正則表達式指定Zuul的路由匹配規則

    @Bean public PatternServiceRouteMapper serviceRouteMapper() {return new PatternServiceRouteMapper("(?<name>^.+)-(?<version>v.+$)","${version}/${name}"); }

    看下 PatternServiceRouteMapper

    構造函數兩個參數 servicePattern 和 routePattern

    • servicePattern 微服務正則
    • routePattern 路由正則

    上述的規則含義是 將 microservice-provider-user-v1這種微服務,映射到/v1/microservice-provider-user/**這個路徑


    8.設置路由前綴

    示例一:

    zuul:prefix: /apistrip-prefix: falseroutes:microservice-provider-user: /userprovider/**

    microservice-provider-user的控制層增加如下方法用作測試

    訪問 : http://localhost:4534/api/userprovider/3

    訪問zuul的 http://localhost:4534/api/userprovider/3 被轉發到 microservice-provider-user的 /api/{id} 方法 。

    查看zuul的路由規則 http://localhost:4534/actuator/routes


    示例二:

    zuul:routes:microservice-provider-user: # 微服務的serviceIdpath: /user/**strip-prefix: false

    訪問zuul的 /user/2 將被轉發到microservice-provider-user的/user/2

    microservice-provider-user日志:

    查看下zuul的路由 http://localhost:4534/actuator/routes


    9.忽略某些路徑

    如果需要更加細粒度的路由控制,比如想讓zuul代理某個服務,同時又想保護該微服務的某些敏感路徑,這個時候 ignored-patterns屬性就派上用場了。

    zuul:routes:microservice-provider-user: /userprovider/**ignored-patterns: /**/admin/** # 忽略包含admin的路徑

    小提示

    如果想看更多zuul的轉發細節,請將 com.netflix包的日志設置為debug級別。

    application.yml中增加

    logging:level:com.netflix: DEBUG # 將 com.netflix包的日志級別設置為debug

    舉個例子:

    server:port: 4534spring:application:name: microservice-gateway-zuuleureka:client:service-url:defaultZone: http://artisan:artisan123@localhost:8761/eurekainstance:instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}}#actuator 啟用所有的監控端點 “*”號代表啟用所有的監控端點,可以單獨啟用,例如,health,info,metrics # spring boot 升為 2.0 后,為了安全,默認 Actuator 只暴露了2個端點,heath 和 info management:endpoints:web:exposure:include: "*" endpoint:health:show-details: ALWAYSzuul:prefix: /apistrip-prefix: falseroutes:microservice-provider-user: /userprovider/**logging:level:com.netflix: DEBUG # 將 com.netflix包的日志級別設置為debug,將打印zuul的轉發細節

    調用 http://localhost:4534/api/userprovider/3 ,觀察zuul的日志如下

    然后去對應的微服務看是否有匹配的路徑即可。


    總結

    以上是生活随笔為你收集整理的Spring Cloud【Finchley】-16 Zuul的路由配置的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。