七个用于云原生世界的Java框架

2023-05-28 0 762

翻译者:汝龙

JavaC语言自问世以来已有整整30年的历史,该语言或其二进制码已经应用在从PDP晶片到大型伺服器群的大部份应用领域。Java结合了固若金汤的软件包和大量的库,为撰写随地运转的标识符提供了两个肥沃的生态系。

七个用于云原生世界的Java框架

然而,Java一直在努力的两个应用领域是伺服器应用领域,它一般来说必须处置来自数十甚至数千个使用者的相连。裂稃年,Java辅助工具是建立为大部份使用者禁制业务方法论的伺服器端插件的最差辅助工具之一。J2EE、Hibernate、Spring等Java架构和基本的Javaservlet数学模型使得建立强大的Web插件变得相对容易。

在JavaScript和Node.js出现之前,Java技术得以飞速发展。高客运量,这要归因于它的积极响应式数学模型。

Java生态系如今适应了竞争。一开始,一些开发者采用了Google Web Toolkit等辅助工具,该辅助工具能将Java转换为JavaScript。接下去,他们致力提高伺服器上的Java运转速度。而早期的伺服器Java架构有两个管制:每个传至的允诺都有自己的缓存。这是一种组织传至和爆出数据的整洁方式,但也很称心。建立缓存需要数十二进制的开支,这可能会管制每台伺服器能处置的使用者数量。Node.js使用了两个不同的数学模型,它允许在没有这种开支的情况下处置更多的使用者。

最近,Java开发者将Node.js的创新导入Java栈,尤其是云原生植物Java架构。这些框架仿效Node.js的作法,全力支持轻量的功能,运转在云计算伺服器上,能加速开启和停止。它无须附加的程序库全力支持在可用的伺服器示例上的加速布署。云原生植物Java架构意在全力支持可独立加装和重新开启的微服务群。它一般来说在Docker或Podman等罐子中发布,以实现最慢的构筑和加装。

谋求云原生植物新体验的现代Java开发者有多种选择。理想的云原生植物Java架构借助在Java网络平台或其服务器端复本投入的丰富经验,同时调整它以在云网络平台中更快、更轻地运转。以下是为云原生植物开发和布署Cubzac构筑的7个Java架构。

1.Micronaut

Micronaut的建立者希望借助Spring和Grails等经典之作Java架构的最差部分,例如灵巧的配置和倚赖项注入,但要消除缓存挤占极重和开启速度快的优点,因为这些优点使它不太适合开发微服务。开发者精心设计了注释,为倚赖注入提供了足够的信息,而无须使用旧架构中的缓存填充反射。在编译时完成更多Micronaut的配置意味着标识符运转更快、更轻。

该架构意在全力支持各种基于JVM的语言(目前是Java、Kotlin和Groovy)并在各种云网络平台中运转它。预定义的配置文件简化了在大部份主要云网络平台上布署伺服器或无伺服器功能,并且大部份主要数据库相连都有撰写良好的文档页面。

Micronaut的开发者还希望该架构能够全力支持良好的开发团队合作。HttpClient实现与项目捆绑在一起,以简化撰写单元测试,而无须离开Micronaut或添加更多工作。这些测试一般来说比动态架构所需的测试更简单、更全面。这再次归因于在编译时完成的工作。

Micronaut不仅用于开发具有云计算功能的插件。该架构足够通用,能全力支持传统角色和一些桌面插件。它与GraalVM的紧密集成使得使用Micronaut生成原生植物插件成为可能。

2.Quarkus

想要使用易于理解的命令式和反应式标识符组合的开发者能求助于Quarkus。Quarkus团队首先预测云原生植物开发的最常见用例,然后使用示例构筑架构,这些示例全力支持那些只需零配置的用例。其结果能轻松地集成到罐子中,并布署在Kubernetes集群中。

开发团队需要确保加速开启,以便Kubernetes集群能加速扩展。对于偶尔运转的函数来说,这是两个理想的特性,因为它在被调用之前能保持冷状态。

该项目的目标之一是接受和扩展Java社区中常见的许多现有标准和库。例如,JAX-RS注释定义了REST端点。配置从Eclipse微文件开始。Quarkus的开发团队还集成了50多个标准库,因此企业很有可能在某些情况下识别设计模式。

能将基本的Quarkus架构用于各种服务。从Quarkus 2.8开始,Quarkus的开发者正在鼓励使用RESTeasy Reactive数学模型。如果正在开始两个新项目,这是标准选项,但不必使用它。RESTeasy Reactive提供了一种更简单、非阻塞的结构和模式。不是为每个允诺分配两个缓存,而是一组非阻塞缓存处置大部份I/O,并在需要时调用标识符。

Quarkus还包含广泛的布署选项。虽然它被称为“罐子优先”,但它能在裸机上运转。此外,还有两个名为Funqy的内置配置选项,能简化建立AWS Lambda、Azure Functions、Knative和其他一些选项所接受的函数。

3.Spring Cloud Functions

Java开发者非常熟悉Spring架构,因为它是大约20年来许多项目的基础。Spring的开发者决定建立两个更适合云布署以或其他一些角色的新版本。Spring Cloud Functions中的函数意在轻松地重新布署到各种任务,如Web服务、流处置或后台工作。

Spring Cloud Functions架构延续了Spring开创的许多相同的传统。此架构中的云功能全力支持反应式或命令式风格,以及两者的混合。

全力支持多种选择是该项目的两个重要目标。有一些适配器将这些函数嵌入到AWS Lambda、Microsoft Azure、Apache OpenWhisk、谷歌云网络平台和其他一些常见的云计算函数环境中。还有一些主要流式架构的适配器,如Apache Kafka、Solace和RabbitMQ,以及独立选项Spring Cloud Stream。打包和布署高度自动化,因此开发者能集中精力开发功能。

Spring Cloud Functions开发团队还努力处置云布署的许多常见陷阱和挑战。Spring Cloud Skipper可用于跨多个云网络平台进行布署。Spring Cloud Sleuth通过跟踪数据流来帮助调试。Spring Cloud Security管理许多用于保护插件的琐事,以便只有合适的人员才能执行这些功能。光是子项目就有几十个。

该项目为通过各种网络平台分发业务插件奠定了非常好的基础。一旦插件方法论被封装到两个云函数POJO中,它就能找到两个在几十个不同角色中工作的场所。

4.Vert.x

Vert.x的建立者希望通过简化事件循环和优化与数据库的相连来建立两个非常加速的架构。Vert.x有两个像Node.js一样的事件循环,它允许在事件到达时处置多个相连。它还借助Java的缓存数学模型来处置池中的多个缓存的事件,如果可用,它能在多个内核上运转。

该结构还计划简化建立管道以处置事件流。它借用了诸如promises和futures之类的结构来避免带有分层回调的混乱标识符。当事件沿着事件总线移动时,异步选项有助于生成整洁、可读的标识符,其中填充了简单的方法调用链。

Vert.x开发团队对他们的发展愿景并不死板教条。他们认为Vert.x是两个辅助工具包而不是两个架构。该标识符是模块化的,因此开发者能选择使用一些功能集成到适合其插件的架构中。想要更多命令式结构而不是响应式结构的开发者能找到对Kotlin协同程序的全力支持。

该项目是Eclipse生态系的一部分。多种版本和选项提供了很大的自由度。例如,Vert.x插件生成器将生成Java或Kotlin标识符,其中包含许多潜在的倚赖项,例如模板引擎或API全力支持。

5.Eclipse MicroProfile

Eclipse团队建立了Micro Profile项目,以此来调整Jakarta EE以运转较小的微服务群。它消除了一些较大网络平台的开支,同时将许多微服务架构的标准库捆绑在一起。

对于可能从较大、较旧的JavaEE或Jakarta EE项目迁移标识符的开发者来说,这种方法最有吸引力。大部分配置和架构保持不变。在许多情况下调整很小。但是该设计鼓励做出更简单的决策来建立更轻量、更快的标识符。一些开发者使用MicroProfile作为通往更现代的云原生植物架构的垫脚石。

6.Dropwizard

一些开发者对经过良好测试的旧模块有一种天然的感情,他们喜欢采用Dropwizard。Dropwizard的开发团队一直强调稳定和成熟等特性。他们收集了Hibernate之类的数据库相连模块,并在表单和其他标准Web应用程序组件的架构中进行了混合。Dropwizard还简化了倚赖项注入和运转时维护过程,如配置和日志记录。

Dropwizard是致力修改和扩展现有插件的团队的最爱。该结构与原有成熟的方法兼容,因为它是在这些方法的基础上构筑的。

7.Starter frameworks for cloud platforms

大部份的云网络平台都保留了基本示例,这些示例是开始撰写简单函数的好地方。它主要用于全力支持非常简单的决策,并帮助开发者加速开启。

例如,谷歌云网络平台的开发团队开源了他们在其功能即服务(FaaS)中运转的Java功能的基本架构。使用它构筑的标识符意在与谷歌云网络平台的标准触发器加速集成,尽管它也能在任何本地机器上成功运转。

微软公司还开源了它的Java架构。该数学模型包括几个用于简化数据传输的例程,例如用于将JSON数据转换为Java POJO和从Java POJO转换的库。如果函数触发器为调用提供元数据,则框架能直接处置它。

这两个架构都能让开发者通过撰写具有单个函数的单个类来完成许多简单的工作。更复杂的项目可能希望将这一基本辅助工具与其他一些架构合并。这些只是起点,但有时这就足够了。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务