本節記錄學習服務網關的基礎內容安全
在沒有網關的時候,若是有不少服務: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學習,本篇就筆記到這裏,後續再作筆記
還要準備下造航母知識,否則沒有機會擰螺絲了,加油
-----------------------------------------------------