zuul的作用
過濾請求、對過濾器進行動態的加載、編譯、運行
驗證與安全:識別面向各類資源的驗證要求並拒絕那些與要求不符的請求。
審查與監控:在邊緣位置追蹤有意義數據及統計結果,從而為我們帶來准確的生產狀態結論。動態路由:以動態方式根據需要將請求路由至不同后端集群處。
壓力測試:逐漸增加指向集群的負載流量,從而計算性能水平。
負載分配:為每一種負載類型分配對應容量,並棄用超出限定值的請求。靜態響應處理:在邊緣位置直接建立部分響應,從而避免其流入內部集群。
其核心是一系列的filters,定義了四套標准
PRE:路由之前調用,實現身份驗證
ROUTING:將請求路由到微服務
POST,微服務以后執行,響應header
ERROR,錯誤時執行
Filter有四個方法,分別為
filterType():過濾器的類型,它決定過濾器在請求的哪個生命周期中執行。
fiterOrder:過濾器的執行順序。當請求在一個階段中存在多個過濾器時,需要根據該方法返回的值來依次執行。通過數字指定,數字越大,優先級越低。
shouldFiter:判斷該過濾器是否需要被執行。直接返回true,則該過濾器對所有請求都會生效。實際運用中我們可以利用該函數來指定過濾器的有效范圍。 r
un():過濾器的具體邏輯。
gateway使用了高性能框架Netty,由三部分組成
1、filter過濾器:攔截和修改請求
2、route路由:斷言為真,則路由匹配,目標URI會被訪問
3、predicate斷言:匹配HTTP請求的任何內容
zuul與spring-cloud-gateway的區別
不同點:
gateway吞吐率比zuul高,耗時比zuul少,性能比zuul高倍左右,
gateway對比zuul多依賴了spring-webflux,
zuul僅支持同步,gateway支持異步。
gateway具有更好的擴展性
相同點:
1、底層都是servlet
2、兩者均是web網關,處理的是http請求