1. Spring Boot 与 Spring Cloud
Spring Boot 是用于编写微服务的 JAVA 基础框架。在Spring Cloud 提供了各种构建全栈微服务的功能。构建小型和大型系统都适合。由于控制反转,Spring Boot 也很容易与其他流行的框架集成。
数据管理——Spring 有各种模块可以轻松地与流行的数据库集成。Spring JDBC、Spring JPA、Spring MongoDB、Spring Apache Cassandra 是一些扩展。
处理失败的策略——Spring boot 可以很容易地与 Resilience4J 集成。它提供了各种功能来处理分布式系统中的故障。断路器、重试、超时、速率限制器、回退处理程序、隔板等。
可观察性——Spring Boot Actuator 功能强大,提供健康检查、查看日志、Metrix。
通信风格——Spring 具有构建响应式应用程序的能力。在 Spring MVC 的帮助下构建 rest API 非常容易。Spring 易于与 MQ 集成以构建异步风格的服务。Spring 也有模块来构建基于 SOAP 的应用程序。
中间层集成——借助各种模块 Spring 可与 Apache Kafka、AMQP、RabbitMQ、ActiveMQ 集成
与工具集成——Consul、Prometheus、Jaeger、Grafana
云原生支持— 易于在 Docker、Kube.NETes、OpenTracing、Etcd、DevOps 上部署
安全性——对Spring Security、 OAuth2 的良好支持,会话管理,可以构建有状态和无状态的服务。密钥保管库、网关模式
分布式配置管理——Spring Cloud Config
服务发现——客户端、服务器端
性能——捕获支持、负载平衡、使用 Spring Cloud Cluster 进行集群
通信数据格式——JSON、XML
测试——Spring 测试模块,模拟,分析
学习曲线——由于模块化而易于学习
2. Eclipse Vert.X 微服务框架
Vert.X 来自 Eclipse 基金会的又一个流行的微服务服务框架。该框架支持多种语言。一般企业采用Java 和 Kotlin开发,对于开发者 JavaScript 也是一个不错的选择。Vertx 是一个工具包,微服务构建于 JVM 上。
Eclipse Vert.x 是事件驱动且非阻塞的。这意味着您的应用程序可以使用少量内核线程处理大量并发。Vert.x 让您的应用程序以最少的硬件进行扩展。
Vert.x 提供的一些很独特的功能:
- Vert.x 是轻量级的——Vert.x 核心大小约为 650kB。
- Vert.x 很快。这里有一些独立的数字。
- Vert.x 不是应用程序服务器。没有用于部署应用程序的单一 Vert.x 实例。你可以在你程序的任意地方运行它。
- Vert.x 是模块化的——当您需要更可以随时添加。
- Vert.x 很简单但并不简单。Vert.x 可让你轻松创建强大的应用程序。
- Vert.x 是创建轻量级、高性能、微服务的理想选择。
Vert.x 提供了各种组件/库来构建微服务应用程序,其特点:
Vert.x 服务发现
Vert.x 服务可以发布、查找和绑定到任何类型的服务。
Vert.x 熔断器
此组件为Vert.x提供断路器模式的实现
Vert.x Config
该组件提供了一种配置 Vert.x 应用程序的可扩展方式。
集群和可扩展性
Vert.x 支持开箱即用的集群和 HA。集群组管理是可插拔的,默认使用Hazelcast。也有像 Apache Zookeeper、Ignite 这样的选项。
可观察性
Vert.x 健康检查组件提供了简单开放的检查方法。健康检查用于以非常简单的语法检查当前状态:UP 或 DOWN。健康检查可以单独使用,也可以与 Vert.x Web 或事件总线结合使用。
测试
Vertx 单元旨在使用多语言 API 编写异步单元测试并在 JVM 中运行这些测试。Vertx Unit Api 借鉴了 JUnit 或 QUnit 等现有测试框架。
gRPC 支持
Vert.x gRPC 是一个模块,它将谷歌 gRPC 的编程风格与 Vert.x 风格保持一致。
服务代理
在编写Vert.x应用程序时,你想在屏蔽某项功能,但其他功能可以照常使用。这就是服务代理的主要目的。它允许事件总线公开服务,因此任何其他Vert.x组件都可以使用它。
Devops
Vert.x 提供了各种组件来使 Vert.x 应用程序在生产环境中运行时保持正常运行,例如 Micrometer、Dropwizard。
Vert.x 相对于 Spring boot 的一大优势是,Vert.x 可使用多种语言。
3. Oracle Helidon 微服务框架
Helidon 微服务框架是由Oracle 用 Java 开发的
拥有两种版本,Helidon MP 和 Helidon SE。Spring boot 比 Helidon 拥有许多功能。而且Helidon 很新,目前可用的文档不多, 很难在 stackoverflow 上找到解决方案。
Helidon MP 是 MicroProfile 规范的实现。这使其成 Java EE 开发人员的不错选择。
Helidon SE 是一个紧凑的工具包,它包含最新的 Java SE 功能:反应式流、异步和函数式编程以及流畅风格的 API。Helidon SE 支持GraalVM 原生映像,可实现轻量化快速启动。Helidon SE 的 REST 框架是 Helidon WebServer。它建立在 Netty 之上,并使用直接的请求路由 API。
Helidon MP 的特征:
云原生
Helidon 库可与云原生空间互操作:
Docker和 Kubernetes
Prometheus, OpenTracing 和 Etcd
gRPC 支持
Helidon gRPC 服务器提供了一个用于创建 gRPC 应用程序的框架。
分布式配置管理
配置组件提供了一个 Java API,以键值对方式配置属性加载和处理到一个配置对象,应用程序可以使用该对象检索配置数据。
运行状况检查和跟踪运行状况检查(例如 K8s 等编排器)定期收集的运行状况。Helidon 支持通过 OpenTracing API 进行跟踪。Tracing 与 WebServer、gRPC Server 和 Security 集成。
安全
支持认证、授权和审计。
4. GoMirco(Golang微服务框架)
Go Micro 是一个可插拔的RPC 的库,可用 Go 编写微服务的基本构建块。它使用 consul 实现服务发现,通过 http 进行通信并使用 proto-rpc 或 json-rpc、Pub/Sub 进行编码。
Go Micro 易于构建可扩展系统。采用其微服务架构模式并将其转换为一组工具,它采用微服务架构模式,并将其转换为一组工具,充当平台的构建块。Micro为开发人员将复杂的分布式系统提炼出简单抽象。
技术在不断发展,基础架构也在变化。Micro是一个解决这些问题的可插拔工具包。使用micro构建面向未来的系统。
运行时由以下功能组成:
- API 网关:微 API 通过发现和可插入处理程序提供强大的路由,以服务 http、grpc、websockets、发布事件等。
- 交互式 CLI: CLI 为您提供了监控微服务发生情况的命令。
- 服务代理:基于Go Micro和MUCP协议构建的透明代理。将服务发现、负载平衡、消息编码、中间件、传输和代理插件安装在单一位置。
- 服务模板:生成新的服务模板可快速上手。Micro提供用于编写Micro服务的预定义模板。始终以相同的方式开始,构建相同的服务以提高效率。
- SlackOps Bot:一个在您的平台上运行的机器人,允许Slack自身管理应用程序。micro bot支持聊天操作,以此通过消息与团队一起完成工作。
- Web仪表板:可在Web仪表板浏览服务,显示服务的端点、请求和响应格式。
5. Molecular(NodeJS微服务框架)
Molecular 是一个有趣的微服务框架。随着 NodeJS 越来越流行,如果你是 JavaScript 开发人员,这是个最好框架。Moleculer 是一个快速、现代且功能强大的 NodeJS 微服务框架。
Molecular主要特点
- 支持具有平衡的事件驱动架构
- 内置服务注册中心和动态服务发现
- 负载平衡的请求和事件(循环、随机、CPU 使用率、延迟、分片)
- 许多容错功能(断路器、隔板、重试、超时、回退)
- 内置缓存解决方案(Memory、MemoryLRU、redis)
- 可插拔记录器(控制台、文件、Pino、Bunyan、Winston、Debug、Datadog、Log4js)
- 带有观察者的内置指标功能
- 带有导出器的内置跟踪功能(控制台、数据、事件、Jaeger、Zipkin)
6. Quarkus 微服务框架
这个框架非常新,非常适合 Kubernetes 爱好者。Quarkus 是 Red Hat 用Java 编写 的云原生、容器优先框架。Quarkus 是为 GraalVM 和 HotSpot 量身定制的 Kubernetes 原生 Java 框架,由同类最佳的 Java 库和标准制作而成。Quarkus 的目标是使 Java 成为 Kubernetes 和无服务器环境中的领先平台,同时为开发人员提供统一的反应式和命令式编程模型,以优化解决更广泛的分布式应用程序架构。
7. Micronaut
Micronaut 是一个基于 JVM 的全栈微服务框架,旨在构建模块化、易于测试的微服务应用程序。
Micronaut 由 Grails 框架的创建者开发,从多年来使用 Spring、Spring Boot 和 Grails 构建从单体到微服务的经验教训中汲取灵感。
Micronaut 旨在提供构建全功能微服务应用程序所需的所有工具,包括:
- 依赖注入和控制反转 (IoC)
- 合理的默认值和自动配置
- 配置和配置共享
- 服务发现
- HTTP 路由
具有客户端负载平衡的 HTTP 客户端
同时,Micronaut 旨在通过提供以下内容来避免 Spring、Spring Boot 和 Grails 等框架的缺点:
- 快速启动时间
- 减少内存占用
- 最少使用反射
- 最少使用代理
- 简单的单元测试
8. Lightbend Lagom 微服务框架
Lagom 是一个开源框架,用于在 Java 或 Scala 中构建响应式微服务系统。Lagom 建立在Akka和Play之上.
Lagom 的集成开发环境使您可以专注于解决业务问题,而不是将服务连接在一起。一条命令即可构建项目,开始支持组件和您的微服务,以及 Lagom 基础设置。当检测到源代码更改时,构建会热重载。
使用 Lagom 创建的合适规模的服务启用:
- 更好地定义开发职责——提高敏捷性
- 以更低的风险更频繁地发布——以缩短上市时间
- 具有反应性品质的系统:响应性、弹性、可扩展性和弹性——充分利用现代计算环境并满足苛刻的用户期望。
9. AxonIQ 微服务框架
Axon提供了一种统一的、高效的Java应用程序开发方法,无需对从整体到事件驱动的微服务进行重大重构,就可以开发Java应用程序。
Axon包括一个编程模型和一个专门的基础设施,为编程模型提供企业级的操作支持,特别是用于扩展和分发任务关键型业务应用程序。编程模型由流行的Axon框架提供,而Axon服务器是Axon的基础设施部分,都是开源的。
Axon框架是一个Java微服务框架,它帮助您按照域驱动设计(DDD)原则构建微服务体系结构。
除了DDD之外,Axon框架还允许您实现微服务模式,如命令查询责任分离(CQRS)和事件驱动体系结构。
Axon可以满足最苛刻的企业需求,如事件存储、安全性、群集、负载平衡、服务发现、全球分布式数据中心、第三方集成、度量和监控的最高效扩展。
10. Ballerina 微服务语言
Ballerina 不是一个框架,它是一种编写分布式应用的编程语言。一开始构建以编写解耦服务。编写网络应用程序非常容易。Ballerina 是一种开源编程语言和平台,在云时代程序员轻松编写程序变得容易。
还有更多的特性,比如线程、流、安全等的功能。
总的来说,Ballerina 提供:
- 专门用于消费和提供网络服务的语言结构。
- 与序列图紧密对应的并发和网络交互的抽象和语法,支持 Ballerina 源代码在文本和图形表示之间的双向映射。
- 一种结构类型系统,比传统的静态类型语言更灵活,允许更松散的耦合。
- 设计以适应现代开发生命周期,包括使用持续集成和持续交付 (CI/CD) 工具,例如 Jenkins、Travis 和 Codefresh;可观察性工具,例如 Prometheus、Zipkin 和 Honeycomb;以及像 Kubernetes 这样的云系统。