apache / dubbo

The java implementation of Apache Dubbo. An RPC and microservice framework.
https://dubbo.apache.org/
Apache License 2.0
40.4k stars 26.42k forks source link

provider端发布过程中consumer端调用报错问题 #12429

Closed linjianming02 closed 6 months ago

linjianming02 commented 1 year ago

问题描述:目前我们公司所有的服务都是同一套ZK。上面的节点比较多。在从2.7.9升级dubbo3.1.8后(目前因为没有全量升级,所以采取的是双注册双订阅方式),基本发布provider端服务的时候consumer端都会产生调用不存在的服务报错。(怀疑的下线没有及时通知,或者是ZK集群压力太大,没来得及通知consumer,并且我们下线采取kill - 3 等待10S超时会强行关闭,k8s容器,每次发布会更换新的ip地址)。报错如下: org.apache.dubbo.rpc.RpcException: Directory of type RegistryDirectory already destroyed for service com.xxx.voucher.api.accountingfinancebill.IAccountingFinanceBillApi:1.0.0 from registry zookeeper://register.zookeeper.service.consul:2181/org.apache.dubbo.registry.RegistryService?application=xxx-consumer&backup=register.zookeeper.service.consul:2181&dubbo=2.0.2&file.cache=false&group=dubbo_prodawsbjgray&init.timeout=60000&logger=slf4j&pid=1&qos.enable=true&release=3.1.8&root-path=/dubbo_gray_services&rootPath=/dubbo_gray_services&timestamp=1684984163244

请问该如何处理呢?

songxiaosheng commented 1 year ago

通知延迟 在延迟时间内仍旧存在RPC调用,这个时候如果消费者如果销毁了Invokder对象就会导致一些调用异常异常,你们这个是注册中心销毁延迟了,尝试配置调大这个参数试试dubbo.service.shutdown.wait

songxiaosheng commented 1 year ago

另外看下你们监控注册中心通知延迟有多大

AlbumenJ commented 6 months ago

No news is good news. Please feel free to create a new issue if you have any question.