我们来看一下SpringCloud和Dubbo的区别,我们准备了一个表格,会从这五个维度,出身背景,
活跃度,文档质量,性能,功能,从5个维度来做SpringCloud和Dubbo的对比
Dubbo它是出自阿里系的,阿里的一个产品,他的核心框架就是服务治理,SpringCloud它是出自Spring社区,
核心框架是Netflix开源微服务架构群体,这是他两个出生背景,我们再来看活跃度,我们从三个指标上来做
对比,第一个是社区活跃度,第二个是百度指数,第三个是招聘岗位,我们先看第一个社区活跃度,我们先去Dubbo
的官网上看一下,他的社区活跃度是否高,现在Dubbo已经迁移到Apache上,所以Dubbo的官网是
dubbo.apache.org
http://dubbo.apache.org/en-us/
我们打开了Dubbo的首页,有一个View on github
https://github.com/apache/dubbo
然后我们来看一下社区活跃度,我们会发现Dubbo更新的频率是比较频繁的,通过这个我们可以看到,Dubbo的社区活跃度还是
比较高的,我们再来看看SpringCloud的活跃度,我们还是从github上来看
github.com/spring-cloud
https://github.com/spring-cloud
看他的社区活跃度,他的社区活跃度也挺高的,他还比Dubbo的更新频繁更快一些,说明他的活跃度更强一些,没有说隔很长的一个
时间,一个月两个月不更新,没有达到这样一个现象,所以从社区活跃度这个角度来看呢,Dubbo和Spring Cloud的活跃度差不多,
相差不多,但是Spring Cloud相对更活跃一些,这是他的社区活跃度,然后我们再来看百度指数,我们通过百度指数,可以看到这两个
技术,被搜索的次数,看看Dubbo和Spring Cloud这两个技术,搜索的技术上有什么区别,我们先来访问一下百度,然后百度指数,
进入到百度指数官网
http://index.baidu.com/v2/index.html?from=pinzhuan#/
我们先去搜一下dubbo
http://index.baidu.com/v2/main/index.html#/trend/dubbo?words=dubbo
在这里就可以看到Dubbo进7天关键字搜索的次数,整体日均值是2570次,这是他的日均指数,我们再来看一下SpringCloud的
http://index.baidu.com/v2/main/index.html#/trend/dubbo?words=dubbo,spring%20cloud
Dubbo出现的时间点比SpringCloud要早好多,所以很多项目当中都用到Dubbo了,而SpringCloud是最近才出的平台,所以好多
项目当中呢,还没有真正的使用SpringCloud,即便是使用了,也是一些尝试的使用,比如做一些小型的项目,尝试的用一下
SpringCloud,所以他的搜索次数没有Dubbo的多,这也是能理解的,其实在文档质量这一块呢,Dubbo的文档比较集中,而且健全,
还有一个最大的优势呢,Dubbo的好多文档都是中文的,因为这个技术出自于我们国内的阿里,马云考虑到了我们国内的程序员英语
都不咋地,所以提供了很多的中文文档,当然这只是个玩笑,Spring Cloud他提供的文档也比较多,但是但部分内容,到目前来看,
还是英文的比较多,我相信随着时间的沉淀,我们有好多的程序员呢,会把英文文档呢,翻译成中文文档,贡献出来,所以这也是一个
时间的问题,这是他两文档质量的一个对比,然后我们再来看性能,其实性能也非常重要,因为我们在做技术选型的时候,其中有一项
指标就是,要考虑技术的性能怎么样,我们肯定要选择性能要高一些的技术来用,但是性能又不是一个决定的因数,并不是我什么东西
只考虑性能,不是这样的,只是我们考虑技术的一个点,并不是全部的,我们再来看一下性能,性能怎么看呢,我在这里给大家准备了一篇
文章
https://mp.weixin.qq.com/s?__biz=MzA5MzQ2NTY0OA==&mid=2650796496&idx=1
&sn=a544b76660484b9914b65f038cc39e6d
&chksm=88562c8fbf21a5995909ffa9f172f31651b1ebd04897917e43caef3491954e24ed0d0477a5a1
&mpshare=1
&scene=23
&srcid=01245faqrBlQETYK9c7zVmd3#rd
孰优孰劣?Dubbo VS Spring Cloud性能测试大对决!
在这里有一个Dubbo和SpringCloud性能的一个对比,我们从这里测试出来的数据呢,也能看出性能之间的差异,最近我们试图从
Dubbo切换到Spring Cloud,分别进行了性能的一个测试,为了得出数据量不同的情况下二者的性能表现,我们分别准备了25个属性的
POJO和一个50个属性的POJO,通过这样的方式我们也可以间接地了解二者在序列化方面的水平差异,以下是测试结果我们来看一下,
首先是测试25个属性的POJO,然后次数是10万次,然后我们来看一下,发送10W次请求,传输1个POJO对象,每个请求单位是毫秒,线程数
也是做了一个改变的,有10个线程数的,20个线程数的,有50个线程数,有100个线程数的,以及200个线程,那我们来看一下在不同线程数
的,我们SpringCloud的耗时还是有很大区别的,比如10个线程下,Dubbo的耗时是2.72毫秒,注意耗时的时间越低,说明性能越好,
然后SpringCloud是4毫秒,这是4个线程,20个线程是2.32毫秒,而SpringCloud是2.81,到最后200个线程的时候呢,
Dubbo是26.06,SpringCloud是57.12毫秒,那么对25个属性做序列化,10万次基于不同的线程,不管哪个线程来看,
其实Dubbo的性能要高于SpringCloud的性能,
1:3的情况,Dubbo的性能可以理解为Dubbo的3倍,优于3倍的性能,下面是柱状图我们就不看了,就是表格用柱状图来表示,然后还是25个
属性的POJO,然后去做了一个TPS的测试,大家应该知道TPS吧,TPS就是事务传播次数,那么这个值是越大越好,看看他每秒传播的次数
有多少,线程数10个线程,20个线程,一直到200个线程,在Dubbo传播10个POJO对象,在10个线程下,是3571个,注意这个次数,这个TPS,
每秒事务传播的次数,这个值越大越好,这个传播的次数越多,说明性能越强,所以在10个线程下呢,Dubbo是3571,而SpringCloud是
2436次,然后在50个线程下呢,Dubbo是6637次,SpringCloud是3116次,200个线程是6923次,SpringCloud是3003次,
所以说通过这个性能对比,通过TPS的性能对比,其实Dubbo的性能也是由于SpringCloud的,
Dubbo也是SpringCloud的3倍,然后这个是他的一个柱状图,我们再看下看,上面都是传输一个POJO,
接下来还是发送10W次请求,传输10个POJO对象,我们来看10个线程,10个线程,一直到200个线程,
Dubbo是2.86,SpringCloud是6.71,单位还是毫秒,然后200个线程Dubbo是2.56,SpringCloud是113.38,
所以还是Dubbo的性能是优于SpringCloud,大概也是他的3倍左右,然后再看传输10个POJO的TPS,
每秒传播事务的次数,Dubbo10个线程是3446次,SpringCloud才是1445次,以此类推直到200个线程,
Dubbo是4265次,SpringCloud是1589次,从这个对比来看,Dubbo的性能也是要优于SpringCloud,
然后下面就是柱状图,上面这些都是25个属性的,然后还对50个属性的做了10W次的测试,然后传输一个POJO对象,发送10W次请求,
Dubbo还是10个线程用了2.98毫秒,然后Spring Cloud用了4.67毫秒,然后200个线程的时候呢,Dubbo是用了37.97毫秒,
SpringCloud是用了61.76毫秒,Dubbo的性能在这一局也是胜出的,然后呢50个属性的POJO,发送10W次请求,
他的TPS,Dubbo的是3285次,SpringCloud是2114次,200个请求的时候Dubbo是4844次,SpringCloud是2764次,
所以在这一局也是胜出,他的性能也大概是SpringCloud的3倍,
最后我们来分析一下,由于SpringCloud与Dubbo天生使用的协议层面不一样,前者使用的HTTP,SpringCloud他使用的是HTTP协议,
而后者使用的是TCP协议,其实这个就是一个短连接和长连接了,HTTP的连接肯定是一个长连接,而TCP是一个短连接,那么长连接肯定
会更耗时一点,所以从协议这一层来看呢,由于SpringCloud是使用了HTTP协议,多多少少会有点拖后腿,导致两个框架的性能差距略大,
基本上是一个三比一的差距,是这样的一个性能上的一个差距,虽然SpringCloud与Dubbo在性能上有天生的劣势,
但是考虑到SpringCloud作为一款专门的微服务框架,再加上Restful风格API的趋势,从综合角度,
SpringCloud无疑是你所在公司未来微服务话进程中不可缺少的选择之一,说明什么了,我们刚才说过,
最开始的时候我说过,我们在技术选型上,性能是我们考虑的一个点,但是性能不是我们唯一的考虑点,虽然说性能高,
我们是需要考虑的,我们是要选择性能高的,但是对于技术的一个能力上,也是我们需要考虑的一个点,比如Dubbo的
性能比较高,但是他有潜在性的劣势,他对微服务,对于服务治理这一块呢,相比SpringCloud这一块呢,
他还是有自己的弱势的,所以我画了功能的一个维度,也能体现出来,比如功能这一块,有服务注册中心,服务调用方式,
服务网关,断路由,分布式配置,还有服务追踪,消息总线,数据流,批量任务,这些都是我们在服务治理当中,
所需要注意的一个点,那么在这些特点下,其实我们会发现,Dubbo他只是在服务注册中心上,它是提供了这样一个能力,
提供了Zookeeper,做他的注册中心,然后还有服务调用方式,RPC,然后服务网关没有,断路由是集群容错,
在集群容错下去做断路由的处理,然后下面的功能是始终没有的,SpringCloud要比Dubbo的能力要强大一些,
是有功能和组件所支持的,所以说呢,Spring从综合的角度来看呢,SpringCloud的性能要弱于Dubbo,
从功能上要强于Dubbo,所以我们在选择微服务架构平台的时候呢,我们更关注谁,那我们除了性能以外,
还要考虑其他的能力,二者之间没有说谁强谁弱,技术并没有绝对的,只有相对的,那一般我们根据自己的情况,
去做一个技术选择就可以了,我们就从这五个维度去做了Dubbo和SpringCloud的对比,相信大家可以很直观的了解,
Dubbo和SpringCloud的一个区别了