Spring WebFlux与标准Spring Boot,TomCat,Jetty,Servlet 3.1,Netty相比有哪些优势?

wik*_*ikk 7 spring-webflux

据我所知 - 有机会消耗更少的RAM和CPU.

据我所知,Servlet 3.1已经使用了NIO.速度和/或装载有什么优势吗?

Bri*_*zel 7

这是一个相当广泛的话题 - 但我们首先要清楚一点.

  • Spring MVC是一个基于Servlet API的Web框架; 这些应用程序可以部署在Servlet容器上(如Jetty,Tomcat,Undertow).
  • Spring WebFlux是一个基于反应式HTTP层的反应式Web框架; 这样的应用程序可以部署在Netty或Undertow(使用本机适配器)或Jetty/Tomcat /任何Servlet 3.1容器(感谢Servlet 3.1适配器).
  • Spring Boot应用程序可以使用Spring MVC或Spring WebFlux

Spring Framework 5.0提供了一个有关几个有用资源常见问题解答.简而言之,这种方法对于处理大量延迟和并发的工作负载的效率和可伸缩性是有益的.

实际上,Servlet 3.1异步I/O也确实解决了这些问题,但是使用该API需要不使用阻塞的Servlet API的其他位.这就是Spring WebFlux不在其编程模型中公开Servlet API而是利用Servlet适配器的原因.

  • 确实并没有太大的区别,但这可能取决于您的用例。此外,在不太常见的用例(例如http客户端突然断开连接)中,它们的行为可能会有所不同。 (2认同)