Spring WebFlux 相对于标准 Spring Boot、TomCat、Jetty、Servlet 3.1、Netty 的优势是什么?
What are the advantages of Spring WebFlux over standard Spring Boot, TomCat, Jetty, Servlet 3.1, Netty?
据我了解 - 有机会消耗更少的 RAM 和 CPU。
据我所知,Servlet 3.1 也已经在使用 NIO。 and/or加载速度有什么优势吗?
这是一个相当宽泛的话题 - 但让我们先把事情搞清楚。
- Spring MVC是一个基于Servlet的web框架API;此类应用程序可以部署在 Servlet 容器(如 Jetty、Tomcat、Undertow)上。
- Spring WebFlux 是一个基于响应式 HTTP 层的响应式 Web 框架;此类应用程序可以部署在 Netty 或 Undertow(使用本机适配器)或 Jetty/Tomcat/any Servlet 3.1 容器(感谢 Servlet 3.1 适配器)上。
- Spring 引导应用程序可以使用 Spring MVC 或 Spring WebFlux
Spring Framework 5.0 提供了一个FAQ about that with several useful resources。简而言之,对于处理大量延迟和并发的工作负载,这种方法可以提高效率和可扩展性。
事实上,Servlet 3.1 async I/O 确实也解决了这些问题,但是使用它 API 需要脱离使用 Servlet API 的其他阻塞位。这就是 Spring WebFlux 不在其编程模型中公开 Servlet API 而是利用 Servlet 适配器的原因。
据我了解 - 有机会消耗更少的 RAM 和 CPU。
据我所知,Servlet 3.1 也已经在使用 NIO。 and/or加载速度有什么优势吗?
这是一个相当宽泛的话题 - 但让我们先把事情搞清楚。
- Spring MVC是一个基于Servlet的web框架API;此类应用程序可以部署在 Servlet 容器(如 Jetty、Tomcat、Undertow)上。
- Spring WebFlux 是一个基于响应式 HTTP 层的响应式 Web 框架;此类应用程序可以部署在 Netty 或 Undertow(使用本机适配器)或 Jetty/Tomcat/any Servlet 3.1 容器(感谢 Servlet 3.1 适配器)上。
- Spring 引导应用程序可以使用 Spring MVC 或 Spring WebFlux
Spring Framework 5.0 提供了一个FAQ about that with several useful resources。简而言之,对于处理大量延迟和并发的工作负载,这种方法可以提高效率和可扩展性。
事实上,Servlet 3.1 async I/O 确实也解决了这些问题,但是使用它 API 需要脱离使用 Servlet API 的其他阻塞位。这就是 Spring WebFlux 不在其编程模型中公开 Servlet API 而是利用 Servlet 适配器的原因。