當前位置:
首頁 > 知識 > Spring Cloud Zuul使用筆記(一)

Spring Cloud Zuul使用筆記(一)

基本使用

主程序類增加@EnableZuulProxy註解

Spring Cloud Zuul使用筆記(一)

1

配置路由規則:

Spring Cloud Zuul使用筆記(一)

2

格式:zuul.routes.服務ID=/URL/**

?:後接1個字元。/URL/a、/URL/b

*:後接1級目錄。/URL/aaa、/URL/bbb

**:後接多級目錄。/URL/aaa/bbb


路由匹配規則載入順序

配置的路由規則存放在LinkedHashMap里,順序就是文件載入的順序,所以如果如下配置:

/URL/**=a-service

/URL/b/**=b-service

當訪問/URL/b/xxx的時候,本意是想訪問b-service,但因為這個URL匹配/URL/**,且/URL/**是先載入的,所以訪問的是a-service。


自動化配置路由規則&忽略

一般來說,我們配置路由規則都是如下格式:serviceId=/serviceId/**。

例如:user-service=/user-service/**。

如果服務太多,這麼一個個地寫在配置文件里也夠麻煩的。

當與Eureka結合之後,Zuul會自動為從Eureka獲取的服務都配一個格式如上的路由規則。

相關類:

SimpleRouteLocator#locateRoutes(),按照配置文件讀取的路由規則順序構建有序Map。

Spring Cloud Zuul使用筆記(一)

3

其子類DiscoveryClientRouteLocator#locateRoutes()在父類方法的基礎上根據serviceId構造默認URL:

Spring Cloud Zuul使用筆記(一)

4

其具體執行是SimpleRouteLocator#apply():

Spring Cloud Zuul使用筆記(一)

5

雖然這麼自動配置路由是方便了,但是Eureka上也許會有不想暴露在外的服務,可用如下配置忽略:

Spring Cloud Zuul使用筆記(一)

6


自定義路由映射

有時候我們會發布新版本的微服務,與老版本的微服務並存,對外提供服務。一般的命名方式:user-service、user-service-v1、user-service-v2,自然而然的,對外提供的url就是/user-service/、/user-service-v1/、/user-service-v2/。

不過如果我們仔細看業界比較常用的url,格式類似:

/v1/user-service/、/v2/user-service/。

在Zuul中,可以使用PatternServiceRouteMapper,通過正則表達式來自定義路由規則:

Spring Cloud Zuul使用筆記(一)

7


Ribbon&Hystrix

其實Zuul可以看做一個特殊的Feign,同樣支持Ribbon與Hystrix,配置可參看前文。



下一篇講講重要的過濾器。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Java個人學習心得 的精彩文章:

Spring Cloud客戶端負載均衡Ribbon筆記
Spring Cloud斷路器Hystrix原理讀書筆記

TAG:Java個人學習心得 |