SpringBoot是最近几年比较流行的web应用开发框架,它是微服务的一个开发框架。它的Web服务器内核为Tomcat或Jetty,它们作为Servlet容量来对客户端的http/https请求进行解析。最近,spring.io又出推出一套新的服务器内核框架,它就是WebFlux,以流(stream)的方式进行客户端请求的解析与处理。
Vertx 是另一套微服务开发框架,它是由Eclipse提供的,其服务器内核是Netty。这个与WebFlux其实是相同的。最近国内有不少朋友发文说,SpringBoot的WebFlux的性能也没有想象的那么好,他们指出虽然Non-Blocking技术被使用了。但性能上也存在问题。我虽然没有对他们的测试结果进行考证,但受他们的文章的启发用SpringBoot+Vertx 3 + JDBC搭建一个项目。
整体上,这个Demo项目是SpringBoot进行整个项目的底层管理,用Vertx实现RestFul层,用Spring的Service层进行业务处理,以HIKARI进行数据库连接池的管理,使用JdbcTemplate进行数据库的操作,整体性能确实有不小的提高,但开发的复杂程序也有不少提高。特别是将客户请求数据传给Spring 的Service时,使用到了EventBus,这时候,并发性提高的同时,代码实现的复杂性也增加了很多。
从这个Demo经历来看,在目前应用服务器用户较小的情况下,完全没有必要使用Vertx进行开发,使用SpringBoot已经足够了。