什么是Java的无服务器?


几十年来,企业已经在各种平台上开发了关键业务应用程序,包括物理服务器,虚拟机和云环境。这些应用程序在各个行业中的共同点是,它们需要连续可用(24x7x365),以确保稳定性,可靠性和性能,无论需求如何。因此,即使实际资源利用率低于50%,每个企业也必须承担维护基础结构(例如,CPU,内存,磁盘,网络等)的高昂费用。

开发了无服务器体系结构来帮助解决这些问题。无服务器允许开发人员按需构建和运行应用程序,从而确保高可用性,而无需在多云和混合云环境中管理服务器。在幕后,无服务器拓扑中仍然有许多服务器,但是它们是从应用程序开发中抽象出来的。相反,云提供商使用无服务器服务进行资源管理,例如供应,维护,联网和扩展服务器实例。

由于它的有效性,对于希望按需启动其业务应用程序而不是一直运行它们的企业来说,无服务器开发模型现已成为必需的工具。

已经创建了许多开源项目,以通过虚拟机上的Linux容器软件包来管理Kubernetes集群上的无服务器应用程序。该CNCF的互动无服务器景观为导向,以开源项目,工具,框架,云和公共云平台,使DevOps的团队来处理无服务器应用程序。

1.png

开发人员可以编写代码,然后将其快速部署到各种无服务器环境中。然后,无服务器应用程序响应需求,并根据需要自动缩放。

您可能想知道哪种编程语言和运行时最适合无服务器应用程序开发并与上图中的技术集成。这个问题不仅有一个答案,而且让我们退后一步来讨论在企业生产环境中开发业务应用程序最流行的应用程序运行时:Java。

根据Developer Economics的数据,截至2020年第3季度,超过800万企业开发人员仍在使用Java来满足其业务需求。但是,根据2020年NewRelic的一项调查,Java(6%)显然不是使用流行云服务的有远见的开发人员的首选。

2.png

资源使用,响应时间和延迟对于无服务器开发至关重要。公共云提供商的无服务器产品通常按需按需计费,仅在无服务器应用程序启动时通过事件驱动的执行模型收费。因此,当无服务器应用程序空闲或缩减为零时,企业无需支付任何费用。

带容器的Java状态 在这种背景下,你可能会问:“为什么 不 开发人员尝试使用 的 无服务器应用程序开发Java堆栈 鉴于 ?现有的业务应用Java技术最有可能的发展”

这是一个隐藏的事实:很难在新的不可变基础架构(也称为容器平台(例如Kubernetes))中优化Java应用程序。

3.png

该图描述了Java进程与竞争性语言和框架(例如Node.js和Go)之间在内存资源使用方面的差异。Java HotSpot的占用空间最大,其中包括每个Java虚拟机(JVM)实例分配的堆内存。中间部分显示了与Java相比,Node.js上每个进程的规模要小得多。最后,由于内存消耗低,Go是一种在云上流行的编译语言。

如您所见,在此图上从左到右,密度会更高。这就是开发人员在云,容器和Kubernetes上编写无服务器应用程序时回避Java(包括Spring Boot,一个自以为是的微服务Java框架)的原因。

下一步是什么? 企业可以通过实现无服务器应用程序来获得重大利益,但是资源密度问题使他们避免使用Java堆栈在Kubernetes上进行无服务器应用程序开发。但是,选择其他语言会给全球数百万的Java开发人员带来负担。因此,在本系列的下一篇文章中,我将指导您如何开始使用Java无服务器功能,而不是选择其他语言。


原文链接:https://codingdict.com/