关于微服务架构的定义,业界虽有不同理解,但有一个公式值得参考:
微服务架构 = 80% 的 SOA 服务架构思想 + 100% 的组件化架构思想 + 80% 的领域建模思想
无论定义如何,微服务已成为当前架构的主流选择。以下是经过筛选的热门开源微服务开发框架及关键组件,供开发者在技术选型时参考。
核心微服务框架
Spring Cloud 它为开发者提供了分布式系统配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性 Token、全局锁、决策竞选、分布式会话与集群状态等的开发工具。使用 Spring Cloud,开发者可以快速实现上述这些模式,是 Java 生态中最成熟的解决方案之一。
Eclipse MicroProfile 这是一个 Java 微服务开发的基础编程模型,致力于定义企业 Java 微服务规范。MicroProfile 提供指标、API 文档、运行状况检查、容错与分布式跟踪等能力。使用它创建的云原生微服务可以自由地部署在任何地方,包括 Service Mesh 架构,如 Istio。
Dubbo 阿里开源的一款高性能 RPC 框架,特性包括基于透明接口的 RPC、智能负载均衡、自动服务注册和发现、可扩展性高、运行时流量路由与可视化的服务治理。
Tars 腾讯将其内部使用的微服务框架 TAF(Total Application Framework)多年的实践成果总结而成的开源项目。在腾讯内部有上百个产品使用,服务内部数千名 C++、Java、Golang、Node.Js 与 PHP 开发者。其包含一整套开发框架与管理平台,兼顾多语言、易用性、高性能与服务治理,理念是让开发更聚焦业务逻辑,让运营更高效。
Helidon 甲骨文开源的一个微服务框架,编写的微服务运行在由 Netty 提供支持的快速 Web 内核上。
SOFAStack 蚂蚁金服开源的一套用于快速构建金融级分布式架构的中间件,也是在金融场景里锤炼出来的最佳实践。
高性能 RPC 框架
除了完整的微服务框架,RPC 通信层同样至关重要。
gRPC 谷歌开源的高性能通用 RPC 框架。gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩与单 TCP 连接上的多路复用请求等特性,这些特性使得其在移动设备上表现更好,更省电和节省空间占用。
Thrift 一个 RPC 框架,用来开发可扩展且跨语言的服务。它结合了功能强大的软件堆栈和代码生成引擎,以构建可以在 C++、Java、Python、PHP 等多种语言间无缝结合的、高效的服务。
brpc 百度内部最常使用的工业级 RPC 框架,有 100 万 + 个实例(不包含 client)和上千种服务,目前只开源了 C++ 版本。
Service Mesh 服务网格
微服务发展到一定阶段,往往会涉及到 Service Mesh。通过一个网格,Service Mesh 可以将服务治理的各个部分、微服务架构建设中的各个环节都不断延伸,最终成为一套微服务开发完全解决方案。
Linkerd 这是一个提供弹性云端原生应用 Service Mesh 的开源项目,也是面向微服务的开源 RPC 代理,它的核心是一个透明代理。
Envoy 开源的边缘和服务代理,用于云原生应用,其最初是在 Lyft 构建的,它是为单一服务和应用程序设计的高性能 C++ 分布式代理,以及为大型微服务 Service Mesh 架构设计的通信总线和通用数据平面。
Istio 该项目能够为微服务架构提供流量管理机制,同时亦为其它增值功能创造了基础。这款软件利用久经考验的 Lyft Envoy 代理进行构建,可在无需对应用程序代码作出任何发动的前提下实现可视性与控制能力。
Conduit 这是一个 Kubernetes 的超轻量级 Service Mesh,其目标是成为最快、最轻、最简单并且最安全的 Service Mesh。它使用 Rust 构建了快速、安全的数据平面,用 Go 开发了简单强大的控制平面,总体设计围绕着性能、安全性和可用性进行。它能透明地管理服务之间的通信,提供可测性、可靠性、安全性和弹性的支持。

