微服務框架Dubbo與SpringCloud的區別

微服務框架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:提供了微服務的一整套解決方案:服務發現註冊、配置中心、消息總線、負載均衡、斷路器、數據監控等

相關文章
相關標籤/搜索