天天看點

SpringCloud微服務實戰(十一)-微服務網關及其實作原理(Zuul為例講解)(下)4 實踐

3.5 Zuul 2.0 服務架構新特性

zuul2.0使用netty server作為網關監聽伺服器監聽用戶端發來的請求,然後把請求轉發到前置過濾器(inbound filters)進行處理,處理完畢後在把請求使用netty client代理到具體的後端伺服器進行處理,處理完畢後在把結果交給後者過濾器(outbound filters)進行處理,然後把處理結果通過nettyServer寫回用戶端。

SpringCloud微服務實戰(十一)-微服務網關及其實作原理(Zuul為例講解)(下)4 實踐

在zuul1.0時候用戶端發起的請求後需要同步等待zuul網關傳回,zuul網關這邊對每個請求會分派一個線程來進行處理,這會導緻并發請求數量有限。

而zuul2.0使用netty作為異步通訊,可以大大加大并發請求量。

4 實踐

SpringCloud微服務實戰(十一)-微服務網關及其實作原理(Zuul為例講解)(下)4 實踐
SpringCloud微服務實戰(十一)-微服務網關及其實作原理(Zuul為例講解)(下)4 實踐
SpringCloud微服務實戰(十一)-微服務網關及其實作原理(Zuul為例講解)(下)4 實踐
SpringCloud微服務實戰(十一)-微服務網關及其實作原理(Zuul為例講解)(下)4 實踐
SpringCloud微服務實戰(十一)-微服務網關及其實作原理(Zuul為例講解)(下)4 實踐

注意端口

SpringCloud微服務實戰(十一)-微服務網關及其實作原理(Zuul為例講解)(下)4 實踐

嵌入式Zuul反向代理

Spring Cloud已經建立了一個嵌入式Zuul代理,以簡化UI應用程式想要代理對一個或多個後端服務的調用的非常常見的用例的開發。此功能對于使用者界面對其所需的後端服務進行代理是有用的,避免了對所有後端獨立管理CORS和驗證問題的需求。

要啟用它,使用@EnableZuulProxy注釋Spring Boot主類,并将本地調用轉發到相應的服務

SpringCloud微服務實戰(十一)-微服務網關及其實作原理(Zuul為例講解)(下)4 實踐

按照慣例,ID為“用Users”的服務将接收來自位于/users的代理(具有字首stripped)的請求。

代理使用Ribbon來定位要通過發現轉發的執行個體,并且所有請求都以hystrix指令執行,是以故障将顯示在Hystrix名額中,一旦電路打開,代理将不會嘗試聯系服務。

添加注解

SpringCloud微服務實戰(十一)-微服務網關及其實作原理(Zuul為例講解)(下)4 實踐

Zuul啟動器不包括發現用戶端,是以對于基于服務ID的路由,還需要在類路徑中提供其中一個路由(例如Eureka)

SpringCloud微服務實戰(十一)-微服務網關及其實作原理(Zuul為例講解)(下)4 實踐

先将 Product 服務啟動

SpringCloud微服務實戰(十一)-微服務網關及其實作原理(Zuul為例講解)(下)4 實踐
SpringCloud微服務實戰(十一)-微服務網關及其實作原理(Zuul為例講解)(下)4 實踐