dubbo學習 三 dubbox概述

噹噹網根據自身的需求,對dubbo進行了擴展就叫成了dubbox。具體的使用方法能夠參照官網各類例子:http://dangdangdotcom.github.io/dubbox/

 

支持rest風格遠程調用

以前瞭解過restful服務具體是什麼,resteasy也瞭解過,因此看到就能夠理解。
基於很是成熟的以前看過的rest實現jboss-resteasy框架,他把這個框架集成到了dubbo裏面實現了rest風格的遠程調用,這樣就大大簡化了服務的開發和更多類型的消費者系統。也使dubbo能夠對當今特別流行的微服務架構提供支持。可是因爲restful服務的消費端可能多種多樣,若是消費端不是用dubbo的話,那麼關於容錯和負載均衡就得另想辦法了,由於dubbo本身的容錯和負載是在消費端調用的時候實現的。須要考慮其餘手段對多個服務端作負載了,nginx,f5什麼的。
 

 

支持基於Kryo和FST的Java高效序列化實現

關於序列化的一點東西,以前瞭解過,因此這裏就能夠看明白了。
下面的一些官網的摘抄
在dubbo RPC中,同時支持多種序列化方式,例如:
 
dubbo序列化:阿里還沒有開發成熟的高效java序列化實現,阿里不建議在生產環境使用它
 
hessian2序列化:hessian是一種跨語言的高效二進制序列化方式。但這裏實際不是原生的hessian2序列化,而是阿里修改過的hessian lite,它是dubbo RPC默認啓用的序列化方式
 
json序列化:目前有兩種實現,一種是採用的阿里的fastjson庫,另外一種是採用dubbo中本身實現的簡單json庫,但其實現都不是特別成熟,並且json這種文本序列化性能通常不如上面兩種二進制序列化。
 
java序列化:主要是採用JDK自帶的Java序列化實現,性能很不理想。
 
在一般狀況下,這四種主要序列化方式的性能從上到下依次遞減。對於dubbo RPC這種追求高性能的遠程調用方式來講,實際上只有一、2兩種高效序列化方式比較般配,而第1個dubbo序列化因爲還不成熟,因此實際只剩下2可用,因此dubbo RPC默認採用hessian2序列化。
但hessian是一個比較老的序列化實現了,並且它是跨語言的,因此不是單獨針對java進行優化的。而dubbo RPC實際上徹底是一種Java to Java的遠程調用,其實沒有必要採用跨語言的序列化方式(固然確定也不排斥跨語言的序列化)。
 
最近幾年,各類新的高效序列化方式層出不窮,不斷刷新序列化性能的上限,最典型的包括:
 
專門針對Java語言的:Kryo,FST等等
 
跨語言的:Protostuff,ProtoBuf,Thrift,Avro,MsgPack等等
 
這些序列化方式的性能多數都顯著優於hessian2(甚至包括還沒有成熟的dubbo序列化)。
 
有鑑於此,咱們爲dubbo引入Kryo和FST這兩種高效Java序列化實現,來逐步取代hessian2。
 
其中,Kryo是一種很是成熟的序列化實現,已經在Twitter、Groupon、Yahoo以及多個著名開源項目(如Hive、Storm)中普遍的使用。而FST是一種較新的序列化實現,目前還缺少足夠多的成熟使用案例,但我認爲它仍是很是有前途的。
在面向生產環境的應用中,我建議目前更優先選擇Kryo。
 
 

使用方法

 

 

 
 
 

還有一些其餘擴展和優化

支持基於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。
相關文章
相關標籤/搜索