【中】No provider available from registry RegistryDirectory


  • Dubbo 3.2.9
  • Nacos 2.1.0

最近在做配置文件升级,服务比较多,之前的Dubbo配置各个服务写的比较乱,有的用Nacos上的 data-id,有的又是在自己的服务引入配置

遂准备统一了,全部都用Nacos上的配置,同时修改了Dubbo服务名

dubbo.application.name=${spring.application.name}

发到线上的时候,线上崩了,部分服务出现如下错误

No provider available from registry RegistryDirectory(registry: xxxxxxxxxxx:8848)-Directory(invokers: 0[], validInvokers: 0[], invokersToReconnect: 0[]) for service com.xdx97.xxxx.api.xxxxx:1.0.0 on consumer 127.0.0.1 use dubbo version 3.2.9, please check status of providers(disabled, not registered or in blacklist).

注: IP和服务名做了隐藏处理


问题表象


  1. 部分服务出现上述的 No provider available
  2. 这次我改动的是4个服务,重启了它们,但没有重启消费者,它们的消费者很多,只有部分消费者报错,部分消费者是正常的
  3. 出问题的消费者,只需要重启一下就又可以了

问题排查


半年来所有服务都没有报过这个错,猜到是因为修改了 dubbo.application.name 的原因,但也不能完全确认,测试环境没复现问题,也不好拿线上测试


下面这个日志可以看到对应的服务可用数,当生产者变动的时候也会推送到消费者

[DUBBO] Received invokers changed event from registry. Registry type and com.xdx97.api.DemoApi

其中一个异常的消费者日志如下

在这里插入图片描述


我们观察到每个异常的服务,都会有大量可用数量为0的日志,且最后一条都是可用为 0


排查文档

地址找不到异常

Dubbo3.1.2经常找不到服务的提供者


问题原因


后来我们在Nacos提了工单,Nacos的开发拉了我们和Dubbo的开发组了一个群,经他们排查这是当前这个Dubbo版本的一个Bug

原因也确实是因为修改了 dubbo.application.name


在修复之前,临时解决办法,开启Nacos的推空保护

推空保护

MSE注册配置中心高可用最佳实践

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐