1. 程式人生 > >微服務SpringCloud—Zuul的路由端點

微服務SpringCloud—Zuul的路由端點

zuul的路由端點

當@EnableZuulProxy與Spring Boot Actuator配合使用時,Zuul會暴露一個路由管理
端點/routes。藉助這個端點,可以方便、直觀地檢視以及管理Zuul的路由。

/routes端點的使用非常簡單。使用GET方法訪問該端點,即可返回Zuul當前對映的
路由列表;使用POST方法訪問該端點就會強制重新整理Zuul當前對映的路由列表(儘管
路由會自動重新整理,SpringCloud依然提供了強制立即重新整理的方式)。

由於spring-cloud-starter-netflix-zuul已經包含了spring-boot-starter-actuator
寫的microservice-gateway-zuul已經具備路由管理的能力。
下面來做一下測試

1.啟動專案microservice-discovery-eureka。
2.啟動專案microservice-provider-user。
3.啟動專案microservice-consumer-movie。
4.啟動專案microservice-gateway-zuul。
5.使用瀏覽器訪問http:8040/actuator/routes,可獲得如下結果。
在這裡插入圖片描述

注意點:官網檢視暴露端啟2.0動所有暴露端點

#開啟所有暴露端點
management:
    endpoints:
        web:
            exposure:
                include:
"*"

注意在使用Http訪問端點時,需要加上預設/actuator 字首

路由配置詳解

1.自定義指定微服務的訪問路徑
配置zuul.routes.指定微服務的serviceId = 指定路徑 即可。

zuul:
    routes:
        users: /user/**

這樣users微服務就會被對映到user/**路徑

2.忽略指定微服務
忽略服務很簡單,可以使用zuul。ignored-services配置需要忽略的服務,多個用逗號分隔。

zuul:
    ignored-services: users,movie

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

zuul:
    ignored-services: '*'    #使用'*'可忽略所有為服務
    routes:
       users: /users/**

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

zuul:
    routes:
       user-route:             #該配置方式中,user-route只是給路有一個名稱,可以任意起名。
           service-id: users
            path: /users/**      #service-id對應的路徑

5.同時指定path和URL,例如:

zuul:
    routes:
        user-route:         #該配置方式中,user-route只是給路有一個名稱,可以任意起名。
            url: http://localhost:8000/  #指定的url
           path: /user/*                 #url對應的路徑
 這樣就可以將/users/**對映到http://localhost:8000/#.

需要注意的是,使用這種方式的路又不會作為HystrixCommand執行,同時也不能使用Ribbon來負載均衡多個URL,例6可解決該問題。
6.同時指定path和URL,並且不破壞Zuul的Hystrix、Ribbon特性。

zuul:
    routes:
        user-route:
            path: /users/**   
                  service-id: users
 ribbon:
    eureka:
        enable: false     #為Ribbon禁用Eureka
users:
    ribbon:
        listOfServers: localhost:8000,localhost:8001
#這樣既可以指定path與URL,又不破壞Zuul的Hystrix與Ribbon特性了。

7.使用正則表示式指定Zuul的路由匹配規則
藉助RatternSericeRouteMapper,實現從微服務到對映路由的正則配置。例如:

在這裡插入圖片描述
8.路由字首
示例1:

	zuul:
		prefix: /api
		strip-prefix: false
		routes:
			users: /users/**

這樣,訪問Zuul的/api/users/1路徑,
請求將會被轉發到microservice-provider-user的/api/1

示例2:
	zuul:
		routes:
			users:
				path:
				strip-prefix: false

9.忽略某些路徑
想讓Zuul代理某個微服務,同時又想保護改為服務的某些敏感路徑。
此時,可使用ignored-Patterns,指定忽略的正則。例如:

zuul:
    ignored-patterns: /**/admin/**  #忽略所有包含/admin/的路徑
    routes:
        users: users/**            

這樣就可以將users微服務對映到/user/**路徑,但會忽略微服務中所包含的/admin/的路徑。