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

时间:2023-03-08 16:37:22
孰优孰劣?Dubbo VS Spring Cloud性能测试大对决!

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

以下是测试结果:

25个属性,10W次:

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

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

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

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

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

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

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

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

50个属性,10W次:

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

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

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

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

分析:

        由于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

http://mp.weixin.qq.com/s?__biz=MzA5MzQ2NTY0OA==&mid=2650796496&idx=1&sn=a544b76660484b9914b65f038cc39e6d&chksm=88562c8fbf21a5995909ffa9f172f31651b1ebd04897917e43caef3491954e24ed0d0477a5a1&mpshare=1&scene=23&srcid=01245faqrBlQETYK9c7zVmd3#rd