十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
作者:迷路的架构师 2023-10-07 14:30:47
云计算
云原生 当涉及构建微服务和其他云原生应用程序时,一般我们想到的都是Spring Boot,近年来,Quarkus 也是个逐渐受到关注的流行框架。它和 Spring Boot 两个框架都具有自己的特点和功能,但哪一个最适合你的项目呢?

庆安ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
当涉及构建微服务和其他云原生应用程序时,一般我们想到的都是Spring Boot,近年来,Quarkus 也是个逐渐受到关注的流行框架。它和 Spring Boot 两个框架都具有自己的特点和功能,但哪一个最适合你的项目呢?在本文中,我们将对Quarkus和Spring Boot进行一对一的比较。
Quarkus最大的优势之一是其性能。Quarkus是一个Kubernetes原生框架,也就是说它被设计为在容器化环境中运行。它使用Ahead-of-Time(AOT)编译器将Java字节码预编译为本机代码,从而实现更快的启动时间和较低的内存使用率。当在云环境中运行应用程序时,因为资源通常是有限的,这就便是一个重要的优势。
另外,Spring Boot是一个传统的Java框架,使用Java虚拟机(JVM)来运行应用程序。虽然Spring Boot也可以在容器化环境中运行,但它没有像Quarkus那样的性能优化水平。
Spring Boot和Quarkus之间的最大区别之一是框架的大小。Spring Boot是一个成熟且功能丰富的框架,但它包含许多依赖项,这会增加应用程序的大小。对于一般应用程序来说,这可能不是一个问题,但如果要部署到资源受限的环境(如Kubernetes pod),这可能就是一个较大的问题。
而 Quarkus 是一个相对较新的框架,从一开始就被设计为"supersonic, subatomic Java"。这意味着它与Spring Boot相比,具有更小的运行时占用空间,更适合资源受限的环境。Quarkus还具有使用GraalVM的本地镜像功能,来优化应用程序的大小。
在选择框架时,启动时间是另一个重要考虑因素。Spring Boot应用程序通常具有较长的启动时间,如果要部署到云环境或使用 serverless 函数,这可能是一个要考虑的问题。
Quarkus针对启动时间进行了优化,这使得它成为需要快速启动大量实例的场景的理想选择,比如 serverless 函数或云部署。
Quarkus和Spring Boot都提供了类似的开发体验。两个框架都使用基于注解的编程模型,并提供了广泛的功能,帮助开发人员快速轻松地构建应用程序。然而,Quarkus确实具有一些独特的功能使其脱颖而出。例如,Quarkus具有实时重载功能,允许开发人员对应用程序进行更改并实时查看这些变化,而不需要重新构建整个应用程序。
Spring Boot也拥有实时重载功能,但它是一个第三方插件,与Quarkus相比并不那么无缝。
Spring Boot比Quarkus存在更长的时间,因此拥有更大的社区和更广泛的插件和库生态系统。这意味着使用Spring Boot的开发人员可以获得丰富的资源,包括各种教程、指南和示例代码。
Quarkus是一个相对较新的框架,但它发展迅速。Quarkus社区虽然规模较小,但正在快速增长。尽管可能没有太多的Quarkus开发资源可用,但社区非常活跃,并且对问题和疑问有积极的回应。
下面是引用了一些专业的测试数据,可以看出通常情况下 Quarkus 的性能有优于 Spring Boot的。
| 
 指标  | 
 Spring引导JVM  | 
 Quarkus JVM  | 
 Spring Boot 原生  | 
 Quarkus原生  | 
| 
 启动时间(秒)  | 
 1.865  | 
 1.274  | 
 0.129  | 
 0.110  | 
| 
 构建工件时间(秒)  | 
 1.759  | 
 5.243  | 
 113  | 
 91  | 
| 
 工件大小 (MB)  | 
 30.0  | 
 31.8  | 
 94.7  | 
 80.5  | 
| 
 加载的类数量  | 
 8861  | 
 8496  | 
 21615  | 
 16040  | 
| 
 CPU 使用率最大值 (%)  | 
 100  | 
 100  | 
 100  | 
 100  | 
| 
 CPU 使用率平均值 (%)  | 
 82  | 
 73  | 
 94  | 
 92  | 
| 
 启动堆大小 (MB)  | 
 1048.57  | 
 1056.96  | 
 -  | 
 -  | 
| 
 已用堆启动 (MB)  | 
 83  | 
 62  | 
 12  | 
 58  | 
| 
 已用堆最大 (MB)  | 
 780  | 
 782  | 
 217  | 
 529  | 
| 
 已用堆平均值 (MB)  | 
 675  | 
 534  | 
 115  | 
 379  | 
| 
 RSS 内存启动 (MB)  | 
 494.04  | 
 216.1  | 
 90.91  | 
 71.92  | 
| 
 最大使用线程数  | 
 77  | 
 47  | 
 73  | 
 42  | 
| 
 每秒请求数  | 
 7887.29  | 
 9373.38  | 
 5865.02  | 
 4932.04  | 
综上所述,选择使用Quarkus还是Spring Boot取决于你的项目需求、性能要求以及开发团队的技术栈和个人偏好。如果你注重性能、资源优化和云原生开发体验,则Quarkus可能是一个很好的选择。而如果你需要广泛的生态系统和成熟的解决方案,以及更传统的Java开发环境,则Spring Boot可能更适合你的项目。