1. 程式人生 > >孰優孰劣?Dubbo VS Spring Cloud效能測試大對決!

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