微服務框架Dubbo與SpringCloud的區別
微服務主要的優點以下:
一、下降複雜度
將原來偶合在一塊兒的複雜業務拆分爲單個服務,規避了本來複雜度無止境的積累。每個微服務專一於單一功能,並經過定義良好的接口清晰表述服務邊界。redis
每一個服務開發者只專一服務自己,經過使用緩存、DAL等各類技術手段來提高系統的性能,而對於消費方來講徹底透明。緩存
二、可獨立部署
因爲微服務具有獨立的運行進程,因此每一個微服務能夠獨立部署。當業務迭代時只須要發佈相關服務的迭代便可,下降了測試的工做量同時也下降了服務發佈的風險。網絡
三、容錯
在微服務架構下,當某一組件發生故障時,故障會被隔離在單個服務中。 經過限流、熔斷等方式下降錯誤致使的危害,保障核心業務正常運行。架構
四、擴展
單塊架構應用也能夠實現橫向擴展,就是將整個應用完整的複製到不一樣的節點。當應用的不一樣組件在擴展需求上存在差別時,微服務架構便體現出其靈活性,由於每一個服務能夠根據實際需求獨立進行擴展。負載均衡
Dubbo
Dubbo是阿里巴巴公司開源的一個高性能優秀的服務框架,使得應用可經過高性能的 RPC 實現服務的輸出和輸入功能,能夠和Spring框架無縫集成。框架
Dubbo 核心部件(以下圖):分佈式
Provider: 暴露服務的提供方,能夠經過jar或者容器的方式啓動服務ide
Consumer:調用遠程服務的服務消費方。微服務
Registry: 服務註冊中心和發現中心。工具
Monitor: 統計服務和調用次數,調用時間監控中心。(dubbo的控制檯頁面中能夠顯示,目前只有一個簡單版本)
Container:服務運行的容器。
SpringCloud
Spring Cloud是一系列框架的有序集合,是構建分佈式系統的工具集。開發者全家桶,把業界主流最好技術整合起來集中利用這些方便工具構建業務系統。
Spring Cloud整體架構以下圖
Service Provider: 暴露服務的提供方。
Service Consumer:調用遠程服務的服務消費方。
EureKa Server: 服務註冊中心和服務發現中心。
Dubbo與SpringCloud二者的區別
最大的區別:Spring Cloud拋棄了Dubbo 的RPC通訊,採用的是基於HTTP的REST方式。
性能比較
使用一個Pojo對象包含10個屬性,請求10萬次,Dubbo和Spring Cloud在不一樣的線程數量下,每次請求耗時(ms)以下:
來源(背景):
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:提供了微服務的一整套解決方案:服務發現註冊、配置中心、消息總線、負載均衡、斷路器、數據監控等