微服務框架 spring cloud 和 dubbo 有什麼區別?


Dubbo是阿里巴巴開源的分散式服務治理框架,由於其出現的比Spring Cloud早,並且當時國內在這方面並未成熟,因此很多團隊在做服務化改造的時候都採用了Dubbo,比如噹噹、搜狐、東軟等等。從這方面來講Dubbo對中國的很多開發團隊影響還是挺深的,雖然我們廠用的是自研的服務框架但是多少參考了Dubbo的實現。如果想學習Dubbo建議先從微博開源的另一款RPC框架Motan看起,它的實現和Dubbo很像,但是精簡了不少東西,麻雀雖小五臟俱全。同時Dubbo由於默認不支持rest因此噹噹基於它擴展出了自己的DubboX,如果要用rest推薦DubboX,而且底層的序列化方式也有改動,性能並不會差太多。

PS:據說當時Dubbo的開發團隊想把Dubbo捐贈給Spring成為其下的一個子項目。

Spring Cloud相對Dubbo來說算是新事物,其在微服務領域涵蓋的點比Dubbo要廣,但從Github上來看Spirng Cloud下面的子項目有幾十個,甚至涵蓋了流水線。Spring Cloud官網列出了以下幾個主要特性:

  • Distributed/versioned configuration
  • Service registration and discovery
  • Routing
  • Service-to-service calls
  • Load balancing
  • Circuit Breakers
  • Global locks
  • Leadership election and cluster state
  • Distributed messaging

其中配置管理Dubbo是不具備的,當然可以藉助Zookeeper實現,但是不推薦。Spring Cloud提供的方案是Spring Cloud Config,再加上Spring Cloud Bus可以實現配置的廣播動態刷新。

服務註冊和發現作為基礎的能力Dubbo是有的,默認大概提供了zookeeper,廣播,redis等幾種。Spring Cloud在這塊也有多個方案,比如Spring Cloud Consul,再比如Netflix系的 Eureka 。

路由和負載均衡Dubbo默認提供了幾種方式,可以擴展。Spring Cloud同樣有ribbon和zuul,其實現的路由和負載功能更強大,其中也包括了授權、安全、服務質量監控等。

服務調用Dubbo使用了私有的Dubbo協議(當然也有其他協議也可以自己擴展,個人感覺Dubbo的擴展性做的很不錯。),spring cloud應該是推薦HTTP。

斷路器這塊Dubbo提供的比較簡單,SpringCloud藉助Spring Cloud hystrix實現了複雜的服務級別可用性,比如服務隔離、熔斷、恢復、降級等,同時提供了可視化的監控。

至於後面的全局鎖、leader選舉、分散式消息等等Dubbo是不提供的,Spring Cloud都提供了相應的解決方案。

藉助Spring的強大背景,Spring Cloud目前發展的也比較迅速,社區也比較活躍,剛才看了github上最近的更新是3小時前。


謝邀。

一直在用dubbo,spring cloud從去年開始業界逐漸有很多公司在用,說下我的看法:

從框架目標來講dubbo只是一個分散式服務調用的框架,而spring cloud所著眼的問題域是整個微服務體系,包含了分散式配置、服務註冊與發現、服務路由、服務調用、服務跟蹤、斷路保護、消息匯流排、批量任務等等。dubbo本身只提供了服務治理的功能,而其他組件是第三方開源實現,而不像spring提供了一站式集成。

活躍度上dubbo已經很久沒人理了,spring cloud一直活躍,如果用dubbo的話建議fork社區更活躍功能也更完善的dubbox。
文檔質量上dubbo官網這塊說明的還是挺詳細的,spring cloud中國社區還在努力中。


從項目的背景來看,Dubbo 國內用的公司挺多,國內影響力大,(alibaba/dubbo)是阿里巴巴開源的分散式服務化治理框架(微服務框架),久經阿里巴巴電商平台的大規模複雜業務的高並發考驗,到目前為止Dubbo仍然是開源界中體系最完善的服務化治理框架,因此Dubbo被國內大量的的互聯網公司和專統企業使用,國內使用Dubbo的企業有:阿里巴巴、京東、噹噹、攜程、去哪兒、搜狐、南方航空、中軟國際、軟通動力、各大電信運營商等

Spring Cloud 自然在國外影響力較大,所以這個來看不分伯仲了,畢竟都有大公司在使用。從社區的活躍度來看,可以看下各自的Github託管項目來區分,Dubbo · GitHub 與 Spring Cloud · GitHub ,從更新頻率與更新時間來看 Spring Cloud 優於Dubbo,Dubbo基本不維護了。
所以總的來說,dubbo相對來說比較穩定成熟,Spring Cloud對應支持的組件相當比較多,更新得比較頻繁,國內的普及程度還沒dubbo高,隨著各種組價的不斷完善,未來它是實現微服務架構的首選。

參考內容:Dubbo視頻教程(Dubbo項目實戰)

Spring Cloud 第一季


dubbo是可數集,springcloud是連續統


dubbo是通過RPC請求方式訪問,屬於長連接的請求,而springcloud是基於http請求的方式,據微服務的定義,微服務是應該通過http請求的方式訪問,且spring cloud是一整套微服務的解決方案,如果是學習的心態,推薦spring cloud,如果是快速開發分散式架構的web服務推薦dubbo或者噹噹網封裝後的dubbox。


推薦閱讀:

SOA和微服務架構的區別?

TAG:微服務架構 | dubbo | SpringCloud |