SpringBoot Webflux 与 Vert.x的性能比较
  vyFMxdhqlaAP 2023年11月02日 162 0

大家好,我是老七,关注我,将持续更新更多精彩内容!

SpringBoot Webflux 与 Vert.x的性能比较_Java

鉴于众多读者的要求,本文深入比较了Spring Boot Webflux和Vert.x,尽管需要注意的是,这个比较可能不是完全公平的。许多读者表达了对了解Spring Boot、Vert.x甚至Spring Boot Webflux之间差异的兴趣。如果您熟悉Java生态系统,这些名字可能不需要介绍。废话不多说,让我们详细了解这些技术。

测试设置 为了评估Java性能,我们在一台搭载16GB RAM的MacBook Pro M1上进行了一系列严格的测试。用于这些评估的负载测试工具是Bombardier,这是一种可靠的选择,用于测量在不同负载下应用程序的性能。测试使用了Java 21版本,以确保在评估中考虑了最新的改进和优化。

除了Java版本外,应用程序的性能还使用了两种流行的框架进行了评估:

  • Spring Boot Webflux v3.1.4
  • Vert.x v4.4.5

现在,让我们深入了解经过严格测试的应用程序代码的具体内容。

Spring Boot Webflux

package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.web.reactive.config.EnableWebFlux;
import org.reactivestreams.Publisher;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import reactor.core.publisher.Mono;

@SpringBootApplication
@EnableWebFlux
@Controller
public class Application {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class);
    }

    @GetMapping("/")
    @ResponseBody
    public Publisher<String> handler() {
        return Mono.just("Hello world!");
    }
}

Vert.x

package com.example.starter;

import io.vertx.core.AbstractVerticle;
import io.vertx.core.Promise;
import io.vertx.core.http.HttpServer;
import io.vertx.ext.web.Router;

public class MainVerticle extends AbstractVerticle {

  @Override
  public void start(Promise<Void> startPromise) throws Exception {
    HttpServer server = vertx.createHttpServer();
    Router router = Router.router(vertx);

    router.get("/").respond(ctx -> ctx
        .response()
        .putHeader("Content-Type", "text/plain")
        .end("hello world!"));

    server.requestHandler(router).listen(3000);
  }
}

测试结果 每一次对1000万次请求的测试都是在50、100和300并发连接下执行的。在负载测试中,我们使用了Bombardier负载测试工具。

这些结果不仅有助于我们理解这两种框架的性能,也有助于我们选择适合特定应用需求的最佳框架。

结果

下面以图表的方式展示结果:

SpringBoot Webflux 与 Vert.x的性能比较_Java_02

SpringBoot Webflux 与 Vert.x的性能比较_spring_03

SpringBoot Webflux 与 Vert.x的性能比较_spring_04

SpringBoot Webflux 与 Vert.x的性能比较_Java_05

SpringBoot Webflux 与 Vert.x的性能比较_spring_06

SpringBoot Webflux 与 Vert.x的性能比较_Java_07

SpringBoot Webflux 与 Vert.x的性能比较_Web_08

SpringBoot Webflux 与 Vert.x的性能比较_spring_09

SpringBoot Webflux 与 Vert.x的性能比较_Java_10

SpringBoot Webflux 与 Vert.x的性能比较_Java_11

SpringBoot Webflux 与 Vert.x的性能比较_Java_12

SpringBoot Webflux 与 Vert.x的性能比较_spring_13

表格结果

下面是结果对比的表格:

SpringBoot Webflux 与 Vert.x的性能比较_spring_14

SpringBoot Webflux 与 Vert.x的性能比较_spring_15

SpringBoot Webflux 与 Vert.x的性能比较_spring_16

记分卡

计分卡是通过以下公式从结果中生成的。对于每项测量,获取获胜边距。如果获胜差值为

  • < 5%,则不得分
  • 在 5%至 20%之间,获胜者得 1 分
  • 介于 20% 和 50% 之间,获胜者得 2 分
  • >50%,获胜者得 3 分

如果您喜欢总结,以下是评分结果:

SpringBoot Webflux 与 Vert.x的性能比较_Java_17

SpringBoot Webflux 与 Vert.x的性能比较_spring_18

总结:

从结果上来看,我们会发现Vert.x会比SpringBoot Webflux要快55%左右。


如果各位觉得老七的文章还不错的话,麻烦大家动动小手,

点赞、关注、转发走一波!![谢谢] [谢谢] [谢谢]

有任何问题可以评论区留言或者私信我,我必将知无不言言无不尽!

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  2Vtxr3XfwhHq   2024年05月17日   53   0   0 Java
  Tnh5bgG19sRf   2024年05月20日   107   0   0 Java
  8s1LUHPryisj   2024年05月17日   46   0   0 Java
  aRSRdgycpgWt   2024年05月17日   47   0   0 Java
vyFMxdhqlaAP