Java 云原生微服务框架 Quarkus 入门实践

本文介绍了Quarkus作为云原生Java框架的优势,如快速启动、低内存消耗和与Kubernetes的集成。文章详细阐述了Quarkus与GraalVM的关系,展示了如何从安装GraalVM到创建、运行、打包Quarkus项目,最后通过Docker部署。Quarkus提供了命令式和响应式开发支持,适用于云原生环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 概述

1.1 定义

Quarkus定位要做超声速、亚原子的Java框架,使用最好标准为OpenJDK HotSpot和GraalVM量身定制的Kubernetes Native Java栈;从一开始就是针对Kubernetes设计的云原生优化Java应用开发框架;兼容主流的框架开发模式如Jpa、Netty、Undertow、Hibernate、JWT、Spring。最新版本为2.13.3。

  • Quarkus 官网:https://quarkus.io/

  • Quarkus GitHub:https://github.com/quarkusio/quarkus

1.2 GraalVM 简介

GraalVM 是 Oracle 开发的高性能的多语言运行时 JDK,旨在提高 Java 应用程序的性能,同时消耗更少的资源。

GraalVM 提供了两种运行Java应用程序的方法:在HotSpot JVM上使用 Graal 即时(JIT)编译器或者作为预先(AOT)编译的本机可执行文件。

除了 Java,它还提供了 JavaScript、Ruby、Python 和其他一些流行语言的运行时。GraalVM 的多语言功能使得在一个应用程序中混合编程语言成为可能,同时消除了任何外语调用成本。目前最新版本为 22.3。

  • GraalVM 可以创建原生可执行文件;

  • GraalVM 提供的原生镜像(native image)功能可以把Java代码预先编译(Ahead-Of-Time,AOT)成独立的可执行文件。该可执行文件包括了应用本身的代码、所依赖的第三方库和 JDK 本身。该执行文件并不运行在 Java 虚拟机之上,而是名为 Substrate 的虚拟机。与运行在传统的 Java 虚拟机上相比,原生可执行文件在运行时的启动速度更快,所耗费的内存资源更少。可执行文件的体积也更小;

  • GraalVM 生成的原生可执行文件与底层平台相关,不能在当前平台之外的其他平台上运行。但对云原生应用来说,这并不是一个问题。云原生应用的设计目标是在容器中运行,所运行的底层平台是固定的。

1.3 为何使用

使用 Spring Boot 的快速开发企业级应用的微服务启动慢,从一个应用从启动到服务可用,一般是数秒。在对 CPU 核数和内存严格限制的情况下,花数十秒启动的情况也屡见不鲜。这样的问题无法适应需要快速重启或快速扩容的场景。不仅如此,内存消耗也很大。如果限制在 1G 时 FullGC 频率变大,且经常触发 OMM 后 Kill 导致 pod 重启,并且启动时间也会变长。

相比之下,集群中使用 GO 语言开发的应用则配置 128M 内存也可正常使用。以 JVM 模式运行的 Java 应用,并不太适合于云原生应用的开发,而拥抱云原生则是未来技术的大趋势。

容器云已经为未来主流,也即是软件都是运行在 K8S 这样的容器集群里。而容器环境需要应用具备启动速度快,资源占用小,响应时间短等特性。Quarkus 顺应这种趋势而生的。

  • 对于云原生应用来说,平台无关性变得无关紧要。云原生应用都是以容器化的形式运行的,所运行的底层平台是固定的;

  • 云原生应用对启动速度的要求比较高。当需要进行水平扩展时,要求这些新的实例必须在足够短的时间内完成启动,从而尽快的处理新增的请求;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值