Kehaw

对比Spring Cloud、Istio以及Dubbo


我们经常会被一些新的概念绕晕,用不在一个维度的东西进行横向比对,所以我们需要先搞清楚一些基本概念。Spring CloudIstioDubbo 到底都是什么?

Spring Cloud 与 Istio 比较像,它们的目的都是为微服务架构提供一揽子解决方案,形成微服务架构闭环,而 Dubbo 就不太好定位,它在一开始做的就是微服务治理层的工作,底层是传统 RPC,后来随着微服务概念的逐渐普及,它也加入了一些零零散散的组件,想打造一个微服务架构闭环,但是奈何国内在开源领域没有好的传统沉淀,导致Dubbo对自己的定位有点尴尬。

Dubbo 的开发者如是说道:

阿里内部使用 HSF,原因与业务属性和规模有关。 这里就不得不提到目前的一些文章在谈到微服务的时候总是拿 Spring Cloud 和 Dubbo 来对比,需要强调的是 Dubbo 未来的定位并不是要成为一个微服务的全面解决方案,而是专注在 RPC 领域,成为微服务生态体系中的一个重要组件。至于大家关注的微服务化衍生出的服务治理需求,我们会在 Dubbo 积极适配开源解决方案,甚至启动独立的开源项目予以支持。 受众主要来自国内各友商以及个人开发者,希望将来能够将用户拓展到全球,代表国人在 RPC 领域与 gRPC(基于 HTTP 2.0)、Finagle 等竞争。

我们可以看到,Dubbo想代表RPCgRPCFinagle进行竞争(当时还没有RSocket)。也就是说,Dubbo最初的目标对象是底层协议而非微服务架构。

反过来讲就是在微服务架构领域做生态闭环,Dubbo 已经远远落后于 Spring Cloud 和 Istio。

我们首先看一下各自的项目结构与社区活跃度:

  • Spring Cloud:GitHub→所有项目均更新于『2小时』内。
  • Dubbo:GitHub→核心项目最近更新于『4天前』。
  • Istio:GitHub→所有项目均更新于『3小时』内。

数据来自 GitHub,点击链接查看项目结构(截止2019-10-20 12:46:39)

通过上述项目在结构和组件分配上,我们可以窥见到一个信息,即:Istio 和 Spring Cloud 致力打造的是整个微服务架构生态圈,而 Dubbo 真的只是致力于解决微服务治理这一个环节。

用造车来比喻三者就是:Dubbo 特别擅长造传动系统,从看Dubbo的源码可以看出来底层功力非常深厚,而 Spring Cloud 和 Istio 则包括了从发动机到尾灯各个方方面面的技术支撑,在所有的点上都有组件支撑,它们可能在某个环节并不是最好的,但是它们做到了微服务架构的闭环。

Dubbo 显然已经意识到了这一点,即:在整个微服务架构中如果不能做到闭环,其结果必然是会被各种全家桶套件所替代 —— 哪怕你在某个环节已经做到了极致,结局一定是被各种各样的套件解决方案收编或被市场抛弃。

因为低成本的开发与维护才是市场上绝大多数公司所追求的目标,而基于一个顶尖的发动机去造一辆车,则需要很多资源去支撑 —— 大部分公司并不能接受这种资源分配方式。

更多的普通公司追求的就是开箱即用,我用到什么你就给我什么,你最好连pom文件都给我写好(spring-boot-starter),我要致力于解决业务问题。

因此,Dubbo 在意识到这一点之后,主动的加入到 Apache 孵化项目中,并积极地与 Spring 开展合作,其最终的诉求是在通信框架中占得一席之地,并希望能形成自己的技术闭环(但我觉得基本不可能)。

所以,Dubbo 仅仅是整个微服务架构整个生态圈中的的重要组件,而不是整个生态。讨论 Spring Cloud 和 Dubbo 到底谁优谁劣本身就是一个外行话题。

对比三者:

  • Spring Cloud 目前的情况是微服务架构已经形成了闭环,正在力推 RSocket 做底层通信,方向很明确。
  • Istio 他的底层gRPC稳如老狗,目前微服务生态差不多已经建设完毕,方向也很明确。
  • Dubbo 完全没有做微服务架构闭环设计,但是他底层RPC通信做的很好,目前是否要做闭环,能够做到哪一步还不清楚 —— 目标不如前两者明确,因为前两者都有自己的一套体系,Dubbo很难融入,而自己做闭环设计,已经远远落后与前两者。

如果在未来,Dubbo的微服务治理能够做到极致,作为一个加分项,尚可与RSocket和gRPC一战,否则就比较难说。

而站在开发者的角度来看,Java 的开发人员似乎没有更多的选择,目前在国内更多的是使用 Spring Cloud 和 Dubbo,从目前发展来看,姜还是老的辣,Spring 在被国内动则上亿的流量短暂唬住了之后,反手就掏出了解决方案,Spring Cloud 全家桶真香,而 Dubbo 作为国内开源领域的天之骄子,未来何去何从,时间会给出一个答案。

Kehaw

👨‍💻Ke Haw 🇨🇳👨‍👩‍👧‍👦

风吹云散去,夜色好观星
Java | 前端 | 大数据

专注于 Spring Cloud 微服务架构与数据处理,研究一切与Java相关的开发技术,包括一部分前端技术。

目前的工作主要是关于B2B大宗商品在线交易领域的数据处理。如果对本站的部分内容感兴趣,请通过邮件、Twitter联系我🤝。

Fork me on Gitee
基于Spring Security + OAuth2 + JWT 的权限认证(一) Java-Stream学习第四步:数据处理 Java-Stream学习第三步:终端操作 Java-Stream学习第二步:处理流 Java-Stream学习第一步:创建流 Electron使用串口通信 Electron下调用DLL文件 国外SaaS服务供应商都是干什么的:Part1 为什么Kafka会丢失消息 Spring Boot中使用JSR380验证框架
Description lists
Kehaw's blog
Site description
人初做事,如鸡伏卵,不舍而生气渐充;如燕营巢,不息而结构渐牢;如滋培之木,不见其长,有时而大;如有本之泉,不舍昼夜,盈科而后进,放乎四海。
Copyright
© 2014 Copyright Kehaw | All rights reserved.