dubbo升级dubbox

笔者公司部分应用用dubbo暴露服务,随着一些新人加盟,很多人推荐用dubbox。dubbo和dubbox的区别,这里不想赘述,网上有很多资料。

dubbox的官方文档,说对dubbo向下兼容。但本人取dubbox的最新jar,暴露服务,然后用dubbo的客户端调用服务,发现并不兼容。发现是服务端受理请求时,在DecodeableRpcInvocation这个类出现异常,异常出线的行数106行
int argNum = in.readInt();

出现异常的原因报文解析decode异常。这个要了解dubbo协议的报文格式。
in 对象执行read操作,会一个一个偏移读取报文,dubbox提供的服务,当执行该行时,认为报文应该是一个整数,但是确是一个String,解析异常。

然后用beyond工具,做了比较下,比较dubbo和dubbox的源代码,发现dubbo协议序列化Hessian2Input这个类并没有发生变化。

于是大胆修改了dubbox的DecodeableRpcInvocation源代码。先判断dubbo协议版本号,注意是协调版本号,而不是服务版本号。
[img]http://dl2.iteye.com/upload/attachment/0121/1340/4be4c00d-ed31-32d7-85d4-f6b50a8b4525.png[/img]
协议版本号是dubbo控制台,上图打勾的那个version.
如果是2.0.0或者2.8.4 按照dubbox进行解析。这个场合,我认为服务是dubbox暴露出的服务。
其他场合按照dubbo的方式进行解析。
然后打成jar包,上传到公司的git和maven库里。后面dubbo升级到dubbox,就不再从官网上下载jar,而是从公司内部的git或者maven库里获取。

这样升级的场合,就不需要dubbo服务的调用方强制升级,因为是去中心化的,还可以用dubbo的客户端jar调用dubbox的服务。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值