Dubbo 与 Spring Cloud性能测试区别

25个属性,10W次:

使用Feign,发送请求使用okhttpm,pojo对象25个属性
Feign的详细介绍:https://www.jianshu.com/p/94177e224ef8
Dubbo 与 Spring Cloud性能测试区别
Dubbo 与 Spring Cloud性能测试区别
Dubbo 与 Spring Cloud性能测试区别
Dubbo 与 Spring Cloud性能测试区别
Dubbo 与 Spring Cloud性能测试区别
Dubbo 与 Spring Cloud性能测试区别
Dubbo 与 Spring Cloud性能测试区别
Dubbo 与 Spring Cloud性能测试区别

50个属性,10W次:

Dubbo 与 Spring Cloud性能测试区别
Dubbo 与 Spring Cloud性能测试区别
Dubbo 与 Spring Cloud性能测试区别
Dubbo 与 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和SprigCloud的feign client结合是性能最高的。
  • 还有就是我们之前也测试过用RestTemplate进行测试,性能要比用Feigh还要好一些。大概能提升百分之十到十五。
  • 虽然Spring Cloud在性能上与Dubbo有天生的劣势,但考虑到Spring Cloud作为一套专门的微服务框架,再加上RESTful风格的API的趋势,从综合的角度,SpringCloud无疑是你所在的公司未来微服务化进程中不可缺少的选择之一!

总结:

Dubbo 与 Spring Cloud性能测试区别