小编Ghi*_*ain的帖子

响应式编程比非响应式编程消耗更多的资源吗?

我们目前正面临Spring webFlux的性能问题。为了确定反应式编程的好处,我们实现了Spring Boot服务,该服务从MongoDB中获取数据,并通过REST API将其返回给使用者。

该服务有两种变体:

  1. 使用Spring Boot MongoRepository的非反应式实现。该服务以列表形式返回数据
  2. 使用Spring Boot,ReactiveMongoRepository,spring-boot-starter-webflux的反应式实现。该服务将数据返回为Flux。

在这两种实现中,REST控制器都直接从存储库中获取数据,并将其作为List resp返回。作为助焊剂。不再执行任何应用程序逻辑。

我们对100个调用该服务的用户进行了小规模的负载/性能测试,我们发现非反应式实施的性能远好于反应式实施。

事实上,不仅非反应式实现具有更好的HTTP吞吐量,而且也许更有趣的是,与反应式实现相比,它消耗更少的CPU和更少的线程!这与预期特别相反,因为我们预计反应式版本会以少量线程扩展,如https://spring.io/blog/2016/07/28/reactive-programming-with-spring-5-0中所述-m1

我们需要在设置中进行一些调整吗?

有人遇到过类似的问题吗?

java reactor spring-boot spring-io project-reactor

6
推荐指数
2
解决办法
758
查看次数

标签 统计

java ×1

project-reactor ×1

reactor ×1

spring-boot ×1

spring-io ×1