Dubbo的介紹以及Dubbox的區別


版權聲明:本文為博主原創文章,遵循  CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接: https://blog.csdn.net/GoldWashing/article/details/82316089
 

Dubbo官網:  http://dubbo.io/

Dubbox官網: https://github.com/dangdangdotcom/dubbox

Dubbo 是阿里巴巴公司開源的一個基於Java的高性能開源RPC框架,使得應用可通過高性能的 RPC 實現服務的輸出和輸入功能,可以和 Spring框架無縫集成。后來因為某些原因沒有維護,於是當當網在這之上推出了自己的Dubbox。

Dubbox 和Dubbo本質上沒有區別,名字的含義擴展了Dubbo而已,以下擴展出來的功能,也是選擇Dubbox很重要的考察點。

支持REST風格遠程調用(HTTP + JSON/XML):基於非常成熟的JBoss RestEasy框架,在dubbo中實現了REST風格(HTTP + JSON/XML)的遠程調用,以顯著簡化企業內部的跨語言交互,同時顯著簡化企業對外的Open API、無線API甚至AJAX服務端等等的開發。事實上,這個REST調用也使得Dubbo可以對當今特別流行的“微服務”架構提供基礎性支持。 另外,REST調用也達到了比較高的性能,在基准測試下,HTTP + JSON與Dubbo 2.x默認的RPC協議(即TCP + Hessian2二進制序列化)之間只有1.5倍左右的差距,詳見文檔中的基准測試報告。

支持基於Kryo和FST的Java高效序列化實現:基於當今比較知名的KryoFST高性能序列化庫,為Dubbo默認的RPC協議添加新的序列化實現,並優化調整了其序列化體系,比較顯著的提高了Dubbo RPC的性能,詳見文檔中的基准測試報告。

支持基於Jackson的JSON序列化:基於業界應用最廣泛的Jackson序列化庫,為Dubbo默認的RPC協議添加新的JSON序列化實現。

支持基於嵌入式Tomcat的HTTP remoting體系:基於嵌入式tomcat實現dubbo的HTTP remoting體系(即dubbo-remoting-http),用以逐步取代Dubbo中舊版本的嵌入式Jetty,可以顯著的提高REST等的遠程調用性能,並將Servlet API的支持從2.5升級到3.1。(注:除了REST,dubbo中的WebServices、Hessian、HTTP Invoker等協議都基於這個HTTP remoting體系)。

升級Spring:將dubbo中Spring由2.x升級到目前最常用的3.x版本,減少版本沖突帶來的麻煩。

升級ZooKeeper客戶端:將dubbo中的zookeeper客戶端升級到最新的版本,以修正老版本中包含的bug。

支持完全基於Java代碼的Dubbo配置:基於Spring的Java Config,實現完全無XML的純Java代碼方式來配置dubbo

調整Demo應用:暫時將dubbo的demo應用調整並改寫以主要演示REST功能、Dubbo協議的新序列化方式、基於Java代碼的Spring配置等等。

修正了dubbo的bug 包括配置、序列化、管理界面等等的bug。

注:dubbox和dubbo 2.x是兼容的,沒有改變dubbo的任何已有的功能和配置方式(除了升級了spring之類的版本)

 

Dubbo的作用以及介紹

 

Dubbo服務治理

特性 描述
透明遠程調用 就像調用本地方法一樣調用遠程方法;只需簡單配置,沒有任何API侵入;
負載均衡機制 Client端LB,可在內網替代F5等硬件負載均衡器;
容錯重試機制 服務Mock數據,重試次數、超時機制等;
自動注冊發現 注冊中心基於接口名查詢服務提 供者的IP地址,並且能夠平滑添加或刪除服務提供者;
性能日志監控 Monitor統計服務的調用次調和調用時間的監控中心;
服務治理中心 路由規則,動態配置,服務降級,訪問控制,權重調整,負載均衡,等手動配置。
自動治理中心 無,比如:熔斷限流機制、自動權重調整等;

Dubbo提供三個關鍵功能,包括基於接口的遠程調用,容錯和負載平衡,以及自動服務注冊和發現。

 

Duboox項目中的名詞解析

  Provider:暴露服務的服務提供方

  Consumer:調用遠程服務的服務消費方

  Registry:提供注冊與調用服務的注冊中心

  Monitor:統計服務的調用次數和調用時間的監控中心

  Container:服務運行容器

調用關系說明

  1. 服務容器負責啟動,加載,運行服務提供者。
  2. 服務提供者在啟動時,向注冊中心注冊自己提供的服務。
  3. 服務消費者在啟動時,向注冊中心訂閱自己所需的服務。
  4. 注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基於長連接推送變更數據給消費者。
  5. 服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一台提供者進行調用,如果調用失敗,再選另一台調用。
  6. 服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鍾發送一次統計數據到監控中心。

通俗的解釋下dubbo的整個流程,我將服務比喻成房子:

start:dubbo一啟動,房東想好自己准備要租出去的房子

register:房東將房子拿到房產中介那邊進行登記,並留下自己的聯系方式

subscribe:租戶告訴房產中介自己想租一個什么樣的房子

notify:房產中介回復給租戶符合條件的房子的房東的聯系方式

invoke:租戶拿着聯系方式去找房東租房子

count:房產局全程監控着房東和租戶之間的交易

其中:

  • start、register、subscribe在dubbo服務一啟動就完成了

  • notify、count是異步執行的

  • invoke是同步執行的

Dubbo的特點

Dubbo 架構具有以下幾個特點,分別是連通性、健壯性、伸縮性、以及向未來架構的升級性。

 

Dubbo的功能列表

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM