Quarkus基础概念
常规Spring Boot服务容器化的困境
近几年由于云原生技术的普及,越来越多的用户开始使用容器来运行微服务应用,容器化带来的可观的优点很多,简单来说就是使得应用构建、测试、部署的流程更加自动化和标准化,提升了开发团队的效率和协作性。并且易于扩展与管理。
但是随着容器技术朝追求服务颗粒度越来越小,追求轻量快速部署的路线发展中,常规的Spring Boot应用显得越来越臃肿。
常规的Spring Boot应用比如一个Restful服务的jar包,加上JDK以及相关各种依赖打包成docker镜像文件大小通常都超过100M,而对于满足相同业务场景并且进行优化后的 Go 语言可执行程序 Docker 镜像大小可以压缩到 10MB 到 50MB 之间。
可以由此简单看出对于Java应用云原生化,特别是Spring Boot应用来说,容器化往往伴随着JVM对于内存的使用量变的越来越大,并且SpringBoot的微服务应用启动的速度越来越慢,配合中小企业可怜的maven私服的带宽,项目从本地开发部署到云端生产环境往往耗时严重漫长,严重降低开发、测试、运维的成本。
|
|
什么是Quarkus?
Quarkus是一个为GraalVM和HotSpot定制的Kubernetes原生Java框架,作为一个在Apache许可证2.0版下许可的开源项目,从2019年三月发布后,至今已经积累了五年庞大的社区生态(数据库持久化、RESTful 服务 、 消息与事件驱动 、安全 、监控与日志 ),对于中小企业,在服务器资源有限、研发资源有效的情况下,Quarkus的快速启动时间和低内存占用以及支持响应式编程和编译时优化等优点都都能对中小企业的开发工作带来了便捷并未支持企业未来的扩展和现代化转型提供可行性。
对于传统 Java 开发者来说,Quarkus 的一些新概念和现代开发模式(如响应式编程、编译时优化等)确实需要时间去适应。但是如果是一些新需求,新项目来说,使用Quarkus进行开发带来的效果是长远并且值得的。
Quarkus为什么这么快?
Quarkus的中心思想是在构建时做传统框架在运行时做的事情:配置解析、classpath扫描、基于classloading的功能切换,等等。
Quarkus使用的依赖注入框架Arc在构建时推断出注入图,尽可能地避免反射,以常规调用取代反射调用;减少启动时间和内存使用;Quarkus应用程序在原生编译过程中运行大部分启动代码

只需要三步用Quarkus CLI搭建一个基础服务
Quarkus CLI 是Quarkus 提供的一套命令行工具,旨在简化 Quarkus 应用的创建、管理和开发过程。通过 Quarkus CLI,开发者可以更方便地执行常见的项目操作,如创建项目、添加扩展、启动开发模式等; Quarkus CLI 提供以下功能:
- 项目创建 通过简单的命令,快速生成一个新的 Quarkus 项目
quarkus create app org.acme:my-quarkus-app
- 添加扩展 在现有项目中添加 Quarkus 扩展(ORM、消息队列 、日志、三方库)
# 将 Hibernate ORM with Panache 扩展添加到项目中
quarkus ext add quarkus-hibernate-orm-panache
- 启动开发模式 使用 Quarkus 的开发模式(Dev Mode),可以在进行代码修改时实时查看效果,无需手动重启应用
quarkus dev
- 构建与运行 构建项目和运行 Quarkus 应用
quarkus build
quarkus run
- 运行项目测试
quarkus test
除此之外还可以查看项目中已安装的扩展、通过 GraalVM 生成原生镜像;Quarkus CLI上手容易,适合初学者也适合经验丰富的开发者。
第一步: 安装 Quarkus CLI

curl -Ls https://sh.jbang.dev | bash -s - trust add https://repo1.maven.org/maven2/io/quarkus/quarkus-cli/
curl -Ls https://sh.jbang.dev | bash -s - app install --fresh --force quarkus@quarkusio
对于使用 Powershell命令行的Windows环境:
iex "& { $(iwr https://ps.jbang.dev) } trust add https://repo1.maven.org/maven2/io/quarkus/quarkus-cli/"
iex "& { $(iwr https://ps.jbang.dev) } app install --fresh --force quarkus@quarkusio"
Homebrew:
brew install quarkusio/tap/quarkus
我通过第一种方式安装的版本(macOS 14):

第二步: 通过CLI创建Quarkus应用
没有看错,真的就只有一行代码!
quarkus create && cd 项目名称
当然quarkus官方初始化项目的maven坐标为org.acme:code-with-quarkus:1.0.0 如果想自定义包名,或者创建多级多模块的 Maven 项目的话请参考这篇文章:「Quarkus基础系列」Quarkus 多模块项目实践:从构建到部署的全流程指南在本篇文章中,我们将详细探讨如何使用 - 掘金 (juejin.cn)
第三步:原生,启动!
quarkus dev
启动开发模式 使用 Quarkus 的开发模式(Dev Mode),可以在进行代码修改时实时查看效果,无需手动重启应用。

如果你觉得这篇文章对你有帮助,不妨分享给你的同事或朋友,让更多人了解 Quarkus 的强大之处。创造不易,关注专栏,获取更多关于 Quarkus 的实践技巧与案例!
