:-: **Dubbo與SpringCloud對比**
| |Dubbo| SpringCloud|
| --- | --- | --- |
|服務注冊中心| Zookeeper| Spring Cloud Netflix Eureka|
|服務調用方式| RPC| REST API|
|服務監控| Dubbo-monitor| Spring Boot Admin|
|斷路器| 不完善| Spring Cloud Netflix Hystrix|
|服務網關| 無| Spring Cloud Netflix Zuul|
|分布式配置| 無| Spring Cloud Config|
|服務跟蹤| 無| Spring Cloud Sleuth|
|消息總線| 無| Spring Cloud Bus|
|數據流 | 無| Spring Cloud Stream|
|批量任務| 無| Spring Cloud Task|
<mark>最大區別: SpringCloud拋棄了Dubbo的RPC通信,采用的是基于HTTP的REST方式。</mark>
<br/>
嚴格來說,這兩種方式各有優劣。雖然從一定程度上來說,后者犧牲了服務調用的性能,但也避免了上面提到的原生RPC帶來的問題。而且REST相比RPC更為靈活,服務提供方和調用方的依賴只依靠一紙契約,不存在代碼級別的強依賴,這在強調快速演化的微服務環境下,顯得更加合適。
<br/>
品牌機與組裝機的區別:
很明顯,Spring Cloud的功能比DUBBO更加強大,涵蓋面更廣,而且作為Spring的拳頭項目,它也能夠與Spring Framework,Spring Boot、Spring Data、Spring Batch等其他Spring項目完美融合,這些對于微服務而言是至關重要的。使用Dubbo構建的微服務架構就像組裝電腦,各環節我們的選擇自由度很高,但是最終結果很有可能因為一條內存質量不行就點不亮了,總是讓人不怎么放心,但是如果你是一名高手,那這些都不是問題;而Spring Cloud就像品牌機,在Spring Source的整合下,做了大量的兼容性測試,保證了機器擁有更高的穩定性,但是如果要在使用非原裝組件外的東西,就需要對其基礎有足夠的了解。
<br/>
社區支持與更新力度:
最為重要的是,DUBBO停止了5年左右的更新,雖然2017.7重啟了。對于技術發展的新需求,需要由開發者自行拓展升級(比如當當網弄出了DubboX),這對于很多想要采用微服務架構的中小軟件組織,顯然是不太合適的,中小公司沒有這么強大的技術能力去修改Dubbo源碼+周邊的一整套解決方案,并不是每一個公司都有阿里的大牛+真實的線上生產環境測試過。
<br/>
Dubbo與SpringCloud總結如下(阿里中間件高級研發工程師劉軍的原話):
關于Dubbo和 Spring Cloud 間的關系,我們在開源中國年終盛典的Dubbo分享中也作了簡單闡述,首先要明確的一點是Dubbo和Springcloud并不是完全的競爭關系,兩者所解決的問題域并不—樣: <mark>Dubbo的定位始終是—款RPC框架,Spring Cloud的目標是微服務架構下的—站式解決方案。如果非要比較的話,我覺得Dubbo 可以類比到Netflix oSS技術棧,而Spring Cloud集成了Netflix OSS作為分布式服務治理解決方案</mark>,但除此之外SpringCloud還提供了包括config、stream、security、sleuth 等等分布式問題解決方案。
<br/>
當前由于RPC協議、注冊中心元數據不匹配等問題,<mark>在面臨微服務基礎框架選型時Dubbo與Spring Cloud是只能二選一</mark>,這也是為什么大家總是拿Dubbo和Spring Cloud 做對比的原因之一。Dubbo 之后會積極錄求適配到SpringCloud 生態,比如作為Spring cloud的二進制通信方案來發揮Dubbo的性能優勢,或者Dubbo 通過模塊化以及對http的支持適配到Spring cloud 。
- 微服務
- 微服務是什么?
- 微服務架構
- 微服務優缺點
- 微服務技術棧
- 微服務框架對比
- SpringCloud
- SpringCloud是什么
- SpringCloud與SpringBoot對比
- SpringCloud與Dubbo對比
- Rest微服務案例
- 總體介紹
- 父工程構建步驟
- 公共模塊構建步驟
- 服務端模塊構建步驟
- 消費端模塊構建步驟
- Eureka服務注冊與發現
- Eureka是什么
- Eureka原理
- Eureka注冊服務中心構建
- 向Eureka注冊已有微服務
- Eureka的自我保護機制
- Eureka服務發現
- Eureka集群配置
- Eureka與Zookeeper對比
- Ribbon負載均衡
- Ribbon是什么
- Ribbon負載均衡演示
- 構建服務端模塊
- 構建消費端模塊
- Ribbon核心組件IRule
- 自定義負載均衡策略
- Ribbon均衡策略優先級
- 輪詢策略算法
- OpenFeign負載均衡
- OpenFeign是什么
- 負載均衡演示
- 日志打印功能
- 導出功能
- Hystrix斷路器
- Hystrix是什么
- 服務熔斷
- Hystrix服務端構建
- 服務熔斷演示
- 服務熔斷類型
- HystrixProperty配置匯總
- 服務降級
- Hystrix客戶端構建
- 服務降級演示
- fallbackFactory
- 熔斷與降級
- 服務監控
- 網關服務Zuul
- Zuul是什么
- Zuul路由服務構建
- 設置訪問映射規則
- Config分布式配置中心
- Config分布式配置中心是什么
- Config服務端與Git通信
- Config客戶端獲取配置
- Config客戶端動態刷新
- Bus消息總線
- Bus消息總線是什么
- Bus消息總線原理
- 廣播通知設計思想
- 廣播通知演示
- 定點通知演示
- Stream消息驅動
- 為什么要引入Stream
- Stream消息驅動是什么
- Stream設計思想
- Stream流程和注解
- Stream案例演示
- 重復消費問題
- 消息持久化
- Sleuth分布式鏈路跟蹤
- Sleuth是什么
- 搭建鏈路監控
- SpringCloud Alibaba
- Nacos注冊與配置中心
- Nacos是什么
- 安裝并運行Nacos
- Nacos注冊中心
- 服務端入住Nacos
- 消費端入住Nacos
- Nacos負載均衡演示
- 服務注冊中心對比
- Nacos的AP和CP轉化
- Nacos配置中心
- 基礎配置演示
- Nacos分類配置
- Nacos集群搭建
- Sentinel實現熔斷與限流
- Sentinel是什么
- Sentinel環境搭建
- Sentinel監控微服務演示
- Sentinel流控規則
- 流量監控的作用
- 設置流控規則
- Sentinel降級規則
- 熔斷降級作用
- 設置降級規則
- Sentinel熱點限流
- 什么是熱點
- 設置熱點限流
- Sentinel系統限流
- @SentinelResource
- @SentinelResource屬性
- @SentinelResource限流演示
- @SentinelResource熔斷演示
- 規則持久化
- 熔斷框架比較
- Seata分布式事務
- 分布式事務問題
- Seata是什么
- Seata分布式事務過程
- Seata環境搭建
- 演示示例
- 業務說明
- 數據庫環境準備
- 微服務環境準備
- 測試
- Consul服務注冊與發現
- Consul是什么
- Consul能做什么
- 環境搭建
- Windows平臺
- 服務端入住Consul
- 消費端入住Consul
- 注冊中心對比
- Zookeeper服務注冊與發現
- Zookeeper是什么
- 環境搭建
- 服務端入住Zookeeper
- 消費端入住Zookeeper
- 網關服務Gateway
- Gateway是什么
- Gateway能做什么
- Gateway對比Zuul
- 三大核心概念
- Gateway工作流
- 環境搭建
- 網關路由配置方式
- 配置文件配置
- 代碼中配置
- 動態路由
- Predicate斷言
- 斷言是什么
- 常用斷言
- Filter過濾器
- 過濾器是什么
- 過濾器種類
- 自定義過濾器