组织采用Kubernetes更快、更具成本效益地交付商业价值。为什么?因为Kubernetes使艰难的任务变得更容易:当负载增加时,它会自动水平扩展应用程序,并执行滚动升级。
但是这种方法与Java的三层架构的传统模型相冲突,这种模型具有大的堆大小、垂直伸缩和长时间运行的进程。
历史上,Java通过分配和保持最大的系统资源,随着时间的推移按需适应负载条件,实现了卓越的性能。
Quarkus本质上是Kubernetes本机的,从Java字节码和本机可执行文件中获得了运行时效率。此外,Quarkus支持Kubernetes作为一流的平台,提供以下扩展和功能:
l 配置。Quarkus可以利用Kubernetes API来访问存储在ConfigMap或Secret中的配置,而无需将其挂载到pod的文件系统中。
l 应用健康。使用MicroProfile Health向Kubernetes health探测器显示应用程序的健康状况,以便进行潜在的流量重定向和pod重启。
l Kubernetes客户。围绕Kubernetes对象包装了一个Java对象模型,并为操纵这些对象提供了一个Java API。
l 服务发现和负载平衡。应用程序可以利用Kubernetes集群中的DNS,通过Kubernetes循环负载平衡进行服务发现。或者他们可以使用Quarkus的Stork客户端负载平衡框架来实现更复杂或定制的负载平衡算法。
l 简化的Kubernetes和Knative配置和部署。Quarkus生成部署到Kubernetes或Knative所需的YAML,后者向Kubernetes添加无服务器功能。可以使用Quarkus属性自定义YAML生成。
l 可观察性。使用MicroProfile或MicroProfile指标深入了解正在运行的应用程序,并使用MicroProfile OpenTracing或OpenTelemetry跨多个服务跟踪跟踪请求。
l 作为服务的功能(FaaS)。Quarkus提供Funqy作为开发可移植函数的API,这些函数可以在Knative和Knative events上运行,也可以在FaaS环境中运行,比如AWS Lambda、Azure函数和Google Cloud函数。
l 远程开发。Quarkus支持远程即时编码,无需额外工具。您可以对在Kubernetes Pod(或其他远程环境)中运行的应用程序进行实时编码——不需要特殊的IDE工具!
l Quarkus算子SDK。用Quarkus简化编写Kubernetes运算符。
结论
Kubernetes 原生 Java是关于重新定义我们如何使用Java来拥抱Kubernetes模型,其中减少的启动时间和内存使用降低了成本,提高了共享环境中的资源效率。Quarkus通过将大量启动处理转移到构建时间来实现这一点。其结果是一个高效的运行时,可以大大降低云计算成本,显著提高应用程序的资源效率。此外,组织可以交付直接影响业务的新功能,而不会超出其当前的云计算预算。
为了最大限度地发挥原生编译的优势,Quarkus与GraalVM紧密集成。应用程序被定制为最好地利用提前编译的优化。Quarkus使用GraalVM的扩展模型来增强这个过程,并避免额外的配置。
Quarkus为开发人员带来了乐趣,让开发人员能够通过实时编码、开发服务和持续测试等特性来解决业务问题。使用Quarkus进行开发是如此高效,以至于Java开发人员可以尝试多种解决问题的方法,并选择最具业务影响力的方法。
Quarkus也认为Kubernetes是一个一流的平台。它提供了一组API框架,允许应用程序充分利用Kubernetes提供的功能。这使Kubernetes的投资最大化,并通过平台集成加快了上市时间。
发表评论 取消回复