噹噹網近日開源了Dubbox項目,可爲Dubbo服務框架提供多項擴展功能,包括REST風格遠程調用、Kryo/FST序列化等等。git
噹噹網架構部和技術委員會架構師沈理向InfoQ中文站介紹了Dubbox項目,開發背景和主要特色描述以下:github
Dubbo是一個被國內不少互聯網公司普遍使用的開源分佈式服務框架,即便從國際視野來看應該也是一個很是全面的SOA基礎框架。做爲一個重要的技術研究課題,在噹噹網咱們根據自身的需求,爲Dubbo實現了一些新的功能,並將其命名爲Dubbox(即Dubbo eXtensions)。apache
主要的新功能包括:tomcat
支持基於嵌入式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。分佈式
上面不少功能已在噹噹網內部穩定的使用,如今開源出來,供你們參考和指正。也但願感興趣的朋友也來爲Dubbo貢獻更多的改進。微服務
注:dubbox和dubbo 2.x是兼容的,沒有改變dubbo的任何已有的功能和配置方式(除了升級了Spring之類的版本)。另外,dubbox也嚴格遵循了Apache 2.0許可證的要求。性能
目前開源領域能找到的分佈式服務框架也有很多,比較有表明性的包括Twitter的Finagle(基於Scala語言),Flipkart(印度最大的B2C網站)的Phantom(文檔較少),Apache的Tuscany(有點陳舊,並且不是很適合互聯網公司)等等,其實國內也有少數公司提供了開源Java服務框架,但dubbo在其功能完善性、架構優雅性、使用簡便性等方面依然有其相對獨特的優點,儘管dubbo絕大部分的開發都是2012年之前完成的。測試
另外,業界的開源RPC框架更是數量衆多,難以計數,可是,通常的RPC框架和咱們討論的分佈式服務框架仍是具備至關大的距離,好比在遠程調用的多協議、多序列化支持,完善的服務治理等等方面都有較多的缺失。也正是因爲這種缺失,著名的Apache Thrift等框架在這裏也可歸爲RPC框架,而主要構建在Thrift之上的Finagle、Phantom等框架更接近於完整的分佈式服務框架(固然,Dubbo其實也支持Thrift,只是還不太完善)。
沈理,目前在噹噹網的架構部和技術委員會擔任架構師,主要負責噹噹網的SOA實施(即服務化)以及分佈式服務框架的開發。之前也有在BEA、Oracle、Redhat等外企的長期工做經歷,從事過多個不一樣SOA相關框架和容器的開發。