Kubernetes云原生开发框架-1.Quarkus概述

最近开始公司基于springboot的微服务,开始慢慢往基于K8S云原生开发框架Quarkus refactory. 记录一下学习笔记。

Kubernetes正在成为部署我们企业应用程序的事实平台。对容器和Kubernetes的迁移导致了我们编码、部署和维护基于Java的应用程序的方式的改变。如果不采取适当的措施而将Java应用程序容器化并运行,那么很容易给自己带来麻烦。Pods中的容器(Kubernetes术语)是Kubernetes中的基本单元,因此很重要的一点是要很好地理解如何正确地将基于Java的应用程序容器化,以避免陷阱、浪费工作和额外的时间受挫。

Quarkus是一个内置Kubernetes集成的云原生框架。它是在Apache许可证2.0下发布的一个开源堆栈,它可以帮助您创建为GraalVM和OpenJDK热点定制的Kubernetes本机应用程序。它构建在流行的库和技术之上,比如Hibernate、Eclipse microfile、Kubernetes、apachecamel和eclipsevert.x。

Quarkus的优点包括易于与Docker和Kubernetes集成,快速启动时间,低驻留集大小(RSS)内存,以及提高开发人员的生产率。在本介绍性章节中,我们将快速了解Quarkus是什么,它解决的问题,它如何与Kubernetes集成,开发人员为什么喜欢使用它,以及它的一些最值得注意的特性。

开发人员友好型
Quarkus允许Java开发人员提高工作效率,并帮助您在微服务和基于云的应用程序的快节奏领域保持相关性。

Quarkus将使您的应用程序能够更好地扩展,更紧密地使用更少的资源填充Kubernetes集群,并利用开源Java中数十年的社区工作。

要开始使用Quarkus进行开发,您不需要学习新技术。如果您已经熟悉依赖注入、JAX-RS、Hibernate和Eclipse微文件概念,那么这里没有什么新东西。我们的职业生涯将直接建立在你的知识地图上。虽然学习其他框架可能需要数周时间,但您可以开始使用Quarkus,并在几天甚至几小时内提高效率。

Quarkus被设计成下一代应用程序开发和部署的最佳选择。它支持您完成整个应用程序生命周期,从应用程序搭建到开发模式下的实时重新加载(保存和刷新工作流),一直到部署在基于云的Kubernetes集群中。作为一个开发者,Quarkus会让你保持生产力和解决问题,而不是剃牦牛。

与Kubernetes的集成
我们说过Quarkus注定要在Kubernetes内部运行。听起来不错,但我们知道Kubernetes有很多东西。将应用程序放入Docker容器中,它将在Kubernetes上运行。虽然这是真的,但是传统上要正确地调整和配置应用程序以在Kubernetes中高效地运行,还需要做很多事情。你还必须拿出你选择的文本编辑器,手工制作多个YAML文件,老实说,没有人真的喜欢这么做。

Quarkus通过在应用程序中部署和使用Kubernetes而消除了这项工作。引导Quarkus应用程序时,它附带一些Dockerfile文件,用于为应用程序生成Docker容器。这是走向卓越的第一步。这些文件经过优化,可以与openjdkjvm一起运行,也可以与GraalVM一起作为本机可执行文件运行。它们包含运行应用程序所必需的内容,从而尽可能消除容器映像中的重复和不必要的jar包肥大。

接下来,当使用Kubernetes扩展时,Quarkus可以为vanilla Kubernetes或OpenShift部署生成资源(YAML文件)!不必再费力地浏览YAML文件,确保缩进正确。毕竟,比起寻找格式不正确的YAML代码,程序员更喜欢编写代码。Quarkus还可以在部署到Kubernetes集群之前将镜像推送到私有image库。所有这些应用程序镜像都可以通过Quarkus应用程序配置进一步增强和自定义,您将在第4章中了解该配置。例如,在Quarkus 1.4及更高版本中,可以从API服务器读取ConfigMap和Secrets,您不需要挂载Pod中的任何文件!

减少内存占用及降低响应时间

Quarkus被称为“超音速-亚原子”的Java框架。这可能会引起开发人员的营销警报,但当您分解它并了解Quarkus在做什么时,将看到真正得到的是一个非常小、快速和高效的可执行。使用Quarkus,可以部署优化为在Kubernetes上运行的本机应用程序。例如,假设您要部署一个本机应用程序,该应用程序优化为在Kubernetes上运行,将使用少于50MB的内存。
当部署到Kubernetes集群时,希望尽可能多地打包应用程序实例,这样就能够扩展以满足意外负载,同时仍然尽可能多地利用资源。当扩展时,希望新应用程序实例能够快速运行,这就是本机可执行文件的亮点所在。Quarkus在本机可执行构建过程中尽可能多地预引导应用程序及其使用的框架。这有助于应用程序快速启动并准备好服务请求,而无需执行额外的类加载、运行时扫描或JVM通常会做的其他预热。

当然,可用内存是有限的资源。准确地了解应用程序使用了多少内存,并且在试图保持较低的内存数量的同时不要让JVM感到饥饿,这是部署密度的关键。Quarkus成功地帮助使用本机可执行文件来实现这一点,这是一种小而高效的内存。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐