天天看點

dubbo替換duboox 過程記錄

背景

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