Spring Cloud Gateway 是 Spring Cloud Finchley 版推出來的新組件,用來代替服務網關:Zuul。java
那 Spring Cloud Gateway 和 Zuul 都有哪些區別呢,我們來比較一下。git
一、開源組織github
Spring Cloud Gateway 是 Spring Cloud 微服務平臺的一個子項目,屬於 Spring 開源社區,依賴名叫:spring-cloud-starter-gateway。web
Zuul 是 Netflix 公司的開源項目,Spring Cloud 在 Netflix 項目中也已經集成了 Zuul,依賴名叫:spring-cloud-starter-netflix-zuul。微信
https://github.com/Netflix/zuulwebsocket
二、底層實現框架
https://stackoverflow.com/questions/47092048/how-is-spring-cloud-gateway-different-from-zuul異步
據 Spring Cloud Gateway 原做者的解釋:socket
Zuul構建於 Servlet 2.5,兼容 3.x,使用的是阻塞式的 API,不支持長鏈接,好比 websockets。另外
Spring Cloud Gateway構建於 Spring 5+,基於 Spring Boot 2.x 響應式的、非阻塞式的 API。同時,它支持 websockets,和 Spring 框架緊密集成,開發體驗相對來講十分不錯。
三、性能表現
這個沒什麼比如的,要比就和 Zuul 2.x 比,Zuul 2.x 在底層上有了很大的改變,使用了異步無阻塞式的 API,性能改善明顯,不過如今 Spring Cloud 也沒集成 Zuul 2.x,因此就沒什麼比如的。
如何選擇?
本文說的 Zuul 指 Zuul 1.x,Netflix 早就發佈了最新的 Zuul 2.x,但 Spring Cloud 貌似沒有整合計劃,棧長看了下目前最新的包,整合的仍是 Zuul 1.x。
據瞭解,正是由於 Zuul 2.x 的不斷跳票,Spring Cloud 才釜底抽薪推出了本身的服務網關:Spring Cloud Gateway,棧長看了下,使用起來比 Zuul 更簡單,配置更方便,因此說選 Spring Cloud Gateway 沒錯,畢竟是 Spring Cloud 親兒子,不會始亂終棄。
關注Java技術棧微信公衆號,棧長將繼續分享 Spring Cloud Gateway 的實戰教程,公衆號第一時間推送,持續關注。在公衆號後臺回覆:cloud,獲取棧長整理的更多的 Spring Cloud 教程,都是實戰乾貨,如下僅爲部分預覽。
本文原創首發於微信公衆號:Java技術棧(id:javastack),關注公衆號在後臺回覆 "cloud" 可獲取更多 Spring Cloud 教程,轉載請原樣保留本信息。