2-2 - 没有可用的 Provider(地址找不到)
可能的原因
这时候可能有这么几种情况:
- Provider 服务没启动,或者注册中心(比如 ZooKeeper,Nacos,Consul)宕机了。
- Dubbo 的服务配置有误差,必须保证服务名,组别 (默认是 Dubbo),version 三者都正确。
- 访问的环境有误:通常我们会有开发环境、测试环境、线上生产环境等多套环境。有时候发布的服务到了测试环境,而访问调用时却走了开发环境。
排查和解决步骤
- 访问注册中心的 Ops 系统,查询对应的服务是否有提供者列表;同时检查调用者应用所在服务器的日志(一般每种注册服务的客户端都会有对应的日志记录),查看是否有地址信息的推送/拉取记录。
- 如无,则表明发布者发布服务失败,检查发布者的应用启动是否成功。
- 如有服务,则检查调用者应用所连接的注册中心,确认跟预期的环境要匹配。
- 如上述都没有问题,检查是否配置了路由过滤的规则等。
致谢
这个错误码的 FAQ 页面参考了空冥同学的 《Dubbo 常见错误及解决方法》 。
所引文章通过 CC-BY-4.0 协议赋予了汇编的权利。在此向原作者表示感谢。
最后修改 December 16, 2022: Fix check (#1736) (97972c1)