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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容