解决因多网卡导致dubbo注册到ZK的IP错误问题,dubbox(当当,2.8.4)升级至dubbo(Apache,2.7.15)并集成dubbo-admin

1、特别说明

此次升级使用dubbo版本为2.7.15,并且此次升级为平滑升级,新/老包之间可互相调用。

2、详细升级步骤

2.1、pom.xml文件修改

去除原groupId为com.alibaba的相关dubbox依赖,添加以下依赖

       

            org.apache.dubbo

            dubbo

            2.7.15

       

       

            org.apache.dubbo

            dubbo-dependencies-zookeeper

            2.7.15

            pom

       

2.2、dubbo.xml配置文件修改,替换原来dubbo相关标签,改成如下标签(标红位置)

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

    http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd ">

2.3、dubbo.xml配置文件修改,dubbo:application标签中添加以下以下内容(标红位置)

   

       

       

       

       

       

       

   

2.4、dubbo.xml配置文件修改,dubbo:registry标签下面添加以下内容(标红位置)

   

   

注意:这里写的是配置项的key值,注意自己的key是否相同,不要写错了

其实就是把 dubbo:registry 这一行复制一下,把 dubbo:registry 改成dubbo:metadata-report即可

2.5、代码修改

原代码

替换后代码

com.alibaba.dubbo.rpc.protocol.rest.support.ContentType

org.apache.dubbo.rpc.protocol.rest.support.ContentType

com.alibaba.dubbo.container.Main

org.apache.dubbo.container.Main

@com.alibaba.dubbo.config.annotation.Service

@org.apache.dubbo.config.annotation.DubboService

3、可能的报错以及解决方案

3.1、invalid constant type: 18

3.1.1、报错如下:

3.1.2、解决方案:

排除项目中javassist版本为3.12.1.GA版本的包,使用dubbo依赖中自带的3.23.1-GA版本的包即可。3.12.1.GA版本的groupId为javassist,而3.23.1-GA版本的groupId为org.javassist。

 3.2、Address already in use

3.2.1、报错如下:

3.2.2、解决方案:

  1. 按照2.3中步骤进行修改即可,虽然qos端口冲突并不影响服务……
  2. 参考文档:https://dubbo.apache.org/docs/v2.7/user/references/qos/#m-docsv27userreferencesqos

3.3、dubbo-admin中报错:无元数据信息,请升级至Dubbo2.7及以上版本,或者查看application.properties中关于config center的配置

3.3.1、报错如下:

3.3.2、解决方案:

1、按照2.4中步骤进行修改即可

2、参考文档:https://blog.csdn.net/qq_42393720/article/details/122275884

3.4、 多网卡、虚拟网卡等导致注册到ZK的ip地址错误

3.4.1、报错如下

 实际ip地址为:10.0.X.X,但是dubbo获取到的ip地址为虚拟网卡的:192.168.122.1,导致消费者无法获取到正确的提供者,从而导致错误

3.4.2、解决方案

启动脚本增加启动参数即可

-DDUBBO_IP_TO_BIND=服务器实际ip

例如:java -jar -DDUBBO_IP_TO_BIND=1.2.3.4 demo.jar

源码位置:org.apache.dubbo.config.ServiceConfig#findConfigedHosts

docker参考资料:https://github.com/apache/dubbo-samples/tree/master/dubbo-samples-docker

4、注意事项

1、其他jar包冲突自行解决,附录为部分jar版本

jar

当前使用版本

当前最新版本

备注

spring全家桶

5.3.15

5.3.15

mybatis

3.5.6

3.5.9

mybatis-spring

2.0.4

2.0.7

dubbo

2.7.15

3.0.5

dubbo-dependencies-zookeeper

2.7.15

3.0.5

tomcat-embed-logging-juli

8.5.2

9.0.0.M6

tomcat-embed-core

8.5.63

10.1.0-M10

curator-framework

4.2.0

5.2.0

curator-recipes

4.2.0

5.2.0

jackson-databind

2.13.1

2.13.1

jackson-annotations

2.13.1

2.13.1

jackson-core

2.13.1

2.13.1

resteasy-jaxrs

3.0.26.Final

3.15.3.Final

resteasy-client

3.0.26.Final

6.0.0.Final

resteasy-netty

3.0.26.Final

3.15.3.Final

resteasy-jdk-http

3.0.26.Final

6.0.0.Final

resteasy-jackson2-provider

3.0.26.Final

6.0.0.Final

resteasy-jaxb-provider

3.0.26.Final

6.0.0.Final

jdk

1.8

1.8+即可

你可能感兴趣的:(dubbo,java,apache)