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

微服务和云原生开发的六大Java框架_0

时间:2023-03-16 15:54:01 科技观察

作为一名Java程序员,当你使用Java进行微服务和云原生开发的时候,你有没有考虑过应该使用哪些框架、库和技术来帮助创建以下一代呢?Java应用程序?虽然你可能已经知道SpringBoot和SpringCloud是用Java开发微服务应用程序的领先框架,但实际上我们有更多的选择,例如MicroNaut、DropWizard和QuarkusIO。我将与您讨论六种面向Java开发人员的微服务框架。由于这些框架中的大多数都相对较新,除了随附的文档和教程外,没有太多关于如何将它们用于生产级微服务开发的资源,因此我还将共享在线课程、教程和书籍等资源,以帮助您理解和使用这些框架。什么是微服务?在讨论微服务之前,让我们试着了解一下应用程序架构的演变,以及是什么导致了软件开发领域微服务的发展。很久以前,我们只需要维护一个应用程序,一个基于代码的应用程序,一个部署到每台机器上的应用程序。例如,Windows上运行的Word软件,以及其他PC游戏。当我们需要更多的功能时,只能不断地在源代码中添加新的功能组件。这不仅使代码库变得臃肿和庞大,而且每当添加或更改功能时都需要进行大量的回归测试。显然,这不仅拖慢了软件产品的交付时间,而且增加了开发的工作量。对此,人们开始将代码分成不同的模块,让程序员可以独立开发、测试和部署每个模块。因此,Web应用程序诞生了。Web应用的优点是我们不需要将整个应用部署到客户端的主机上,只需要一个浏览器,客户端连接到服务器就可以获得任何需要的功能。至此,我们不再需要将客户端和服务端部署在同一台机器上。当然,这种演变在服务器端继续进行。人们开始将一个庞大的单体应用程序分解成多个相互独立的小应用程序。这会创建微应用程序。每个微应用都可以专注于授权、认证、服务发现和负载均衡等服务。我们也可以称它们为微服务。当我们把多个提供不同服务的微应用连接起来,每个应用作为一个应用执行时,这种架构就称为微服务架构。那么有什么好处呢?显然,这些微服务与单体应用程序相比非常小,可以很容易地开发、测试和快速独立部署,这反过来又提高了产品的交付和发布周期。同时,它还构建了分布式架构,可以将微服务部署在不同的主机上(当然也可以是同一台主机),更好地利用服务器端的CPU、内存、存储等资源。此外,它有助于可扩展性以满足快速增加和产生新服务实例的需求。我们可以参考亚马逊的PrimeDay。当大量客户同时在线购物,亚马逊网站流量激增时,您需要创建新的实例来处理这些并发请求。当然,您不需要扩展与主要计费业务无关的其他服务,例如产品索引。下图展示了微服务和单体架构的主要区别:图片来源-https://www.educative.io/courses/introduction-microservice-principles-concepts?affiliate_id=5073518643380224了解什么是微服务,以及它的优点之后,让我们讨论六个可用于微服务和云原生开发的Java框架。1.SpringBoot+SpringCloud毫无疑问,SpringBoot和SpringCloud的结合是通过Java开发微服务的最佳选择之一。SpringCloud提供了许多开箱即用的功能,例如微服务架构所需的服务发现和负载均衡。同时也可以遵循Netflix的微服务架构。作为成熟且久经考验的框架,当您遇到困难时,可以通过其对应的庞大技术社区寻求支持和帮助。除了自带的、最新的、全面的文档外,你还可以利用各种在线资源,比如Udemy上的SpringBoot微服务相关课程,深入了解SpringBoot和SpringCloud,进而实现产品的快速交付.在此,我强烈推荐您使用RangaKarnam在In28Minutes(GitHub站点)上的《用Spring Boot和Spring Cloud玩转微服务》课程。这个19.5小时的课程是学习如何使用SpringBoot构建微服务的绝佳资源,非常适合初学者和中级Java开发人员。我们学校也有这个《Spring Boot教程:开发小而完整Web项目》课程,强烈推荐!2.Quarkus作为一个全栈Kubernetes原生Java框架,Quarkus专为Java虚拟机(JVM)和原生编译而设计。通过提供针对容器优化的Java,它已成为无服务器、云服务和Kubernetes环境的高效服务平台。得益于Redhat的支持,Quarkus在创建高性能、可扩展的Java应用程序方面正在迅速取得进展。基于Quarkus的应用程序通常启动很快,这是一个常见的关键特性。许多Java程序员正在尝试使用Quarkus来实现快速和反应性微服务。如果您想开始学习Quarkus,我强烈建议您查看Udemy上的一位Quarkus先驱AntonioGoncalves提供的《Quarkus入门》课程。这个3.5小时的课程对于任何愿意学习Quarkus的Java开发人员来说都是一个很好的起点。3.MicroNaut这是另一个基于JVM的现代全栈框架,可用于构建模块化、易于测试的微服务和无服务器应用程序。MicroNaut由OCI创建。值得一提的是,这家公司打造的另一款产品是Grails,一款深受Groovy开发者喜爱的流行Web开发框架。目前,Micronaut被Java社区广泛认可。在Oracle、JetBrains等大公司的持续支持下,MicroNaut在不久的将来可能会成为SpringBoot和SpringCloud的有力竞争者。在技??术上,MicroaNaut和SpringFramework有着本质的不同。Spring完全依赖运行时反射和各种代理,而Micronaut使用编译时数据来实现依赖注入。MicroNaut的当前版本是2.5。它支持Gradle6.5和增量编译,并为微服务提供更好的响应式代码库。如果你想学习MicroNaut,需要相关资源,推荐你去看看Udemy上DanielPrinz的《学习使用Micronaut构建Java类型的云原生微服务》课程。这个6.5小时的课程将带您从头开始了解MicroNaut的广泛资源。4.DropWizard作为另一个可用于创建RESTfulWeb服务和微服务的强大框架,DropWizard使用Jetty、Jackson和Jersey等流行的Java库来更快速、更轻松地创建高性能Java应用程序。DropWizard的优势在于它内置了对配置、监控各种指标和操作任务的支持。但是,可用于学习DropWizard的书籍和在线课程并不多。您将经常需要查看其配套文档。在这里,我向您推荐《Dropwizard入门》Udemy上的课程。该教程不是最好的,但足以让您熟悉并加快使用DropWizard的速度。5.MicroProfileEclipse的MicroProfile是为微服务架构优化JavaEE的一项举措。它旨在提供独立于任何供应商的规范,并通过利用JavaEE创建微服务架构。由于该规范由专家创建,并得到IBM、RedHat和Oracle等组织的支持,因此非常适合微服务的开发和部署。6.EclipseVert.xVert.x同样由Eclipse提供,是另一个用于开发反应式微服务的轻量级框架。它不仅支持非阻塞(non-blocking)和异步开发模式,还允许用户在Java虚拟机上运行分布式应用程序。与SpringBoot提供单一的解决方案不同,Vert.x并没有提供一体化的解决方案,而是提供了工具包和构建块,方便用户自己构建组件。正是因为它是一个工具包,它提供了独立使用或嵌入到Spring本身中的灵活性。事实上,很多以QuarkusIO为代表的微服务框架都会使用Vert.x来满足TCP、HTTP等低端的不安全调用需求。如果你想学习Vertx,寻找它的相关资源,那我还是推荐你看看Udemy上DanielPrinz的《学习使用Vert.x来构建反应式Java微服务》课程。这个9.5小时的课程资源将从Vert.x的基本概念开始,指导您完成反应式微服务的开发和实践。总结综上所述,尽管大多数组织会选择使用SpringBoot和SpringCloud来创建他们的RESTfulWeb服务和微服务,但您也可以根据自己的实际项目需求选择和学习QuarkusIO和Micronaut等更新替代方案。如您所见,上面还介绍了这些框架中的每一个,为您提供了有用的在线资源来学习它们。最后,欢迎大家通过留言补充更多自己认为比较实用的Java微服务框架,也欢迎大家把这篇文章分享给身边的朋友和同事,并留下宝贵的意见。原标题:Top6JavaFrameworksforMicroservicesandCloud-NativeDevelopment,作者:JavinPaul