Quarkus

一、它是什么

Quarkus是Red Hat开源的云原生的java框架。虽然开源的时间没多久,但是社区活跃度很高。官网是https://cn.quarkus.io/。官网的口号是超音速/亚原子。意思是运行速度很快。支持Kubernetes Native Java栈,为OpenJDK HotSpot和GraalVM量身定制,从Java库和标准中精心打造。官方很简单的介绍 用了超大字体描述,内容简洁:超音速、亚原子的JAVA

二、引子

作为一名Java程序员,如何适应目前的容器化趋势?将现有SpringBoot应用编译构建制作成docker镜像,然后运行在kubernetes环境,这也面临的诸多困扰:
启动慢:一个应用从启动到服务可用,一般是数秒,在对CPU核数和内存严格限制的情况下,花数十秒启动的情况也屡见不鲜,这样的问题无法适应需要快速重启或快速扩容的场景
内存消耗大:曾强行将内存限制在1G,结果FGC频率变大,还经常触发OMMKill导致pod重启,并且启动时间也会变长,相比之下,集群中golang应用大多配置128M内存限制,我只能羡慕了
另外还有诸多疑问也困扰着我:java技术栈内已有完整的注册发现、调用链追踪、指标监控、配置等技术实现,在kubernetes环境又该如何选择或适配
生在云上,长在云上的云原生时代,Java应用何去何从?用jib插件将SpingBoot应用转为docker镜像,在k8s上运行,仅此而已吗?
被以上问题困扰了很久,直到遇见 quarkus,当然了,它还没强大到解决上述所有问题,但它给了我方向和希望:java领域也有面向云原生的完整方案

三、关于quarkus

quarkus是为GraalVM 和HotSpot量身定制的Kubernetes原生Java框架,采用同类最佳的Java 库和标准制作而成,来自RedHat,是一个在Apache 许可证 2.0 版下获得许可的开源项目(来自官网)
quarkus官网:https://quarkus.io
quarkus的github仓库:https://github.com/quarkusio/quarkus
在这里插入图片描述

特性是:
1、容器优先:Quarkus为GraalVM和HotSpot定制你的应用程序。令人惊讶的快速启动时间,令人难以置信的低RSS内存(不仅仅是堆的大小!),在Kubernetes等容器协调平台中提供近乎即时的扩展和高密度的内存利用。我们使用一种我们称之为编译时启动的技术。
2、统一指令式和响应式:在开发应用程序时,将熟悉的指令式和响应式代码风格结合起来。
3、社区和标准:Quarkus提供了一个有凝聚力的、有趣的、全栈式的框架,它利用了各类不断增长的50多个你喜欢和使用的最好的库。所有这些都在一个标准的主干上。
4、Kube-Native:Quarkus和Kubernetes的组合为创建可伸缩、快速和轻量级的应用程序提供了理想的环境。Quarkus通过工具、预构建集成、应用程序服务等显著提高了开发人员的生产率。
5、开发者的乐趣:一个内聚的平台,优化开发人员的乐趣,统一的配置和没有麻烦的本地可执行文件生成。零配置,瞬间重新加载,简化80%的常用代码,灵活处理剩余的20%。

四、配置开发环境

maven:3.8+
jdk:11+
下载 quarkus插件

五、总结

1、Quarkus 是一个为 Java 虚拟机(JVM)和原生编译而设计的全堆栈 Kubernetes 原生 Java 框架,用于专门针对容器优化 Java,并使其成为无服务器、云和 Kubernetes 环境的高效平台

2、Quarkus 可与常用 Java 标准、框架和库协同工作,例如 Eclipse MicroProfile、Spring(作为 2020 年红帽全球峰会追踪的一个环节一起演示)、Apache Kafka、RESTEasy (JAX-RS)、Hibernate ORM (JPA)、Spring、Infinispan、Camel 等

3、Quarkus 的依赖注入解决方案基于 CDI(上下文和依赖注入),且包含一个扩展框架来扩展功能并将其配置、引导并集成到您的应用中。添加扩展就像添加依赖项一样容易;或者,您可以使用 Quarkus 工具。
此外,它还向 GraalVM(一种通用虚拟机,用于运行以多种语言(包括 Java 和 JavaScript)编写的应用)提供正确信息,以便对应用进行原生编译。

猜你喜欢

转载自blog.csdn.net/weixin_62812758/article/details/129235613