我们[1]评选出2023年度的十大微服务框架。这些前沿技术可以赋能你的工程并具有无缝的扩展性。
微服务(microservices)是面向服务架构(service-oriented architecture , SOA)的其中一种。用于开发多功能和复杂的应用程序。软件可由多个更小的可部署服务单元组成。
是否在困惑该选用何种框架来构建微服务应用程序?可以先去了解一下最新框架都提供什么能力,然后决定使用其中的一种,再聘请专门的开发人员来构建高性能、可扩展的应用程序。
微服务是将单个专门用途应用程序分解为更小部分的一种方法。一个成功的项目始于正确的框架选择,这是项目成功的关键。了解2023年最受欢迎的微服务框架,为您的需求选择合适的框架。
原文标题: Top 10 Microservices Frameworks
作者:by Albert Smith
日期:Aug. 16, 23
提示:翻译中尽量对原文保持原文含义,并对一些词汇做了前后文的统一。缩写词做了引用。 我要吐槽,原文多处描述很随意,一句话反复说,不严谨。
如果觉得费解,可以直接看末尾译注笔者整理好的表格。
What Are Microservices?
使用微服务架构,开发人员将工作分解到各个模块或服务,组合后形成大型应用程序。每个模块执行特定任务或实现特定业务目标,模块之间通过简单、明确定义的接口(API,应用程序可编程接口)互通。
开发高质量可扩展应用程序的十大引人注目的微服务框架
开发一个稳健强大的应用程序需要软件开发商找到一个能方便使用且的框架。
而且,这些框架还会直接影响整体成本、开发用时和维护成本。以下是主要微服务框架的列表,包括框架的简要说明和典型特性,并帮助您选择适合您业务的框架。
Spring Boot
可能是最容易用来建微服务的Java框架。开源、功能丰富,几乎可以在任何平台安装运行。有坚实的支持,还有一个庞大的使用者社群,响应时效一流。具备快速应用开发的各种特点:安全、自动配置、自动依赖关系解析,以及其他。
Features
- Spring Boot可以同时监控多个组件。
- 使用负载均衡将流量分块成很小,达到最大的吞吐量。
- 内建分布式消息传递系统,支持发布/订阅(发布-订阅)模式。
Oracle Helidon
由Oracle牵头管理的,名为Helidon的Java微服务框架最近已经发布,有两种版本:MP(MicroProfile Edition)版 和SE(Stream Edition) 版 。尽管项目比较新,文档不够丰富,但它们已经被证明是许多项目的不错选择。
Helidon MP版遵守MicroProfile 规范,因而也是Java EE开发人员的理想选择。Helidon SE版则提供了一些新鲜功能,像是GraalVM原生镜像以及函数式和异步编程。
Features
- 快速启动,最快的启动时间可以达到0.09秒和2.03秒之间。
- 包含一个完整的云环境,其中包含所有必要和流行技术。
- 提供两种编程风格的版本。
Golang
由Google支持的Go编程语言在微服务开发人员中已变得流行。使用专门为创建微服务而设计的GoKit2 和GoMicro3 ,可以轻松地用Golang编写微服务。您可以在此框架中构建支持REST和gRPC的微服务。
使用GoMicro,您可以轻松使用Go语言创建微服务。这个PRC库为您提供了创建微服务所需的所有基础模块。
Features
- 框架可减少应用程序部署中的难度,并促进互操作性。
- 可扩展的工具包用以创建应用。
- 使用预定义的模板轻松入门。
Quarkus
Quarkus非常适合使用了Kubernetes的项目!Red Hat牵头设计了这个用于Kubernetes环境的 Java框架,能够与OpenJDK HotSpot、GraalVM一起工作。提供命令式或响应式编程模型来应对不同微服务架构的挑战。
Quarkus框架旨在最小化内存消耗并最大限度地提速程序的启动时间(几十毫秒)。极快的启动时间使得微服务在容器或Kubernetes中易于扩容。
Features
- 它综合了各种各样的技术、库和API,使其简单和易学易用。
- 使用该平台,您可以提前优化JVM或底层代码,以改善应用程序性能。
- 该框架拥有比其他框架更快的启动时间。
Moleculer
Molecular框架为微服务开发提供了另一种方法。随着NodeJS日益普及,JavaScript开发人员能够从这个框架中受益。Moleculer是一个快速、动态且功能强大的NodeJS微服务框架。能够创建高效、可靠且易于访问的服务。
Features
- 支持事件驱动式开发
- 内置服务注册和发现功能
- 内置负载均衡
Lightbend Lagom
Lagom[4]的底层所使用的Akka和Play已经用于不少的应用程序中。您可以使用Java或Scala编写微服务程序
使用Lagom的统一开发生态系统解决业务问题要比连接服务简单的多。在一次性操作中创建项目、启动您的微服务并启动Lagom。每当构建发生更改时,它都会自动重新加载。
Features
- 职责明晰
- 降低风险,提高开发频率,缩短开发周期
- 具备响应性、稳健性、适应性和灵活性等特性。
Ballerina
您可以使用Ballerina创建分布式系统,而无需使用传统的微服务框架。它是一种云原生编程语言,是开源的。它还是一种结构化语言,开发人员能够在其程序中定义服务接口和静态类型。
使用Ballerina,开发人员可以从头开始构建一个解耦的系统,因为它具有图形化、面向数据和并发性的特点。您还可以设计用于提供网络服务的软件和应用程序。
Features
- 是一种容易学习、友好、开源的编程语言。
- 使用可视化表示以更容易理解。
- 整个集成均可以使用流程图表达(可视化编辑)。
Eclipse Vert.x
Eclipse牵头管理的框架,非常适合在Java虚拟机(JVM)上开发响应式应用程序。Vert.x还为受限制的运行环境(例如虚拟机和容器)提供了完美的解决方案。此外,Vert.x工具包为构建任何模块提供了很高的灵活性和准确性。
Vert.x让你用常见的工具创建任何服务模块,让项目开发增添趣味。
Features
- 多语言API允许开发人员使用多种语言编写异步网络应用程序。
- 作为单线程应用程序,开发人员可以使用vert.x使用I/O线程模型编写代码。
- 使用内核线程,处理并发操作,资源消耗低,中小型硬件即可。
Micronaut
Micronaut是一个领先的构建模块化和微服务式的应用程序的Java框架。为践行微服务架构设计,创始人专注于构建一个全栈的环境,而不是集成适当的工具包。
Micronauts最好的一点是,它们在启动和占用内存方面不依赖于代码库的大小,因此具有极快的启动时间、高吞吐量和很少的内存占用。
Features
- 支持GraalVM,应用程序可以在几毫秒内启动。
- 为新开发人员提供通用编码标准,较为平滑的学习曲线。
- 通过开源技术改善内存利用率和运行时调优。
AxonIQ
Axon是用Java语言开发的框架。Axon包括一个可直接用于企业业务软件开发的软件系统和架构。框架和服务器分别提供架构和模型。而且免费。
Features
- 通过分层存储提高生产力和降低成本
- 灾难恢复选项,包括手动和辅助选项
- 所有系统更改只附加视图上下文
小结
微服务之所以重要,是因为当前应用程序开发对效率、生产力、交付速度和速度要求在不断提高。选择适合的框架本就是个有难度的事情,而逐个候选项去尝试则成本更高,一定要仔细甄别框架所说声称的功能和预期效果。
译注
译者整理的框架资料
名字和网址 | 牵头组织 | 编程语言 | 标语 |
---|---|---|---|
Spring Boot https://spring.io/projects/spring-boot | VMware | Java(和其他JVM语言,下同) | Spring makes Java Simple, modern, productive, reactive, cloud-ready |
Helidon https://helidon.io/ | Oracle | Java | Lightweight. Fast. Crafted for Microservices. |
Golang https://go.dev/ | Go | ||
Quarkus https://quarkus.io | Red Hat | Java | SUPERSONIC SUBATOMIC JAVA. A Kubernetes Native Java stack tailored for OpenJDK HotSpot and GraalVM, crafted from the best of breed Java libraries and standards. |
Molecular https://moleculer.services/ | MoleculerJS | JavaScript | Molecular Progressive microservices framework for Node.js. |
Lagom https://www.lagomframework.com/ | Lightbend | Java,Scala | The opinionated microservices framework for moving away from the monolith Lagom helps you decompose your legacy monolith and build, test, and deploy entire systems of Reactive microservices |
Ballerina https://ballerina.io/ | WSO2 LLC | Ballerina | Flexible, Powerful, Beautiful Integrations as Code with Ballerina |
Vert.x https://vertx.io/ | Eclipse | Java | Eclipse Vert.x™ Reactive applications on the JVM |
Micronaut https://micronaut.io/ | Micronaut foundation | Java | A modern, jvm-based, full-stack framework for building modular, easily testable microservice and serverless applications |
AxonIQ https://www.axoniq.io/ | AxonIQ | Java | Evolutionary microservices beyond event-driven |
[1]: 指作者Albert Smith 和他所在的公司 Hidden Brains https://www.hiddenbrains.com/
[4]: Lagom is Approaching EOL. This project will only receive security patches until July 1, 2024