微服務網關Zuul和Gateway的區別


spring-cloud-Gatewayspring-cloud的一個子項目。而zuul則是netflix公司的項目,只是spring將zuul集成在spring-cloud中使用而已。
因為zuul2.0連續跳票和zuul1的性能表現不是很理想,所以催生了spring團隊開發了Gateway項目。

Zuul:

使用的是阻塞式的 API,不支持長連接,比如 websockets。

底層是servlet,Zuul處理的是http請求

沒有提供異步支持,流控等均由hystrix支持。

依賴包spring-cloud-starter-netflix-zuul。

Gateway:

Spring Boot和Spring Webflux提供的Netty底層環境,不能和傳統的Servlet容器一起使用,也不能打包成一個WAR包。

依賴spring-boot-starter-webflux和/ spring-cloud-starter-gateway

提供了異步支持,提供了抽象負載均衡,提供了抽象流控,並默認實現了RedisRateLimiter。

二、相同點:

1、底層都是servlet

2、兩者均是web網關,處理的是http請求

三、不同點:

1、內部實現:

  gateway對比zuul多依賴了spring-webflux,在spring的支持下,功能更強大,內部實現了限流、負載均衡等,擴展性也更強,但同時也限制了僅適合於Spring Cloud套件
  zuul則可以擴展至其他微服務框架中,其內部沒有實現限流、負載均衡等。
2、是否支持異步
  zuul僅支持同步
  gateway支持異步。理論上gateway則更適合於提高系統吞吐量(但不一定能有更好的性能),最終性能還需要通過嚴密的壓測來決定
3、框架設計的角度
  gateway具有更好的擴展性,並且其已經發布了2.0.0的RELESE版本,穩定性也是非常好的
4、性能
  WebFlux 模塊的名稱是 spring-webflux,名稱中的 Flux 來源於 Reactor 中的類 Flux。Spring webflux 有一個全新的非堵塞的函數式 Reactive Web 框架,可以用來構建異步的、非堵塞的、事件驅動的服務,在伸縮性方面表現非常好。使用非阻塞API。 Websockets得到支持,並且由於它與Spring緊密集成,所以將會是一個更好的 開發 體驗。
  Zuul 1.x,是一個基於阻塞io的API Gateway。Zuul已經發布了Zuul 2.x,基於Netty,也是非阻塞的,支持長連接,但Spring Cloud暫時還沒有整合計划。

四、總結
  總的來說,在微服務架構,如果使用了Spring Cloud生態的基礎組件,則Spring Cloud Gateway相比而言更加具備優勢,單從流式編程+支持異步上就足以讓開發者選擇它了。
  對於小型微服務架構或是復雜架構(不僅包括微服務應用還有其他非Spring Cloud服務節點),zuul也是一個不錯的選擇。


Spring  WebFlux是隨Spring 5推出的響應式Web框架。

1、spring-webflux支持兩種開發模式:

        (1)類似於Spring WebMVC的基於注解(@Controller、@RequestMapping)的開發模式;

        (2)Java 8 lambda風格的函數式開發模式。

2、WebFlux是基於響應式流的,可以用來建立異步、非阻塞、事件驅動的服務。默認采用Reactor作為響應式流的實現庫,也提供對RxJava的支持。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM