新技术研究:quarkus
前言
Quarkus是Kubernetes为GraalVM量身定制的本地Java堆栈。 那么 quarkus 有什么是非常吸引人的:启动速度,内存占用小,利用 graalvm 可以做到把 jar 应用转成二进制的可执行文件即 native 镜像,还有就是开发环境对开发人员的友好体现在只要代码保存就会快速生效,在开发测试环境的一键部署,更关键的是性能的极大提升。
一、开始之路
quarkus附带了一个maven原型来构建一个非常简单的启动项目。
mvn io.quarkus:quarkus-maven-plugin:1.13.0.Final:create \
-DprojectGroupId=org.acme \
-DprojectArtifactId=getting-started \
-DclassName="org.acme.quickstart.GreetingResource" \
-Dpath="/hello"
这将创建一个名为greetingresource
的简单jax - rs资源。
@Path("/hello")
public class GreetingResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "hello";
}
}
二、使用步骤
1.打包
mvn clean package
需要分发-runner.jar。
如果quarkus.package属性设置为true,则uber-jar与jar中绑定的所有依赖项一起创建。
默认情况下,quarkus使用快速jar打包,如果quarkus.package.type 属性设置为legacy-jar,则quarkus创建旧标准jar。
application.properties
quarkus.package.uber-jar=true
quarkus.package.type=legacy-jar
要编译为本机,您需要设置graalvm_home环境变量并运行本机pro
mvn clean package -Pnative
./gradlew build -Dquarkus.package.type=native
可能的夸克包类型有:jar、legacy-jar、super -jar和native。
2.单体应用部署
前后端不分离,就需要用到 quarkus 里面的模板 qute,代码层面用到的程度就是基于 Hibernate ORM with Panache + qute 这是主要的技术支撑,还有一些比如图片的导入、展示(这里涉及到上传下载的技术),这种框架是支持mongdb的,消息队列这块 kafka、amqp 都是支持的。
前后端读写分离,是支持jwt 内容。
总结
目前夸克支持内容有限,因此quarkus 目前最大的问题是推广和研究学习,把 spring 里面成熟的技术,对开发帮助大的技术点都用 quarkus 实现一下,比如 redis key 的获取方式不能用 #user.id 这种获取方式显然是对实际需求考虑的不到位。