Quarkus
先来说下Quarkus,目前除了Spring之外,最火的Java框架了吧。俺们公司也用Quarkus做了一些项目了,总体来说,与Spring Boot比较各有优劣。
在Quarkus官网上,有这么一张图来显摆自己是比Spring Boot更牛逼的。
当然,Quarkus的定位倾向于云原生,比如配合 Kubernetes
使用,会很香。
Quarkus Starter
这篇文章主要是从头来讲一下Quarkus的使用。
Quarkus依赖
通过官网,可以看到Quarkus对JDK和Maven的版本依赖。
- JDK 11+ installed with
JAVA_HOME
configured appropriately - Apache Maven 3.9.2
我们需要先确定自己的本机的版本是否符合要求。
Java 版本
可以在命令行工具中使用java -version
进行版本的查询。
Maven 版本
可以在命令行工具中使用mvn --version
进行版本的查询。
如果版本不满足要求,就需要升级版本了。
生成一个Quarkus项目
跟Spring Boot一样,我们可以通过网页,选择需要的组件来配置一个初始化的Quarkus项目。
进入到网址:code.quarkus.io/
在图上大致的标注了下中文,我们将使用这个网址来获得一个初始化的Quarkus项目。因为只是用于编写Demo,我们只选用了以下三个 Extensions
- RESTEasy Reactive Jackson
- Hibernate Reactive with Panache
- Reactive MySQL client
将项目下载到本地解压后,大致的目录结构如下
启动项目
项目导入到IntelliJ IDEA之后,在目录结构上中只能看到一个测试类GreetingResource.java
,没有类似Spring Boot的Main方法,这个时候怎么启动项目呢?
点击IDEA中的添加配置
添加Maven项目
运行命令中填写 quarkus:dev -f pom.xml
在如图位置的运行命令中填写 quarkus:dev -f pom.xml
,然后点击应用按钮即可。
同时确保Java版本和Maven版本都正确。
运行
点击绿色的三角按钮,可以运行项目。如果想进行调试,可以点击绿色三角按钮隔壁的DEBUG按钮。
运行后大致是这个样子的,默认端口是8080,其中加载了挺多的扩展Jar。
调用一下
我们可以使用命令行或者浏览器调用一下,命令行的调用命令如下
curl "http://localhost:8080/hello"
结果如下图
以上,项目算是初步运行起来了。
做一下简单的压测
打包部署
打包命令如下,我们将项目打包成和Spring Boot一样的Jar包,并跳过单元测试。
mvn package -Dquarkus.package.type=uber-jar -Dmaven.test.skip=true
并以Jar包的方式进行部署
java -jar target/demo-with-quarkus-1.0.0-SNAPSHOT-runner.jar
执行结果如下:
压测
可以使用ab或者wrk进行简单的压测,毕竟Quarkus Reactvie有一个性能优势。我这边选择用wrk进行简单压测,并使用jconsole工具检测JVM指标。
wrk的压测命令如下:
wrk -c100 -d1m http://localhost:8080/hello
执行结果如下
而jconsole的面板指标如下
压测结果分析
Quarkus 的性能还是不错的,内存占用和CPU指标都挺让人满意,而QPS达到84530.39
,反而没什么参考意义,并大多数业务瓶颈都在数据库上。
总结
从Quarkus Reactvie的项目配置、搭建、运行、打包、部署、压测的全部流程都写完了,后续会讲一下具体编程方式方法。