大家好,我是老七,关注我,将持续更新更多精彩内容!
鉴于众多读者的要求,本文深入比较了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负载测试工具。
这些结果不仅有助于我们理解这两种框架的性能,也有助于我们选择适合特定应用需求的最佳框架。
结果
下面以图表的方式展示结果:
表格结果
下面是结果对比的表格:
记分卡
计分卡是通过以下公式从结果中生成的。对于每项测量,获取获胜边距。如果获胜差值为
- < 5%,则不得分
- 在 5%至 20%之间,获胜者得 1 分
- 介于 20% 和 50% 之间,获胜者得 2 分
- >50%,获胜者得 3 分
如果您喜欢总结,以下是评分结果:
总结:
从结果上来看,我们会发现Vert.x会比SpringBoot Webflux要快55%左右。
如果各位觉得老七的文章还不错的话,麻烦大家动动小手,
点赞、关注、转发走一波!![谢谢] [谢谢] [谢谢]
有任何问题可以评论区留言或者私信我,我必将知无不言言无不尽!