Dubbox的介紹和簡單示例

Dubbo架構

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

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

  • Registry: 服務註冊與發現的註冊中心。

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

  • Container: 服務運行容器。

爲什麼使用Dubbox而不是Dubbo下載 

Dubbo是阿里開源的RPC服務調用框架,已經3年沒有維護了,而噹噹網開源的Dubbox在保證Dubbo原有功能的基礎上做了一系列優化。

使用Dubbox的好處下載 

  • 支持REST風格遠程調用(HTTP + JSON/XML):基於非常成熟的JBoss框架,在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高效序列化實現:基於當今比較知名的高性能序列化庫,爲Dubbo默認的RPC協議添加新的序列化實現,並優化調整了其序列化體系,比較顯著的提高了Dubbo RPC的性能。

  • 支持基於Jackson的JSON序列化:基於業界應用最廣泛序列化庫,爲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配置等等。

注:Dubbox和Dubbo 2.X是兼容的,沒有改變Dubbo的任何已有的功能和配置方式下載 

DubboxDemo項目的安裝下載 

  • Git Clone https://github.com/dangdangdotcom/dubbox

  • Checkout出來的Dubbox通過Maven編譯並安裝到本地倉庫。下載 

  • Zookeeper安裝,作爲dubbox的註冊中心 下載 

  • 修改配置文件地址<dubbo:registry protocol="zookeeper" address="zookeeper://xxxxxxxxx">。

  • 直接運行ProviderTest類啓動服務發佈者。

  • 直接運行ConsumerTest類啓動服務消費者。

補充:
  • 如果dubbo protocol配置爲rest的,可以直接通過瀏覽器訪問下載 

  • 服務提供者最終打成jar時建議將啓動類設置爲com.alibaba.dubbo.container.Main,具體可見Provider的pom.xml下載 

Dubbox支持的遠程調用協議下載 

  • dubbo:採用單一長連接和NIO異步通訊,基於TCP協議,默認基於netty框架進行傳輸,Hessian二進制序列化。

  • RMI:短連接同步傳輸,基於TCP協議,Java標準二進制序列化。

  • Hessian:短連接同步傳輸,基於HTTP協議,缺省內嵌Jetty作爲服務器實現,Hessian二進制序列化。

  • http:短連接同步傳輸,基於HTTP協議,採用Spring的HttpInvoker實現,表單序列化。

  • webservice:短連接同步傳輸,基於HTTP協議,基於CXF實現,SOAP文本序列化。

  • thrift:thrift rpc框架。

  • memcached:採用KV存儲的方式傳輸數據。

  • redis:採用KV存儲的方式傳輸數據。

  • rest:dubbox提供,HTTP + JSON/XML,可內嵌tomcat實現http remoting體系。

Dubbox支持的序列化方式比較下載 

 

推薦協議配置下載 

<dubbo:protocol name="dubbo" serialization="kryo"  port="20990"  />
<dubbo:protocol name="rest" port="8080"  server="tomcat" />


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章