找不到服务提供者问题"/>
记一次dubbo消费者注册失败找不到服务提供者问题
项目分多套环境,其中一套环境重新部署时,频繁出现消费者找不到服务提供者的错误
Exception :org.apache.dubbo.rpc.RpcException:
No provider available from registry xxx.xxx.xxx.xxx:2181 for service com.xxx.XxxService
on consumer xxxip use dubbo version 2.7.10, please check status of providers(disabled, not registered or in blacklist).
经过多次重启后才有可能恢复正常,而其他环境并没有发现此问题
怀疑点:
1.消费者和服务提供者dubbo版本对不上
2.服务提供者没有注册上服务
3.注册中心有问题
逐一排查:
1.消费者和服务提供者dubbo版本对不上
经排查两个项目的pom依赖,dubbo版本是一致的
2.服务提供者有问题,服务不可用
telnet服务提供者,经检查服务是正常的
具体操作:
telnet ip dubbo服务端口,如telnet 127.0.0.1 20880, ls查看提供的服务,还可以invoke简直执行下调用
3.注册中心的问题
使用zkCli连接zookeeper,查看其上注册的dubbo服务,发现服务正常,但服务下的消费者是空的
zkCli.cmd -server ip查看注册的dubbo服务
ls /dubbo查看dubbo服务消费者
ls /dubbo/接口/consumers
目前问题指向消费者注册的有问题,导致拉取不到服务列表
于是检查消费者应用日志,启动过程未发现异常日志,包括连接zookeeper也没有问题,消费者也没有问题
再复盘下整个过程,消费者注册有问题,但不是每次都有问题,只是高频出现问题,问题还是出在zookeeper上,或许zookeeper版本和项目依赖的包版本冲突?检查下zk连接,发现消费者apollo中配置的zk地址有两种域名…
配置了多个zk地址,难道会导致注册出问题?服务提供的连接的是 zk1域名,消费者连接的是zk1域名+zk2域名,zk2为老域名,后续逐渐弃用了,连接zk2发现还能找到消费者,反倒是zk1上没有消费者。删除掉消费者应用配置中的zk2域名重启后就正常了
有个问题待后续确认:连接多个zk地址,不应该同时注册吗,此问题中消费者的问题现象显示只注册了其中一个zk
更多推荐
记一次dubbo消费者注册失败找不到服务提供者问题
发布评论