当前位置: 首页 > 科技观察

什么是无服务器Java?

时间:2023-03-13 07:43:39 科技观察

几十年来,企业在各种平台上开发关键业务应用程序,包括物理服务器、虚拟机和云环境。这些应用程序在各个行业都有一个共同点,那就是它们需要连续可用(24x7x365)以实现稳定性、可靠性和性能,而不管需求如何。因此,即使实际资源利用率低于50%,每个企业都必须付出高昂的成本来维护基础设施(如CPU、内存、磁盘、网络等)。Serverless架构就是为了帮助解决这些问题而诞生的。无服务器允许开发人员按需构建和运行具有高可用性的应用程序,而无需在多云和混合云环境中管理服务器。在幕后,无服务器拓扑中仍然有许多服务器,但它们是从应用程序开发中抽象出来的。相反,云提供商使用无服务器进行资源管理,例如配置、维护、联网和扩展服务器实例。由于其效率,无服务器开发模型现在是一些希望按需启动服务而不是一直运行它们的企业的需求。有许多新的开源项目通过Linux容器包管理Kubernetes集群上的无服务器应用程序。《交互式无服务器全景》byCNCF是开源项目、工具、框架和公共云平台的指南,可帮助DevOps团队处理无服务器应用程序。CNCFServerlessLandscape开发人员可以编写代码,然后可以将代码快速部署到各种无服务器环境中。然后,无服务器应用程序会响应需求并根据需要自动扩展和缩减。您可能想知道哪些编程语言和运行时环境最适合无服务器应用程序开发以与上图中的技术集成。这个问题的答案不止一个,但让我们退后一步,讨论在企业生产环境中开发业务应用程序的最流行的应用程序运行时:Java。根据DeveloperEconomics的数据,截至2020年第三季度,仍有超过800万企业开发人员使用Java来满足其业务需求。然而,根据2020年的一项调查,Java(6%)显然不是使用当前云服务进行开发的具有前瞻性思维的开发人员的首选。来自NewRelic的无服务器基准报告的数据(DanielOh,CCBY-SA4.0)资源使用、响应时间和延迟在无服务器开发中至关重要。来自公共云提供商的无服务器产品通常按需计量,事件驱动的执行模型仅在无服务器应用程序启动时收费。因此,当无服务器应用程序闲置或缩减为零时,企业无需支付任何费用。Java与容器的现状有了这样的背景,您可能会问:“既然现有的业务应用程序很可能是基于Java技术开发的,为什么开发人员不尝试使用Java堆栈进行无服务器应用程序开发?”?隐藏的真相:很难在新的不可变基础架构(如Kubernetes等容器平台)上优化Java应用程序。内存资源使用的差异这张图描绘了Java进程与竞争语言和框架(如Node.js和Go)之间的内存资源使用差异。JavaHotSpot消耗最多的资源,包括每个Java虚拟机(JVM)实例分配的堆内存。中间显示Node.js每个进程比Java小得多。最后,Go是一种流行的云服务编程语言,因为它的内存消耗最低。如您所见,当您在此图中从左向右行走时,您会看到更密集的节点。这就是开发人员在云、容器和Kubernetes上编写无服务器应用程序时回避Java(包括SpringBoot,一个顽固的微服务Java框架)的原因。下一步是什么?企业可以从实施无服务器应用程序中获得明显的好处,但资源密度问题导致他们避免使用Java堆栈在Kubernetes上开发无服务器应用程序。但是选择另一种语言会给全球数百万Java开发人员带来学习负担。因此,在本系列的下一篇文章中,我将指导您如何开始使用JavaServerlessFunctions而不是使用其他语言。