孰優孰劣?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

 

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM