孰优孰劣?Dubbo VS Spring Cloud性能测试大对决!

最近我们试图从Dubbo迁移到Spring Cloud。为此对二者分别进行了性能测试。为了得出数据量不同的情况下的二者的性能表现,我们分别准备了一个25个属性pojo对象和一个50个属性的pojo对象,通过这样的方式我们也可以间接地了解二者在序列化方面的水平。

以下是测试结果:

25个属性,10W次:

50个属性,10W次:

分析:

由于Spring Cloud与Dubbo天生使用的协议层面不一样,前者是HTTP,后者是TCP(使用的是Netty NIO框架,序列化使用的阿里定制版Hessian2),导致两个框架的性能差距略大。基本上是三比一的差距!Dubbo官方TPS是1W左右,这和我们的测试最高值是接近的。在之前我们还进行过一次测试,那次测试是真实的项目测试,包含了对数据库的访问,最后二者的结果相差并不是很大。由此也得出,框架的性能可能对一个真实的请求(Request)影响并不是很大,或者说并不起决定性作用,也许真正影响性能的是你的业务代码,比如数据库访问以及IO,当然了,框架的性能在一些对性能要求敏感的应用来说也是要考虑的。

另外根据Dubbo官方说法,Dubbo在小数据量的情况下表现卓越,这和我们的测试也是吻合的,在50个属性的pojo对象下,Dubbo性能确实下降了。

另外Spring Cloud默认的feigh client是使用jdk的urlconnection来做HTTP的请求,考虑这种做法的性能问题,我们尝试接入了httpclient包来测试,结果发现httpclient更慢,最后我们引入了开源的okhttp包,综合发现,okhttp和Spring Cloud的feign client结合是性能最高的。

还有就是我们之前也测试过用RestTemplate进行测试,性能要比用Feigh还要好一些。大概能提升百分之十到十五。

虽然Spring Cloud在性能上与Dubbo有天生的劣势,但考虑到Spring Cloud作为一套专门的微服务框架,再加上RESTful风格的API的趋势,从综合的角度,Spring Cloud无疑是你所在的公司未来微服务化进程中不可缺少的选择之一!

以上测试仅供参考!

测试环境:

1、微服务服务器: CPU(s): 12 Free Mem:6G 2、注册中心服务器: 开发环境机器。 3、客户机器: CPU(s): 2 Free Mem:2G

测试工具:

OneTest

版本信息:

Dubbo:2.8.4 Spring Cloud:1.4.3.RELEASE

本文分享自微信公众号 - ImportSource(importsource)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-01-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程

初学Java编程需要知道的几大重点步骤

初学Java编程需要知道的几大重点步骤 ? 一、学习前的准备工作 java语言一般用于大型的服务器程序开发,所有有必要了解如下内容:Unix开发环境Unix系统...

22880
来自专栏Golang语言社区

go sync.Mutex 设计思想与演化过程 (一)

go语言在云计算时代将会如日中天,还抱着.NET不放的人将会被淘汰。学习go语言和.NET完全不一样,它有非常简单的runtime 和 类库。最好的办法就是将...

41270
来自专栏Golang语言社区

go sync.Mutex 设计思想与演化过程 --转

go语言在云计算时代将会如日中天,还抱着.NET不放的人将会被淘汰。学习go语言和.NET完全不一样,它有非常简单的runtime 和 类库。最好的办法就是将整...

37870
来自专栏老码农专栏

一场版本升级引发的性能血案的追凶过程

15250
来自专栏Golang语言社区

go sync.Mutex 设计思想与演化过程 (一)

go语言在云计算时代将会如日中天,还抱着.NET不放的人将会被淘汰。学习go语言和.NET完全不一样,它有非常简单的runtime 和 类库。最好的办法就是将...

31260
来自专栏BestSDK

不知道这21 款插件,别说你用过Eclipse

Darkest Dark 如果你也是那种讨厌白色背景的人,那么肯定不会问我为什么黑屏更好,也不会觉得使用“darkest”修改“dark”是多余的。我相信你一旦...

537100
来自专栏编程

为什么要有Spring AOP?

上一篇从Web开发演进过程的一个侧面简述了一下为什么会有Spring?事实上只介绍了为什么会有Spring IOC(控制反转/依赖注入)以及Spring IOC...

28290
来自专栏IMWeb前端团队

使用Mocha测试node应用

[TOC] 前言 在使用node开发iconfont平台时,由于没有产品与设计的主导,我遇到了协同开发的一大难题——合并代码。开发过程中每次合并代码时基本上都有...

229100
来自专栏包子铺里聊IT

什么是 REST 风格

REST是REpresentational State Transfer 的缩写,那它究竟意味着什么呢?也许这个问题已经困惑你很久了,下面就由包子给你细细分解。...

310100
来自专栏生信技能树

TCGA的28篇教程-整理GDC下载的xml格式的临床资料

GDC给出了一系列的用户友好的选择框,你只需要根据条条框框来选择就可以下载到自己想要的数据,而不需要去几百个文件夹里面漫无目的的查找了。 https://gdc...

36720

扫码关注云+社区

领取腾讯云代金券