1. 程式人生 > >spring cloud和dubbo的區別,各自優缺點

spring cloud和dubbo的區別,各自優缺點

區別:-----來源(背景):Dubbo,是阿里巴巴服務化治理的核心框架,並被廣泛應用於阿里巴巴集團的各成員站點。Spring Cloud,從命名我們就可以知道,它是Spring Source的產物,Spring社群的強大背書可以說是Java企業界最有影響力的組織了,除了Spring Source之外,還有Pivotal和Netfix是其強大的後盾與技術輸出。其中Netflix開源的整套微服務架構套件是Spring Cloud的核心。傳輸:Dubbo由於是二進位制的傳輸,佔用頻寬會更少;Spring Cloud是http協議傳輸,頻寬會比較多,同時使用http協議一般會使用JSON報文,消耗會更大。但是在國內95%的公司內,網路消耗不是什麼太大問題,如果真的成了問題,通過壓縮、二進位制、快取記憶體、分段降級等方法,很容易解。開發難度:
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中的一個子集。服務依賴方式:Dubbo:服務提供方與消費方通過介面的方式依賴,服務呼叫設計如下:
  • Interface 層:服務介面層,定義了服務對外提供的所有介面。
  • Molel 層:服務的 DTO 物件層。
  • Business層:業務實現層,實現 Interface 介面並且和 DB 互動。
因此需要為每個微服務定義各自的 Interface 介面,並通過持續整合釋出到私有倉庫中。呼叫方應用對微服務提供的抽象介面存在強依賴關係,開發、測試、整合環境都需要嚴格的管理版本依賴。通過 maven 的 install & deploy 命令把 Interface 和 Model 層釋出到倉庫中,服務呼叫方只需要依賴 Interface 和 Model 層即可。在開發除錯階段只發布 Snapshot 版本,等到服務除錯完成再發布;Release 版本,通過版本號來區分每次迭代的版本。通過 xml 配置方式即可接入 Dubbo,對程式無入侵。總之:服務提供方與消費方通過介面的方式依賴,Dubbo 服務依賴略重,需要有完善的版本管理機制,但是程式入侵少。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:優點:1、產出於Spring大家族,Spring在企業級開發框架中來頭很大,可以保證後續的更新、完善。2、spring cloud社群活躍,教程豐富,遇到問題很容易找到解決方案3、spring cloud功能比dubbo更加完善;5、spring cloud採用rest訪問方式,rest的技術無關性使用效果更棒;6、spring cloud輕輕鬆鬆幾行程式碼就完成了熔斷、均衡負責、服務中心的各種平臺功能;7、從公司招聘工程師方面,spring cloud更有優勢,因為其技術更新更炫;8、提供了微服務的一整套解決方案:服務發現註冊、配置中心、訊息匯流排、負載均衡、斷路器、資料監控等;作為一個微服務治理的大傢伙,考慮的很全面,幾乎服務治理的方方面面都考慮到了,方便開發開箱即用;缺點:1.如果對於系統的響應時間有嚴格要求,長連結更合適。2.介面協議約定比較自由且鬆散,需要有強有力的行政措施來限制介面無序升級-----------------------------------------------參考自: