Dubbox和Dubbo哪个好?实际上,Dubbox和Dubbo都是不错的服务框架,简单地说,Dubbox和Dubbo是Dubbo的升级版,两者根本没有什么不同。这么说,似乎Dubbox更好些,为什么?这毕竟是对Dubbo不能提供的扩展的升级版。下面,我们就来详细分析这两种不同之处!
1.简介
Dubbo源自阿里的淘宝网开放源码的分布式服务体系结构,致力于提供高性能、透明的RPC远程服务调用方案,是SOA服务治理方案的核心框架。在淘宝网开放源码后,得到了许多扩展和支持(比较著名的是:当当网dubbox扩展版、京东的jd-hydra等等)
Dubbox是RPC(RemoteProcedureCallProtocol)远程调用框架,通过dangdang对阿里的Dubbo进行了升级,并将其作为Dubbo的增强版本,基本架构没有改变,更新Spring2.x到spring3.x,支持调用调试restful风格的方法,使序列化方法丰富,提高序列化的性能。Dubbox(DubboeXtensions)是当当Fork基于dubbo2.x的升级版,它能兼容原有的dubbox。zookeeper和spring版本被升级,并且支持restfull风格的远程调用。
2.现状
Dubbo起源于阿里的淘宝网开放源码的分布式服务体系结构,据说淘宝网dubbo和HSF之间存在分歧,导致dubbo团队解散。Dubbo当前停止了更新。
Dubbox(DubboeXtensions)是当当Fork基于dubbo2.x的升级版,它能兼容原有的dubbox。zookeeper和spring版本被升级,并且支持restfull风格的远程调用。Dubbox一直在不断改进(升级更新),现在仍然在更新。
3.对比服务框架。
Dubbox名称的含义扩展了Dubb,下面这些特性被扩展,它也是选择Dubbox的一个重要方面。
REST风格的远程调用(HTTP+JSON/XML);
在Kryo和FST的基础上支持Java有效的序列化实现;
在Jackson基础上支持JSON序列化;
在嵌入式Tomcat基础上支持HTTP协议;
将Spring升级到3.x;
ZooKeeper客户机;
Dubbo配置是完全基于Java代码的。
4.RPCvsREST。
ServiceSubscription接口依赖于调用方:我们为每一个微服务定义自己的service抽象接口,而持续集成发布到私有仓库中,调用方应用在微服务提供的抽象接口上有很强的依赖性。所以不管开发.测试.集成环境都需要严格的管理版本依赖,避免服务方和调用方不一致而导致应用无法成功编译等一系列问题,而且,通常一个依赖于许多服务的较高的应用程序,直接影响本地开发的环境需求。在每日更新大量代码和install后,您可以进行后续开发。如果没有严格的版本管理系统,或者没有开发一些自动化工具,这种依赖性对开发团队来说可能是一个噩梦。相对于RPC来说,REST界面更加轻量级,服务提供者和调用者的依赖仅仅是一纸合同,没有代码级的强依赖性,当然REST接口也有缺点,因为接口定义太轻,在定义文档与实际实现不一致时,很容易导致服务集成问题,但这个问题可以很好地解决,将swagger集成到每一个服务中,只需将每个服务的代码与文档集成起来。因此,与RPC方式相比,REST方式的服务依赖更具灵活性。
对于平台很敏感,很难进行简单重用:通常我们在提供外部服务的时候,都会采用REST的方式提供服务,这样就能实现跨平台的特性,任何语言的调用者都可以根据接口定义实现。因此,当我们要在Dubbo中提供REST接口时,必须实现一个层代理,以便将RPC接口转换为REST接口以便对外发布。如果我们每一个服务本身都以一个REST接口的方式存在,那么当外部服务需要在API网关中配置映射关系和权限控制来实现服务的重用。
Dubbo虽然实现了服务治理的基础,但要完成完整的微服务架构,在每个环节都需要进行扩展和改进,以确保群集的健康,从而减少开发、测试和管理中的各个环节带来的压力,这就使每一个环节的人真正集中精力在业务逻辑上。而且SpringCloud继承了SpringSource整合所有东西的风格,在一个标准的姿态下,将一些成熟的微服务体系结构与框架结合起来,并且继承了SpringBoot简单配置.快速开发.轻松部署的特性,使本来复杂的体系结构工作相对容易些。因此,如果要选择Dubbo,请确保在每一个环节都做好准备,否则当服务数量增加时,整个团队将会疲于奔命,以应对由于不同结构上的缺陷而造成的困难。而且,如果选择了SpringCloud,那么相对于每一个环节已经有相应的组件支持,也许并不一定能满足您所有的需要,但它的活跃社区和快速迭代进程将成为您可以依赖的强大后盾。
Dubbox:在Dubbo支持REST方面,估计是许多公司选择Dubbox的一个重要原因,但是如果以Dubbo的RPC方式调用Dubbox,服务之间仍会存在API强依赖,各有利弊。
读了这篇文章,大家觉得,Dubbox和Dubbo哪个更好?怎么了我相信每个人心里都有不同的答案,不管答案是什么,顺手用到自己最重要。