文档章节

最强开源微服务框架,全网独家整理

h4cd
 h4cd
发布于 07/10 21:58
字数 2748
阅读 20153
收藏 344

诞生于 2014 年的“微服务架构”,其思想经由 Martin Fowler 阐述后,在近几年持续受到重视,理论与相关实践都不断发展,目前它已经成为了主流软件架构模式。

关于微服务架构是什么,没有一个明确的定义,每个实践者有自己的理解,但是有人给出的一个公式值得思考:

微服务架构 = 80% 的 SOA 服务架构思想 + 100% 的组件化架构思想 + 80% 的领域建模思想

微服务架构的优点很多,比如它解耦业务,提供更高的灵活性,允许在服务频繁发版的同时保持系统其它部分的可用性与稳定性;解耦编程语言,针对不同业务可以使用更加合适的语言进行开发;解耦开发团队,不同团队各自负责一个微服务,互不影响,加速交付。

关于微服务架构,网上资料相当多(因为现在很火,各家都有实践案例分享),读者可以另行查阅,这里不赘述。

下边为大家列举了当前最为火热,最常被人提及的开源微服务开发框架,希望对开发者有一定的帮助(点击项目名,可以直接跳转介绍页):

Spring Cloud

微服务开发和治理框架 Spring Cloud

Spring Cloud 为开发者提供了分布式系统配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性 Token、全局锁、决策竞选、分布式会话与集群状态等的开发工具。使用 Spring Cloud 开发者可以快速实现上述这些模式。

Eclipse MicroProfile

云原生微服务开发编程模型 MicroProfile

Eclipse MicroProfile 是一个 Java 微服务开发的基础编程模型,它致力于定义企业 Java 微服务规范,MicroProfile 提供指标、API 文档、运行状况检查、容错与分布式跟踪等能力,使用它创建的云原生微服务可以自由地部署在任何地方,包括 Service Mesh 架构,如 Istio。

Dubbo

分布式 RPC 服务框架 Apache Dubbo

Dubbo 是阿里开源的一款高性能 RPC 框架,特性包括基于透明接口的 RPC、智能负载均衡、自动服务注册和发现、可扩展性高、运行时流量路由与可视化的服务治理。

Tars

高性能 RPC 开发框架 Tars

Tars 是腾讯将其内部使用的微服务框架 TAF(Total Application Framework)多年的实践成果总结而成的开源项目,在腾讯内部有上百个产品使用,服务内部数千名 C++、Java、Golang、Node.Js 与 PHP 开发者。其包含一整套开发框架与管理平台,兼顾多语言、易用性、高性能与服务治理,理念是让开发更聚焦业务逻辑,让运营更高效。

Helidon

轻量快速的 Java 微服务框架 Helidon

Helidon 是甲骨文开源的一个微服务框架,编写的微服务运行在由 Netty 提供支持的快速 Web 内核上。

SOFAStack

SOFAStack™(Scalable Open Financial Architecture Stack)是由蚂蚁金服开源的一套用于快速构建金融级分布式架构的中间件,也是在金融场景里锤炼出来的最佳实践。

gRPC

RPC 框架 gRPC

gRPC 是谷歌开源的高性能通用 RPC 框架。gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩与单 TCP 连接上的多路复用请求等特性,这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

Thrift

Thrift 是一个 RPC 框架,用来开发可扩展且跨语言的服务。它结合了功能强大的软件堆栈和代码生成引擎,以构建可以在 C++、Java、Python、PHP、Ruby、Erlang、Perl、Haskell、C#、Cocoa、JavaScript、Node.js、Smalltalk 与 OCaml 等语言间无缝结合的、高效的服务。

brpc

百度 RPC 框架 BRPC

brpc 是百度内部最常使用的工业级 RPC 框架,有 1000 000+ 个实例(不包含 client)和上千种服务,在百度内叫做“baidu-rpc”,目前只开源了 C++ 版本。

 

上边列出的主要是一些微服务架构的开发框架或者与微服务架构至关重要的 RPC 框架,而其实微服务又涉及到分布式,这又会涉及到各种各样的中间件,数量太过于庞大,下回再议吧。

但是有一个方面是一定要在这里指出来的,那就是 Service Mesh。现在提到微服务架构,一般都会涉及到 Service Mesh 的相关内容,Service Mesh 被誉为“下一代微服务架构”,它源于对早期的服务代理模式 Sidecar 的扩展,其理念虽然由来已久,但是直到近两年随着微服务的火速兴起和 Buoyant 创建 Linkerd 并将其重新演绎,才逐渐以崭新的姿态呈现给世人。

Service Mesh 重点在 Mesh,它在 Sidecar 的基础上,强调了各个代理之间形成的有机网络。以通用组件的形式管控系统中所有服务通信流量,同时下沉了微服务开发的技术栈,可以做到语言无关、功能可扩展。

通过一个网格,Service Mesh 可以将服务治理的各个部分、微服务架构建设中的各个环节都不断延申,最终成为一套微服务开发完全解决方案。

这里也列出几个目前在 Service Mesh 领域稳坐主流地位的开源项目:

Linkerd

基于微服务的原生云应用开源“服务网格”项目 Linkerd

Linkerd 是一个提供弹性云端原生应用 Service Mesh 的开源项目,也是面向微服务的开源 RPC 代理,它的核心是一个透明代理。

Envoy

边缘和服务代理 Envoy

Envoy 是开源的边缘和服务代理,用于云原生应用,其最初是在 Lyft 构建的,它是为单一服务和应用程序设计的高性能 C++ 分布式代理,以及为大型微服务 Service Mesh 架构设计的通信总线和通用数据平面。

Istio

大型微服务系统管理工具 Istio

Istio 项目能够为微服务架构提供流量管理机制,同时亦为其它增值功能(包括安全性、监控、路由、连接管理与策略等)创造了基础。这款软件利用久经考验的 Lyft Envoy 代理进行构建,可在无需对应用程序代码作出任何发动的前提下实现可视性与控制能力。

Conduit

基于 Kubernetes 的 Service Mesh 开源解决方案 Conduit

Conduit  是一个 Kubernetes 的超轻量级 Service Mesh,其目标是成为最快、最轻、最简单并且最安全的 Service Mesh。它使用 Rust 构建了快速、安全的数据平面,用 Go 开发了简单强大的控制平面,总体设计围绕着性能、安全性和可用性进行。它能透明地管理服务之间的通信,提供可测性、可靠性、安全性和弹性的支持。虽然与 Linkerd 相仿,数据平面是在应用代码之外运行的轻量级代理,控制平面是一个高可用的控制器,然而与 Linkerd 不同的是,Conduit 的设计更加倾向于 Kubernetes 中的低资源部署。

注:在发布 0.5 版本后,后续 Conduit 已经整合到了 Linkerd 2,详情查看:

 

对 Service Mesh 的建设其实已经成为当前的业内共识,从下边这些项目都在往这个方向上演进就可以大致有所体会:

WeiboMesh

Motan 是新浪微博开源的是一套高性能、易于使用的分布式 RPC 框架,后来在 Motan Agent 的基础上演化出了 WeiboMesh。WeiboMesh 偏向服务治理方向,同时提供服务的动态管理能力,如服务降级、动态配置、权限管理、数据采集与服务指令处理等。

Dubbo Mesh

Dubbo 在 v3 中发展 Service Mesh,官方希望 Dubbo Mesh 进入 Envoy 社区,目前 Dubbo 协议已经被 Envoy 支持,数据层选址、负载均衡和服务治理方面的工作还在继续,控制层目前在丰富 Istio/Pilot-discovery。

SOFAMOSN

MOSN 是 SOFAStack 的组件,它一款采用 Go 语言开发的 Service Mesh 数据平面代理,功能和定位类似 Envoy ,旨在提供分布式,模块化,可观察,智能化的代理能力。MOSN 支持 Envoy 和 Istio 的 API ,可以和 Istio 集成。

nginMesh

nginMesh 是 NGINX 开源的 Service Mesh 方案,它提供基于 NGINX 的 Service Mesh 实现。nginMesh 与 Istio 兼容,利用 NGINX 实现 Sidecar 代理,集成在 Istio 中,可以标准、可靠和安全的方式促进服务之间的通信。

注:nginMesh 项目目前已经不再积极开发。

MicroProfile Service Mesh

云原生微服务开发编程模型 MicroProfile

MicroProfile Service Mesh 是 MicroProfile 的 Service Mesh 规范。MicroProfile 定义了用于开发云原生微服务的一系列规范,本质上它也是为 Istio 而生的微服务编程模型,而 Istio 本身就是 Service Mesh 的代名词。此规范关注 Service Mesh,并且更多地聚焦于 Istio。

Ambassador

Kubernetes 原生 API 网关 Ambassador

Ambassador 是一个基于 Envoy 构建的 Kubernetes 原生 API 网关,专为微服务而设计,它本质上是一个 Envoy 入口控制器,但具有更多功能,包括支持 gRPC、HTTP/2 与 WebSockets,支持 CORS、超时、加权轮询调度、粘性会话与速率限制等。

Gloo

Kubernetes 原生 API 网关 Gloo

Gloo 是一个基于 Envoy 的 Kubernetes 原生入口控制器和下一代 API 网关。Gloo 在函数级路由方面表现卓越,它支持传统应用程序、微服务与 Serverless。Gloo 设计独特,可支持混合应用,其中的多种技术、架构、协议和云可以共存。

Kong

Mashape API 网关 Kong

Kong 在 1.0 GA 的时候带来了 Service Mesh 能力,用户不仅可以将 Kong 部署为 API 网关,还可以将其部署为独立的 Service Mesh 代理。Kong 插件能为 Service Mesh 提供开箱即用的关键功能,并能与其它云原生技术集成,包括 Prometheus、Zipkin、健康检查、canary 测试与蓝绿测试等。

Consul Connect

服务的注册和发现 Consul

Connect 是 Consul 中的 Service Mesh 方案,它可以自动将任何现有的 Consul 群集转换为 Service Mesh 解决方案。Connect 通过自动 TLS 加密和基于身份的认证实现安全的服务到服务通信。

 

借此机会特别感谢以 ServiceMesher 为代表的社区在国内普及与发展 Service Mesh 上的贡献。

当然,除了列出的这些框架值得期待,还可以在下边这几个分类中搜索、查看更多相关项目:

【感谢 ServiceMesher 社区 Jimmy Song 与罗广明对本文的审校】

© 著作权归作者所有

h4cd

h4cd

粉丝 161
博文 1
码字总数 2748
作品 0
湿骨林
私信 提问
加载中

评论(38)

汪汪汪2
汪汪汪2
轮子真多,
南风北巷----李文杰
南风北巷----李文杰
赞赞 赞
老驴
老驴
m
N
NicholasXu
grpc 也成微服务了啊
哥本哈根的小哥
哥本哈根的小哥
小编对国产有意见,比如Redkale、jboss等小众框架咋不列进去?还有微服务和service mesh还是有区别的吧?
孤岛旭日
孤岛旭日
vertx哪去了?
二的基本算合格
二的基本算合格
Twitter的Finagle,也是RPC框架,另外Javalin,Jooby,Microaunt,Ktor,Finatra等等也是微服务框架。Lightbend的Lagom也算。
落舞者
落舞者
这文章就是列了下cfcf软件。。
枫TI
枫TI
带着问题意识去选书
冰力
冰力
hunt-service 是 D 语言实现的分布式 rpc 服务框架,基于 gRPC 协议和 neton 服务注册发现。
【重庆】OSC源创会第69期(微服务专场)

本期图文回顾链接:https://www.oschina.net/question/2686220_2267084 ----------------------------------------------------- 最新福利通知:邀请10位小伙伴报名参加重庆源创会的OSCer,就...

Alaise
2017/08/31
266
25
【重庆】OSC源创会第69期(微服务专场)

本期图文回顾链接:https://www.oschina.net/question/2686220_2267084 ----------------------------------------------------- 最新福利通知:邀请10位小伙伴报名参加重庆源创会的OSCer,就...

Alaise
2017/08/31
5.1K
25
【阿里云一周要闻】阿里云数据库位列全球第三;《Java开发手册》正式发布;阿里云CDN实现毫秒级全网刷新

---------------------------------【一周要闻】--------------------------------- 突破!阿里云CDN实现毫秒级全网刷新 【阅读详情】 阿里云CDN技术团队进行大量协议优化与实践,最终达成突...

信雪蕊
07/01
0
0
高手问答第 186 期 —— 拥抱 Spring Cloud 拥抱微服务生态

OSCHINA 本期高手问答(1 月 17 日 - 1 月 23 日)我们请来了杨恩雄@杨大仙的程序空间 为大家解答关于 Spring Cloud 以及微服务架构方面的问题。 杨恩雄,从事 Java EE 企业应用开发十多年,曾...

局长
2018/01/16
6.7K
99
mica 中 test 扩展 mica-boot-test 单元测试插件

介绍 由于在 组件中我们埋入了一些配置,该组件为了方便单元测试。 依赖坐标 Maven Gradle 使用方式 示例代码一 采用 。 示例代码二 继承 。 说明:上面2种方式均可, 注解属性有:服务名、和...

Dreamlu
03/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

让更多浏览器支持html5元素的简单方法

当我们试图使用web上的新技术的时候,旧式浏览器总是我们心中不可磨灭的痛!事实上,所有浏览器都有或多或少的问题,现在还没有浏览器能够完整的识别和支持最新的html5结构元素。但是不用担心...

前端老手
14分钟前
5
0
把微软、MongoDB 与华为放到一起,为什么?

作者:开源中国(OSCHINA) 内容来源:开源中国(OSCHINA) 最近开源中国(OSCHINA)在庆祝 11 周年生日,编辑部借着这个机会梳理了一下这一年来我们追过的那些开源界/开发界的热点新闻,算作...

编辑部的故事
44分钟前
414
0
OSChina 周三乱弹 —— 投篮的一霎那,你突然心悸

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @clouddyy :#每日一歌# 分享ろん的单曲《First Love (原唱:宇多田ヒカル / produced by keeno)》: 《First Love (原唱:宇多田ヒカル / prod...

小小编辑
今天
782
14
小程序for批量嵌套数据

js Page({ data: { objectArray: [{ id: 5, unique: 'unique_5', count:'countf' }, { id: 4, unique: 'unique_4', ......

淘幻幻
今天
5
0
分享一个 pycharm 专业版的永久使用方法

刚开始接触Python,首先要解决的就是Python开发环境的搭建。 目前比较好用的Python开发工具是PyCharm,他有社区办和专业版两个版本,但是社区版支持有限,我们既然想好好学python,那肯定得用...

上海小胖
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部