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 是代替 dubbo.registry.address
DUBBO_PORT_TO_REGISTRY 是代替 dubbo.protocol.port
(2). jvm方式,直接 java 启动命令里加就行:
java -DDUBBO_IP_TO_REGISTRY="118.21.130.9" -DDUBBO_PORT_TO_REGISTRY="20113" -jar demo.jar