SpringCloud 微服務 (十二) 服務網關 Zuul 基礎

本節記錄學習服務網關的基礎內容安全

在沒有網關的時候,若是有不少服務:order,product ... 那麼客戶端會和每一個服務一一打交道,這明顯不是一個好方式,須要一個服務來充當請求的統一的入口,就是本篇學習的角色---服務網關網絡

那麼全部請求都經過網關,是服務的入口,顯而易見體現網關的做用和注意點,若是網關掛了,那麼全部的請求都摸不着頭腦,因此網關要素必須是高可用,穩定性,另外全部的請求都經過網關,訪問壓力大,說明還具有併發性能,安全性不用說了必備的,根據不一樣類型的服務,作不一樣的措施,好比金融行業服務,確定要對通訊數據加密,服務網關是非業務處理的絕佳場所,好比協議轉發、防刷新、流量管控、日誌等等擴展性架構

總結以上網關的要素: 穩定性、高可用、性能、併發、安全、擴展性等等併發

 

經常使用的網關配套方案 :  負載均衡

①Nginx 框架

Nginx簡介->性能、高可用是Nginx優越之處,事件驅動型設計,全異步的網絡IO處理機制,極少的進程切換,各類優化設計,Nginx由多個不一樣功能,不一樣層次,不一樣類型,耦合度極低的模塊組成,維護功能就比較方便,不會影響其餘功能異步

②Kong微服務

基於Nginx二次開發軟件,商業軟件,不說了性能

③Tyk學習

輕量級,快速可伸縮的API網關,支持配額和速度限制,認證,數據分析,多用戶多組織,提供全Restful API,GO語言開發,發層面上就存在優點

④Spring Cloud Zuul (本次學習目標)

Netflix提供的一個基於JVM路由和服務端的負載均衡器,專爲微服務提供; 若是以Java技術棧爲主構建微服務體系,Zuul提供認證、鑑權、限流、動態路由、監控、彈性、安全、負載均衡、協做單點壓測、靜態響應等邊緣服務框架,若是項目用了Spring/Spring Cloud框架,使用Zuul是個不錯的選擇,若是團隊沒有專門分配網關服務人員,那麼Zuul也是快速上手的選擇

Zuul和Nginx相比,在性能、併發方面都是有所不足,在項目開發中,每每會技術混搭,利用不一樣組件的優點,靈活使用技術組件,在微服務完整生態體系中,選Zuul做爲一個前置網關服務,在外部調用的時候,搭配Nginx,使用Nginx暴露Url,Nginx把請求轉發多個Zuul服務上,讓Nginx承擔性能、併發角色

 

貼一張Request請求&Zuul 生命週期 的過程圖 :

從上面能夠看出來 Zuul=路由+一堆過濾器 ,說明其核心是一堆過濾器,其中的Origin Server是其餘服務,好比product服務、order服務等等,其中custom filter是自定義過濾器,圖中僅標出Pre filter下的自定義,在其餘filter階段也是能夠自定義,每一個Http請求都會通過這些過濾器,通過濾處理獲得響應並返回給客戶端

上圖filter分四種類型 :

●前置(Pre)

請求最早過濾點,在路由前執行,好比能夠作校驗,鑑權,限流,請求轉發等操做

●路由(Route)

將請求轉發到origin server,好比以爲某個請求用的很差或者性能不高,此處能夠本身重寫Http請求

●後置(Post)

此處已經拿到了請求結果,能夠對結果作本身喜歡作的事,好比統計、日誌、封裝、加工結果

●錯誤(Error)

以上三個filter出現異常,就會進入此處,就能夠作一些統一異常處理功能

 

還有看到一張Zuul架構圖,在紅色箭頭處1,2,3filter之間是沒有聯繫的,經過Request Contents進行操做

 

再附上一張項目架構圖,幫助理解

 

關於Zuul學習,本篇就筆記到這裏,後續再作筆記

還要準備下造航母知識,否則沒有機會擰螺絲了,加油

-----------------------------------------------------

相關文章
相關標籤/搜索