【问题标题】:What are the advantages of Spring WebFlux over standard Spring Boot, TomCat, Jetty, Servlet 3.1, Netty?Spring WebFlux 相对于标准 Spring Boot、TomCat、Jetty、Servlet 3.1、Netty 有哪些优势?
【发布时间】:2018-03-17 10:50:22
【问题描述】:

据我了解 - 有机会消耗更少的 RAM 和 CPU。

据我所知,Servlet 3.1 也已经在使用 NIO。在速度和/或加载方面有什么优势吗?

【问题讨论】:

    标签: spring-webflux


    【解决方案1】:

    这是一个相当广泛的话题 - 但让我们先搞清楚。

    • 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 提供了一个FAQ about that with several useful resources。简而言之,对于处理大量延迟和并发的工作负载,这种方法可以提高效率和可扩展性。

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

    【讨论】:

    • 感谢您的回答。我还有一个:Servlet 3.1 的响应速度/时间/连接效率是否与 Netty 大致相同?毕竟,他们都使用 NIO。
    • 确实没有太大区别,但这可能取决于您的用例。此外,在不常见的用例中,它们的行为可能会有所不同,例如 http 客户端突然断开连接。
    猜你喜欢
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 2022-06-05
    • 2019-04-25
    • 2011-09-16
    • 2018-07-26
    • 2014-07-23
    相关资源
    最近更新 更多