Dubbox-擴展Dubbo服務框架支持REST風格遠程調用[網摘]

 噹噹網開源了 Dubbox 項目,可爲 Dubbo 服務框架提供多項擴展功能,包括 REST 風格遠程調用、Kryo/FST 序列化等等。html

        噹噹網架構部和技術委員會架構師沈理向 InfoQ 中文站介紹了 Dubbox 項目,開發背景和主要特色描述以下:java

        Dubbo 是一個被國內不少互聯網公司普遍使用的開源分佈式服務框架,即便從國際視野來看應該也是一個很是全面的 SOA 基礎框架。做爲一個重要的技術研究課題,在噹噹網咱們根據自身的需求,爲 Dubbo 實現了一些新的功能,並將其命名爲 Dubbox(即 Dubbo eXtensions)。git

        主要的新功能包括:github

  • 支持 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 倍左右的差距,詳見下文的基準測試報告。

噹噹網開源Dubbox,擴展Dubbo服務框架支持REST風格遠程調用

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

噹噹網開源Dubbox,擴展Dubbo服務框架支持REST風格遠程調用

噹噹網開源Dubbox,擴展Dubbo服務框架支持REST風格遠程調用

  •         支持基於嵌入式 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 體系)。web

  •         升級 Spring:將 dubbo 中 Spring 由 2.x 升級到目前最經常使用的 3.x 版本,減小項目中版本衝突帶來的麻煩。sql

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

        上面不少功能已在噹噹網內部穩定的使用,如今開源出來,供你們參考和指正。也但願感興趣的朋友也來爲 Dubbo 貢獻更多的改進。apache

        注:dubbox 和 dubbo 2.x 是兼容的,沒有改變 dubbo 的任何已有的功能和配置方式(除了升級了 Spring 之類的版本)。另外,dubbox 也嚴格遵循了 Apache 2.0 許可證的要求。tomcat

        附:分佈式服務框架與 RPC 框架服務器

        目前開源領域能找到的分佈式服務框架也有很多,比較有表明性的包括 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 相關框架和容器的開發。

本文摘自:http://www.open-open.com/news/view/10d4ae9

相關文章
相關標籤/搜索