请问一下Dubbo 3.1.5 + Nacos 2.2.0,在Nacos上操作下线,为什么Dubbo服务还是可以正常调用?2个节点,下线了其中一个节点,被下线的服务,还在不停的接受请求。
可能是因为Dubbo的负载均衡策略不同于Nacos的。在Nacos上操作下线后,需要等待一段时间才能生效,这段时间内Dubbo服务仍然可以正常调用。
Dubbo 是一个分布式服务框架,Nacos 是一个服务注册与发现中心,Dubbo 可以通过 Nacos 实现服务注册和发现。在 Dubbo 和 Nacos 集成的过程中,可能会遇到服务下线后 Dubbo 服务仍然可以正常调用的问题。这个问题通常是由以下原因导致:
1、Dubbo 缓存机制:Dubbo 有自己的缓存机制,会缓存服务列表和调用结果等信息。如果服务下线时 Dubbo 的缓存没有及时更新,就可能导致服务仍然可以被调用。可以尝试清除 Dubbo 的缓存,或者重启 Dubbo 服务,以确保 Dubbo 缓存中的信息与 Nacos 上的服务列表一致。
2、Nacos 配置问题:Nacos 中服务的下线是通过删除对应的服务实例来实现的。如果 Nacos 配置不正确,比如服务实例没有被正确删除,或者删除的服务实例并没有被 Dubbo 服务发现,就可能导致服务仍然可以被调用。可以检查 Nacos 配置是否正确,或者手动删除 Nacos 中的服务实例,以确保服务被正确下线。
3、Dubbo 配置问题:Dubbo 与 Nacos 集成需要进行相应的配置,比如注册中心的地址、服务的版本号、协议等。如果 Dubbo 配置不正确,可能会导致服务注册或者发现失败,从而无法正确处理服务下线的情况。可以检查 Dubbo 配置是否正确,或者重新配置 Dubbo 与 Nacos 的集成。
总之,在遇到 Dubbo 服务下线后仍然可以正常调用的问题时,需要仔细排查 Dubbo 和 Nacos 的配置、缓存、日志等信息,确定问题的根源,并采取相应的措施解决问题。
1.首先查看是不是部署了多台服务提供者,如果是停掉其中一台,这么做以后,发现还是有问题
2.再次排查,通过dubbo admin管理端,查询了注册到zookepper里面的服务有两个版本,但是服务提供者只要1台呀,那另一台是哪里来的呢,后来运维同事说,昨天他手动启动了一台,所以出现两个相关名称的dubbo服务,这也就是解释了,为什么服务调用1次正常,下一次就不正常了,这里是请求了不同的dubbo服务产生的结果。
二:解决办法:
通过dubbo admin管理端删除掉手动启动的那台服务,这也服务调用就正常了。
Dubbo有缓存机制,有本地缓存,如果之前已经缓存了服务的地址,即使服务已经在Nacos下线,Dubbo客户端仍然会调用缓存的地址进行请求。可以尝试清除Dubbo的本地缓存。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。