背景
公司之前項目都是使用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服務不能互通,原因是對傳輸的資料的序列化做了不同的處理,解析方式不對應。