code-with-quarkus
code-with-quarkus 是使用官网生成的demo项目
这个项目使用Quarkus(使用3.13.0版本,该版本支持JDK21),超音速亚原子Java框架。
官网地址: https://quarkus.io/.
环境要求
OS: Windows 10.0 +
jdk 11+
maven 3.9+
IntelliJ IDEA 2024.1 (Community Edition)
一、准备工作
1、在IDEA中,给目标项目配置JDK(11+)

2、Debug模式启动项目:
mvn compile quarkus:dev 命令启动时,会自动监听5005端口进入调试模式, 只需要在IEDA中添加调试器(Attach debugger), 即可断点调试




二、开发模式启动项目
命令:
./mvnw compile quarkus:dev
NOTE: Quarkus now ships with a Dev UI, which is available in dev mode only at http://localhost:8080/q/dev/.
三、打包项目
命令:
./mvnw package
它在“target/quarkus-app/”目录中生成“quarkus-run.jar”文件。
请注意,它不是一个_über-jar_,因为依赖项被复制到“target/quarkus-app/lib/”目录中。
该应用程序现在可以使用java-jar target/quarkus-app/quarkus-run.jar运行。
如果要构建_über-jar_,请执行以下命令:
./mvnw package -Dquarkus.package.jar.type=uber-jar
该应用程序打包为_über-jar_,现在可以使用java-jar target/*-runer.jar运行。
四、创建可执行文件、部署
打包命令:
cd quarkus-helloworld
./mvnw package -Dnative
如果本地未安装GraalVM ,您可以使用以下命令在容器中运行原生可执行构建包**(需要先安装Docker)**:
cd quarkus-helloworld
./mvnw package -Dnative -Dquarkus.native.container-build=true
参数说明:
-Dquarkus.native.container-build=true 表示使用容器把jar构建成镜像,而不是用本地GraalVM
-Dquarkus.native.container-runtime=docker 表示使用Docker构建,也可以使用Podman。默认就是docker,此参数可以忽略。

查看docker镜像,已生成了应用的镜像文件(jar包模式):

运行方式一:根据镜像(jar包模式)启动应用:
docker run -id -p 8080:8080 --name code-with-quarkus 004183/code-with-quarkus:1.0.0-SNAPSHOT

运行方式二: linux系统中直接运行可执行文件
也可以在linux系统中给(./target/code-with-quarkus-1.0.0-SNAPSHOT-runner)你的原生可执行包赋权,并运行。

可以看出,直接运行可执行文件来启动时,运行速度相当快。
运行方式三: 把原生可执行包 做成 docker镜像 并启动
cd quarkus-helloworld
docker build -f src/main/docker/Dockerfile.native -t quarkus/code-with-quarkus .

docker run -id -p 8081:8080 --name code-with-quarkus-native quarkus/code-with-quarkus

如果您想了解有关构建本机可执行文件的更多信息,请咨询https://quarkus.io/guides/maven-tooling
简单结论:
一、从占用服务器内存资源的角度分析:
- jar包的应用占用的180M内存,docker容器中运行原生包占用28.21M内存,有将近6倍内存资源占用的差距。
二、从启动速度上角度分析:
- jar包启动时间通常随着包体积的增大而变长,docker容器中运行原生包启动速度非常快,通常是毫秒级启动
三、从服务扩容的快速响应速度分析:
- jar包启动后,需要一定的预热时间、预热的内存,在高并发、流量浪涌的场景中,无法快速响应。
- docker容器中运行原生包启动,预热时间极短、预热内存极少,可以快速响应高并发、流量浪涌的业务场景。

被折叠的 条评论
为什么被折叠?



