[apache/dubbo]用nacos作为注册中心,consumer报no provider

2024-05-24 97 views
1
Environment
  • Dubbo version: 2.7.18
  • Operating System version: Ubuntu 20.04.5 LTS
  • Java version: 1.8.0_202
  1. 配置dubboreference
  2. 启动服务
  3. 调用服务,报no provider

Pls. provide [GitHub address] to reproduce this issue.

服务调用成功 调用异常,报no provider
  1. 服务启动时,服务注册consumer后 , dubbo收到nacos下发的当前服务的consumer信息变更事件,dubbo会用empty协议的本地provider变更服务provider注册信息
  2. 如果此事件处理在正常实例下发事件处理之后,此时变更实例数为1,导致注册中的forbidden设置为true;则后续调用会产生no provider异常。 image

image

Just put your stack trace here!

回答

8

如果注册中心中没有地址,那 forbidden 就是预期的

0

注册中心是有注册地址的。问题在nacos下发了consumer本地的注册信息,如果该消息处理有延迟,则会覆盖正常的注册信息

5

nacos下发了consumer本地的注册信息

这个是什么

4

同样的版本,同样的问题,而且provider重启后服务会正常,这个后来是怎么解决的?

5

@AlbumenJ , 这个问题和已close问题https://github.com/apache/dubbo/issues/5885是一样的; 当应用启动的时候,没有走subscribeEventListener中的订阅逻辑,而是直接走了doSubscribe image