当前位置: 首页 > news >正文

TOP 13大最热开源微服务Java框架

本文列举了13大可在JVM上构建可靠轻量级微服务的Java框架

经过长期发展,Java最终在服务器领域找到一席之地,不同芯片架构和操作系统对“一次编写,到处运行”的承诺很感兴趣。与此同时,JavaScript一直在挑战Java的地位,前者因为高吞吐量和速度快接管了大批网络流量。Node.js不仅提高了速度和资源效率,还简化了客户端和服务器运行代码的复杂度。

尽管竞争激烈,许多负责微服务架构开发的团队依旧在继续使用Java,这可能有多方面原因,比如Java经过多年测试,Sun创建了稳定的虚拟机,Oracle大力培养和支持,用户使用习惯等。

本文列举了Java开发人员正在使用的13大开源项目,这些框架构成各地微服务架构基础。

Spring Boot

Java一直在构建Spring应用程序,Spring Boot是Spring的特定版本,通过对配置细节进行处理,Spring Boot可以自动化微服务配置过程,其创建是为了自启动所有类型Spring项目,而不仅仅是微服务。一旦应用程序完成,Spring Boot会混合在Web服务器中,并发出JAR文件,可以想象成原始Docker容器。

使用Spring开发微服务遵循与Web应用相同的MVC理念。该框架享有多年Java开发所构建的深层连接,包括所有主要和次要数据存储,LDAP服务器以及Apache Kafka等消息传递工具集成,众多维护运行服务器集合的小功能,比如Spring Vault,维护生产服务器所需密码等。

Eclipse MicroProfile

2016年,Java Enterprise社区决定清除Java Enterprise Edition中的部分内容,以便用户可使用经典部件构建简单微服务。在去掉大量库之后,社区保留了处理REST请求、解析JSON和管理依赖注入等功能,最终版本被称为Eclipse MicroProfile,其特点是快速且简单。

从那时起,MicroProfile社区就制定了一个协议,“每季度发布一次新版本,同时添加新代码以保持微服务平稳安全运行”。对于使用Java EE的人来说,开发过程和代码结构将非常熟悉,但无休止的配置麻烦已被去除。

Dropwizard

2011年,Dropwizard问世并开启Java Enterprise开发人员的视野,其提供非常简单的开发模型,用户可添加业务逻辑,并根据惯例配置其他内容。整个JAR文件非常苗条,并且可以快速启动。

Dropwizard的最大限制可能是缺乏依赖注入,如果想使用依赖注入保持代码干净和松散耦合,用户需要自己添加库。与Spring不同,没有Dropwizard方法可以做到这一点。但是,Dropwizard支持大多数功能,比如日志记录、健康检查和提供弹性代码。

WildFly Thorntail

Red Hat用户使用灵活的配置工具构建MicroProfile版本,该框架最初被称为WildFly Swarm,随后被重命名为Thorntail。只需在Thorntail上指定需要功能,用户即可创建Maven构建文件,然后由Maven负责组装一切。

Thorntail通过扫描代码检测主要组件,也可使用BOM文件覆盖。全部运行时,Thorntail将删除不被使用的Java企业版并创建小型JAR文件,可以使用命令部署。这是另一种遵循Java企业版传统方法,而不保留沉重包袱的框架。

Helidon

Helidon架构剔除了Java Enterprise Edition,保留基于servlet的轻量级核心。在Helidon中,开发人员可使用Netty并添加代码进行路由和错误处理。它采用两种基本代码模型,即SE和MP版本。

Node.js程序员会对Helidon SE非常熟悉,因为其具有由句点连接的长链函数调用。对于使用JAX-RS的Java程序员而言,Helidon MP看起来会很熟悉,Helidon集成了一些备受好评的工具,用于检查服务器运行状况或通过微服务跟踪数据流。

Cricket

Cricket是一个快速API开发框架,虽然小,但包含相对丰富的功能,比如键值数据存储,以节省连接数据库和调度程序,控制重复的后台处理。没有其他依赖项增加复杂性或锁定,因此将代码添加到Cricket并启动独立微服务非常容易。

Jersey

开发Web服务的标准之一是用于RESTful Web服务的Java API(又名JAX-RS),这是一个已在Jersey框架中实现的通用规范。该方法在很大程度上取决于使用注释来指定路径映射和返回详细信息。解析参数和打包JSON其他内容,Jersey均可处理。

Jersey的主要优点是实现JAX-RS标准,部分开发人员也会将Jersey和Spring Boot结合在一起使用。

Play

体验JVM跨语言功能的最佳方式之一是用Play框架,这是与Java或其他JVM语言链接的Scala代码。该代码非常现代,具有异步、无状态模型等,不会使服务器过载,没有无休止的线程试图跟踪用户及会话数据。Play有一些额外功能可用于充实网站,比如OpenID、验证和文件上传支持。

Swagger

构建API可能看起来像编写侦听端口并提供答案的代码一样简单,但Swagger开发人员不会同意此说法。他们创建了名为OpenAPI的完整API规范语言,Swagger团队提供将此规范转换为自动化测试和文档等的代码。

Swagger配置文件对API非常简单,可用于实现并记录接口行为,提供工具测试在其下构建的代码,此外,提供API治理机制。Swagger是API的生态系统,并且不局限于Java。如果团队转移到Node.js或其他语言,则会有Swagger Codegen模块等待将OpenAPI规范转换为该语言的实现。

Restlet

框架之间的较大差异之一是与其他服务和库之间的连接数。Restlet是可提供最大功能和连接集合的项目之一。为防微服务对邮件服务器接收POP,IMAP或者SMTP, Restlet集成了JavaMail库;为防构建大量文本索引和元数据,Restlet集成了Lucene和Solr。

Restlet不需要使用JSON,因为代码可以处理XML、CSV、YAML等多种文件格式,还可获得用于构建响应模板的多个不同选项。此外,Restlet客户端允许在Chrome浏览器测试API。

Squash

因为部件松散耦合且很难跟踪通过系统所有层的数据流,因此调试微服务一直是个难题。Squash允许在Kubernetes集群运行代码中设置断点,在IDE接收所有数据,就好像本地运行代码一样。Squash还集成了Node.js和Python运行时,以防微服务集合没有使用Java代码。

Telepresence

Telepresence是另一个调试选择,可为远程Kubernetes集群微服务创建本地代理,对此服务的调用将转移到本地,可以在其中设置断点或执行本地计算机上可进行的任何操作。

Zipkin

Zipkin用于在微服务上记录并关联事件,以便在问题通过机器集合时进行隔离和研究。Zipkin有Java等至少六种语言实现版本,因此可处理多语言系统。不少框架已经通过某种形式集成Zipkin,比如Spring。

参考链接:
https://www.infoworld.com/article/3329944/java/13-java-frameworks-for-rock-solid-microservices.html

相关文章:

  • Zk集群部署
  • 驰骋工作流引擎设计系列04 流程引擎表结构的设计
  • [POJ 1915] Knight Moves
  • 多元统计分析-因子分析
  • 2019.01.06-dtoj-3729: Gty的游戏
  • Django 错误之 No module named ‘MySQLdb’
  • Servlet是线程安全的吗?
  • 关于git rebase的相关讲解
  • Java 版本6下载大全
  • DNS 正向查找与反向查找
  • 拼音反查(转自大富翁)
  • 两只蚂蚁看见一只很大的梨
  • 将Button等控件嵌入到repeater中
  • #大学#套接字
  • 在线代码编译服务Codepad.org
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • Hibernate【inverse和cascade属性】知识要点
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • 安卓应用性能调试和优化经验分享
  • 动态规划入门(以爬楼梯为例)
  • 离散点最小(凸)包围边界查找
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 深入浅出Node.js
  • 写代码的正确姿势
  • 一个SAP顾问在美国的这些年
  • 用 Swift 编写面向协议的视图
  • Android开发者必备:推荐一款助力开发的开源APP
  • 大数据全解:定义、价值及挑战
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 数据可视化之下发图实践
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​queue --- 一个同步的队列类​
  • #AngularJS#$sce.trustAsResourceUrl
  • (1)Android开发优化---------UI优化
  • (C)一些题4
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (七)Knockout 创建自定义绑定
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .Net Core和.Net Standard直观理解
  • .net反编译的九款神器
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .net实现客户区延伸至至非客户区
  • .project文件
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • [20160807][系统设计的三次迭代]
  • [Angular 基础] - 指令(directives)
  • [ComfyUI进阶教程] animatediff视频提示词书写要点
  • [Delphi]一个功能完备的国密SM4类(TSM4)[20230329更新]