springboot webflux/reactive/coroutines 与传统/MVC 相比节省了多少资源 - 值得吗?

问题描述 投票:0回答:1

Springboot 有一些方法来服务 Web 请求:

  • MVC,和
  • 使用 Project Reactor 的 webflux,它利用非阻塞 IO 来减少内存使用线程开销,并且
  • 使用 kotlin 协程的 webflux

从 MVC 切换到 webflux 可以节省哪些资源使用?

spring-boot spring-webflux kotlin-coroutines
1个回答
0
投票

请参阅 https://github.com/barrett-rob/kotlin-springboot-reactive-resource-usage,快速比较 Spring Boot 每个请求的资源使用情况与反应式方法与传统 MVC 方法的比较。

这个实验是人为的 - 三个示例之间的区别只是 Web 请求处理层的线程行为。如果您在底层 IO 操作中引入更多变化,您的结果将会有所不同,但通常会显示以下结果:

传统 MVC 使用的线程最多,协程大约只有一半,而 Reactor 甚至更少。 传统 MVC 使用的堆/内存最多,协程较少,而 Reactor 则更少。 由此得出的一些想法:

如果最小化每个请求的计算成本是您的唯一目标,那么选择 Reactor,但会牺牲命令式编码风格。 与 MVC 相比,协程在不改变编码风格的情况下提供了明确的内存和线程优势。

© www.soinside.com 2019 - 2024. All rights reserved.