Spring Cloud學習(5) - Zuul路由網關

一、Zuul有什麼功能?

Zuul作爲路由網關組件,主要提供了以下功能:

  • Zuul + Eureka + Ribbon,可以實現智能路由和負載均衡的功能,將請求按照某種策略分發到集羣狀態的多個服務實例中去
  • 將所有服務的API接口統一聚合,並統一對外暴露,方便外部系統調用,也方便開發測試。外部系統不需要了解微服務系統中的調用鏈路,也屏蔽了微服務系統的內部API接口
  • 可以集成身份認證和權限認證
  • 實現監控功能,實時日誌輸出,記錄請求信息
  • 實現流量監控,可以用來控制服務的降級

不過在Spring Cloud中,現在Zuul基本已經被Spring Cloud推出的新一代網關框架-服務網關Gateway代替了。

二、Zuul的工作原理

Zuul是通過Servlet來實現的,可以通過自定義的ZuulServlet來對請求進行控制,類似SpringMVC的DispatchServlet。

Zuul的過濾器包括以下四種:

  • PRE過濾器:最早執行,在請求路由到具體的微服務實例之前,可以做安全校驗等
  • ROUTING過濾器:將請求路由到具體的微服務實例,默認情況下使用Http Client進行網絡請求
  • POST過濾器:請求已經被路由到微服務實例並執行完成之後執行,可以用於收集統計信息,指標,以及將響應返回到客戶端
  • ERROR過濾器:其他過濾器發生錯誤時執行

流程如下圖所示:

在這裏插入圖片描述

Zuul也可以通過配合Ribbon和Hystrix實現負載均衡和熔斷器的效果。

三、Zuul集羣常見架構

  1. 通過不同的渠道使用不同的Zuul來進行路由,比如架設三個Zuul網關示例的集羣,移動端用一個,Web端用一個,其他客戶端用一個。同理可以給流量較大的外部系統單獨提供一個Zuul網關實例。
  2. 通過Nginx和Zuul結合,Nginx暴露在最外層,通過Nginx將請求負載均衡轉發到Zuul集羣上
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章