Dubbox的介紹和簡單示例

Dubbox的介紹和簡單示例

https://github.com/dangdangdotcom/dubboxgit

http://www.sohu.com/a/115234862_464071github

Dubbo是一個來自阿里巴巴的開源分佈式服務框架,噹噹根據自身的需求,爲Dubbo實現了一些新的功能,包括REST風格遠程調用、Kryo/FST序列化等等。並將其命名爲Dubbox(即Dubbo Extensions)web

Demo地址:https://github.com/wosyingjun/DubboxDemoredis

相似範例:http://wosyingjun.iteye.com/blog/2312553瀏覽器

Dubbo架構tomcat

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

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

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

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

  • Container: 服務運行容器。

爲何使用Dubbox而不是Dubbo

Dubbo是阿里開源的RPC服務調用框架,已經3年沒有維護了,而噹噹網開源的Dubbox在保證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高效序列化實現:基於當今比較知名的Kryo和FST高性能序列化庫,爲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配置等等。

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

DubboxDemo項目的安裝

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

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

  • Zookeeper安裝,做爲dubbox的註冊中心,見:ZooKeeper 高可用集羣的安裝及配置

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

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

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

補充:

  • 若是dubbo protocol配置爲rest的,能夠直接經過瀏覽器訪問http://xxx.xx.xx.xx:8080/user/getUserByPhone/1888888888

  • 服務提供者最終打成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" /> 參考

https://github.com/dangdangdotcom/dubbox

http://dubbo.io/User+Guide-zh.htm返回搜狐,查看更多

相關文章
相關標籤/搜索