本文介绍服务提供者关闭后还在被其他应用调用的解决方案。
问题现象
其他应用调用依赖的服务提供者时报错,错误信息显示仍然在调用一个已经下线或停止的服务提供者的IP地址。
可能原因
- 服务提供者并未彻底关闭,进程仍然存在并发送心跳维持连接,导致Nacos未摘除服务提供者。或有额外的应用进程在发送心跳维持连接,导致Nacos未摘除服务提供者。
- 关闭服务提供者后,该服务已经没有可用的提供者,触发了推空保护。
- 网络问题或订阅者应用有问题,导致Nacos-Client未获取到最新的服务提供者地址。
- Nacos-Client已经获取到最新的服务提供者地址,但应用未使用(如有路由规则、权重规则、框架缓存等)。
解决方案
在MSE控制台查看该服务提供者是否还存在,具体操作方式参考查看服务详情。
- 如果控制台上仍然能看到该服务提供者IP,则解决方案请参考控制台还能查到不存在的服务提供者IP链接怎么办。
- 如果控制台上已经看不到该服务提供者IP,且服务下已经没有服务提供者或所有服务提供者均为下线状态,那么应该是触发了推空保护。更多信息,请参见推空保护。
- 如果控制台上已经看不到该服务提供者IP,但服务下仍有其他非下线状态的服务提供者,则解决方案可以参考应用服务调用了非预期的服务提供者。
同时可以尝试接入微服务治理的无损发布功能,解决因框架使用等问题导致非预期的流量损失。
文档内容是否对您有帮助?