背景
公司之前项目都是使用dubbox,zk注册中心。前段时间新启动一个项目要使用k8s部署,该项目的dubbo服务地址和Docker对外暴露地址不一致,dubbox无法满足自定义的地址配置,因此决定放弃dubbox,使用dubbo代替。
步骤
1,所有子项目都依赖顶级项目,之前duubox也是在顶级项目引入的,所以只需要修改顶级项目的dubbo版本。讨论后决定使用dubbo的2.6.7版本。更换顶级项目的maven的dubbo依赖为2.6.7版本
2,项目build成功,启动会报错,缺少class,
错误1:
java.lang.NoClassDefFoundError: io/netty/channel/EventLoopGroup
错误2:
java.lang.NoClassDefFoundError: org/apache/curator/RetryPolicy
经过日志分析引入配套jar
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.32.Final</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.8.0</version>
</dependency>
一般没有使用其他dubbox带入jar的程序应该已经ok!
3,我们项目中还使用了dubbox引入的http相关的jar,替换为dubbo后需要自行添加依赖
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5</version>
<scope>compile</scope>
</dependency>
注意这二个jar的版本,需配套使用
备注
dubbox和dubbo服务不能互通,原因是对传输的数据的序列化做了不同的处理,解析方式不对应。