0
点赞
收藏
分享

微信扫一扫

Dubbox-扩展Dubbo服务框架支持REST风格远程调用[网摘]

 当当网开源了 ​​Dubbox 项目​​,可为 Dubbo 服务框架提供多项扩展功能,包括 REST 风格远程调用、Kryo/FST 序列化等等。

        当当网架构部和技术委员会架构师​​沈理​​向 InfoQ 中文站介绍了 Dubbox 项目,开发背景和主要特点描述如下:

        ​​Dubbo​​​ 是一个被国内很多互联网公司广泛使用的开源分布式服务框架,即使从国际视野来看应该也是一个非常全面的 SOA 基础框架。作为一个重要的技术研究课题,在当当网我们根据自身的需求,为 Dubbo 实现了一些新的功能,并将其命名为 ​​Dubbox​​(即 Dubbo eXtensions)。

        主要的新功能包括:

  • 支持 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风格远程调用[网摘]_Dubbo

  • 支持基于 Kryo 和 FST 的 Java 高效序列化实现:基于当今比较知名的​​Kryo​​​ 和​​FST​​ 高性能序列化库,为 Dubbo 默认的 RPC 协议添加新的序列化实现,并优化调整了其序列化体系,比较显著的提高了 Dubbo RPC 的性能,详见下图和文档中的基准测试报告。

Dubbox-扩展Dubbo服务框架支持REST风格远程调用[网摘]_分布式服务_02

Dubbox-扩展Dubbo服务框架支持REST风格远程调用[网摘]_分布式服务_03

  • 支持基于嵌入式 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 许可证的要求。

        附:分布式服务框架与 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​​

相关文档 - ​​更多​​

1、​​Dubbo 用户指南.pdf​​

2、​​DUBBO 开源.pptx​​

3、​​Dubbo实现原理.doc​​

4、​​Dubbo 功能介绍.pdf​​

5、​​Dubbo 功能介绍.pdf​​

6、​​Dubbo 框架扩展.pdf​​

7、​​阿里 Dubbo 培训.pptx​​

8、​​DUBBO 开源.pptx​​

9、​​REST构架风格.doc​​

10、​​REST,Web 服务,REST-ful 服务.pdf​​

相关分享经验 - ​​更多​​

1、​​Dubbo扩展:Dubbox​​

2、​​支撑微博千亿调用的轻量级RPC框架:Motan​​

3、​​Dubbox入门示例(注册服务器使用zookeeper)​​

4、​​当当网分布式作业调度组件:Elastic-Job​​

5、​​sharding-jdbc - 透明化数据库分库分表访问​​

6、​​基于微服务的软件架构模式​​

7、​​谈Dubbo服务框架​​

8、​​dubbo学习​​

9、​​让餐厅放心的云服务-雅座CRM技术解密​​

10、​​Dubbo:来自于阿里巴巴的分布式服务框架​​

相关讨论 - ​​更多​​

1、​​REST会是SOA的未来吗?​​

2、​​RESTful架构详解​​

3、​​轻量级javaweb框架blade,简洁而强大​​

4、​​javaweb框架unique-web​​

5、​​极光IM有什么样优势​​

6、​​为您的Web项目构建一个简单的JSON控制器​​

7、​​8种Nosql数据库系统对比​​



赠人玫瑰
手留余香

我们曾如此渴望命运的波澜,到最后才发现:人生最曼妙的风景,竟是内心的淡定与从容……我们曾如此期盼外界的认可,到最后才知道:世界是自己的,与他人毫无关系!-杨绛先生

如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】按钮。
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【关注我】。



举报

相关推荐

0 条评论