Dubbo消费者无法找到提供者问题分析和处理

一、zookeeper 注册地址和端口 需要能telnet通

例如:zookeeper://80.63.21.29:2191

二、提供者的接口是否指定了版本号

三、dubbo组是否正确

四、提供者dubbo服务的地址是否能正确访问通(重点)

1、命令输入: ./zkCli.sh -server 127.0.0.1:2191  进入zookeeper中心

2、再输入:ls命令  查看对应的组和接口 

3、找到对应接口的/providers 和 /consumers

4、查看 provides 的地址和端口,例如:

dubbo://192.168.0.104:20113/

5、在消费者调用服务器中,telnet 该地址和端口

      如果相通则为其他原因,检查一、二、三项

      不相通可能是因为使用了docker部署服务,或者是因为类似于docker的方式。所以zookeeper中心得到的是内网地址,这样消费者访问提供者时,无法访问该内网地址而导致的提供者不存在问题。

6、解决方式问题

        (1). docker 解决方式:

                在docker-compose.yml 的 environment 下 配置这两个变量 (必须是大写!)               

        environment:
            - DUBBO_IP_TO_REGISTRY=ip
            - DUBBO_PORT_TO_REGISTRY=port

        例如:
        environment:
            - DUBBO_IP_TO_REGISTRY=118.21.130.9
            - DUBBO_PORT_TO_REGISTRY=20113

        说明:
        DUBBO_IP_TO_REGISTRY=<发现IP地址> (是发现地址,对应dubbo.protocol.host主要是填docker宿主机的IP,可用让其他服务器能访问接口)
        DUBBO_PORT_TO_REGISTRY=<发现端口> (是发现端口,对应dubbo.protocol.port)

        如果docker的compose.yml内有手动分配network,则需要加上

            DUBBO_IP_TO_BIND=<容器内IP> (表示绑定容器发现IP)
            DUBBO_PORT_TO_BIND=<dubbo.protocol的端口> (表示用于绑定容器发现端口)

docker容器端口映射时,最好是保持一致

         (2). jvm方式,直接 java 启动命令里加就行:

java -DDUBBO_IP_TO_REGISTRY="118.21.130.9" -DDUBBO_PORT_TO_REGISTRY="20113" -jar demo.jar

       

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Garc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值