阅读 134

Dubbo进阶(十一)—— Dubbo与DubboX区别

前世今生

Dubbo源于阿里的淘宝网开源分布式服务架构,致力于提供高性能透明化RPC远程服务调用方案,是SOA服务化治理方案的核心框架。淘宝网将其开源之后,得到了很多的拓展和支持(比较出名的有:当当网的扩展版本dubbox,京东的扩展版本jd-hydra等)。

Dubbox(即Dubbo eXtensions)是当当网Fork基于dubbo2.x的升级版本,兼容原有的dubbox。其中升级了zookeeperspring版本,并且支持restfull风格的远程调用。

版本

  • Dubbo目前已停止更新;
  • Dubbox目前还在更新。

说明:dubboxdubbo 2.x是兼容的,没有改变dubbo的任何已有功能和配置方式(除了升级Spring之类的版本)。

  • 据说淘宝网dubbo与一个非开源的框架HSF有争执,导致dubbo的团队已经解散了,但是其扩展的版本dubbox却得到不断的发展(升级更新);
  • dubbox-2.8.0:该版本已经在生产环境中使用,主要支持REST风格远程调用、支持KryoFST序列化、升级了SpringZookeeper客户端、调整了demo应用等等;
  • dubbox-2.8.1:主要支持基于嵌入式tomcathttp-remoting,优化了REST客户端性能,在REST中支持限制服务端接纳的最大HTTP连接数等等;
  • dubbox-2.8.2:支持REST中的HTTP logging,包括HTTP header的字段和HTTP body中的消息体,方便调试、日志纪录等等;提供辅助类便于REST的中文处理;改变使用@Reference annotation配置时的异常处理方式,即当用annotation配置时,过去dubbo在启动期间不抛出依赖服务找不到的异常,而是在具体调用时抛出NPE,这与用XML配置时的行为不一致;较大的充实了Dubbo REST的文档。
  • dubbox-2.8.3:在REST中支持dubbo统一的方式用bean validation annotation作参数校验;
  • RpcContext上支持获取底层协议的Request/Response;
  • 支持采用SpringJava Config方式配置dubbo;
  • Dubbo协议中支持基于Jacksonjson序列化;
  • Spring AOP代理过的对象上支持dubbo annotation配置;
  • 修正Dubbo管理界面中没有consumer时出现空指针异常;
  • 修正@Reference annotationprotocol设置不起作用的bug;
  • 修正@Reference annotation放在setter方法上即会出错的bug;

嵌入

  • dubbo:嵌入式Jetty
  • dubbox:基于嵌入式tomcat实现dubboHTTP remoting体系(即dubbo-remoting-http

Servlet API的支持

  • dubbo:2.5
  • dubbox:升级到3.1

序列化

  • dubbox:基于Dubbo默认的RPC协议添加新的JSON序列化实现; 支持基于KryoFSTJava高效序列化实现;

Zookeeper注册中心

  • dubboDubbo提供了Zookeeper注册中心,在整个Dubbo的设计里面充分考虑到了各类用户的需求,一些底层的通讯或者是信息存储都提供有大量的不同的存储方案;
  • dubbox:升级ZooKeeper客户端到最新版本;

使用场景

  • dubbo:使用DubboRPC调用方式,服务间仍然会存在API强依赖;
  • dubbox:相对于Dubbo支持了REST风格的原创调用(HTTP +JSON/XML);

---------------简言之(dubbox基于dubbo升级):---------------

  1. 支持REST风格远程调用(HTTP + JSON/XML);
  2. 支持基于KryoFSTJava高效序列化实现;
  3. 支持基于JacksonJSON序列化;
  4. 支持基于嵌入式TomcatHTTP remoting体系;
  5. 升级Spring至3.x;
  6. 升级ZooKeeper客户端;
  7. 支持完全基于Java代码的Dubbo配置;

附录

Dubbo

Dubbox

在这里插入图片描述
在这里插入图片描述

文章分类
后端
文章标签