來源(背景):
Dubbo,是阿里巴巴服務化治理的核心框架,並被普遍應用於阿里巴巴集團的各成員站點。
Spring Cloud,從命名咱們就能夠知道,它是Spring Source的產物,Spring社區的強大背書能夠說是Java企業界最有影響力的組織了,除了Spring Source以外,還有Pivotal和Netfix是其強大的後盾與技術輸出。其中Netflix開源的整套微服務架構套件是Spring Cloud的核心。redis
傳輸:
Dubbo因爲是二進制的傳輸,佔用帶寬會更少;
Spring Cloud是http協議傳輸,帶寬會比較多,同時使用http協議通常會使用JSON報文,消耗會更大。可是在國內95%的公司內,網絡消耗不是什麼太大問題,若是真的成了問題,經過壓縮、二進制、高速緩存、分段降級等方法,很容易解。spring
開發難度:
Dubbo的開發難度較大,緣由是dubbo的jar包依賴問題不少大型工程沒法解決;
Spring Cloud的接口協議約定比較自由且鬆散,須要有強有力的行政措施來限制接口無序升級緩存
後續改進:
Dubbo經過dubbofilter,不少東西沒有,須要本身繼承,如監控,如日誌,如限流,如追蹤
Spring Cloud本身帶了不少監控、限流措施,可是功能可能和歐美習慣相同,國內須要進行適當改造,但更簡單,就是ServletFilter而已,可是總歸比dubbo多一些東西是好的;網絡
註冊中心:
Dubbo的註冊中心能夠選擇zk,redis等多種;
Spring Cloud:的註冊中心只能用eureka或者自研;架構
配置中心:
dubbo:若是咱們使用配置中心、分佈式跟蹤這些內容都須要本身去集成,無形中增長了使用難度。
Spring Cloud:提供了微服務的一整套解決方案:服務發現註冊、配置中心、消息總線、負載均衡、斷路器、數據監控等負載均衡
核心部件的比較:
Dubbo:
Provider:暴露服務的提供方,能夠經過 jar 或者容器的方式啓動服務。
Consumer:調用遠程服務的服務消費方。
Registry:服務註冊中心和發現中心。
Monitor:統計服務和調用次數,調用時間監控中心。(Dubbo 的控制檯頁面中能夠顯示,目前只有一個簡單版本。)
Container:服務運行的容器。
Spring Cloud:
Service Provider: 暴露服務的提供方。
Service Consumer:調用遠程服務的服務消費方。
EureKa Server: 服務註冊中心和服務發現中心。框架
架構的完整度:
Dubbo只是實現了服務治理;
Spring Cloud下面有17個子項目(可能還會新增)分別覆蓋了微服務架構下的方方面面,服務治理只是其中的一個方面;
必定程度來講,Dubbo只是Spring Cloud Netflix中的一個子集。maven
服務依賴方式:
Dubbo:服務提供方與消費方經過接口的方式依賴,服務調用設計以下:
Interface 層:服務接口層,定義了服務對外提供的全部接口。
Molel 層:服務的 DTO 對象層。
Business層:業務實現層,實現 Interface 接口而且和 DB 交互。
所以須要爲每一個微服務定義各自的 Interface 接口,並經過持續集成發佈到私有倉庫中。調用方應用對微服務提供的抽象接口存在強依賴關係,開發、測試、集成環境都須要嚴格的管理版本依賴。分佈式
經過 maven 的 install & deploy 命令把 Interface 和 Model 層發佈到倉庫中,服務調用方只須要依賴 Interface 和 Model 層便可。在開發調試階段只發布 Snapshot 版本,等到服務調試完成再發布;Release 版本,經過版本號來區分每次迭代的版本。經過 xml 配置方式便可接入 Dubbo,對程序無***。
總之:服務提供方與消費方經過接口的方式依賴,Dubbo 服務依賴略重,須要有完善的版本管理機制,可是程序***少。ide
Spring Cloud:
服務提供方和服務消費方經過 Json 方式交互,所以只須要定義好相關 Json 字段便可,消費方和提供方無接口依賴。經過註解方式來實現服務配置,對於程序有必定***。
經過 Json 交互,省略了版本管理的問題,可是具體字段含義須要統一管理,自身 Rest API 方式交互,爲跨平臺調用奠基了基礎。
整體:
Dubbo:使用Dubbo構建的微服務架構就像組裝電腦,各環節咱們的選擇自由度很高,可是最終結果頗有可能由於一條內存質量不行就點不亮了,老是讓人不怎麼放心,可是若是你是一名高手,那這些都不是問題;
Spring Cloud就像品牌機,在Spring Source的整合下,作了大量的兼容性測試,保證了機器擁有更高的穩定性,可是若是要在使用非原裝組件外的東西,就須要對其基礎有足夠的瞭解。
-------------------------------------
優缺點(綜上獲得):
-------------------------------------
Dubbo
優勢:
1.支持各類通訊協議,並且消費方和服務方使用長連接方式交互,通訊速度上略勝 ;
2.採用rpc方式,性能上比Spring Cloud的rpc更好;
3.dubbo的網絡消耗小於springcloud
缺點:
1.若是咱們使用配置中心、分佈式跟蹤這些內容都須要本身去集成;
2.開發難度較大,緣由是dubbo的jar包依賴問題不少大型工程沒法解決;
3.
Spring Cloud 案例 www.1b23.com:
優勢:
一、產出於Spring你們族,Spring在企業級開發框架中來頭很大,能夠保證後續的更新、完善。
二、spring cloud社區活躍,教程豐富,遇到問題很容易找到解決方案;
三、spring cloud功能比dubbo更加完善;
五、spring cloud採用rest訪問方式,rest的技術無關性使用效果更棒;
六、spring cloud輕輕鬆鬆幾行代碼就完成了熔斷、均衡負責、服務中心的各類平臺功能;
七、從公司招聘工程師方面,spring cloud更有優點,由於其技術更新更炫;
八、提供了微服務的一整套解決方案:服務發現註冊、配置中心、消息總線、負載均衡、斷路器、數據監控等;做爲一個微服務治理的你們夥,考慮的很全面,幾乎服務治理的方方面面都考慮到了,方便開發開箱即用;
缺點:1.若是對於系統的響應時間有嚴格要求,長連接更合適。2.接口協議約定比較自由且鬆散,須要有強有力的行政措施來限制接口無序升級