-
Notifications
You must be signed in to change notification settings - Fork 146
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
eureka同步到nacos,暂停同步后,服务依然注册在nacos上,没有注销 #173
Comments
我明白你的意思了,你是说因为Nacos通过事件已经删除了,但是本地未进行移除,导致注册数据会在另外一个集群继续保持,是这个意思吗? |
是的,本质上是多nacos-sync实例部署环境下,nacos-client的注册列表和订阅列表不一致的问题。 |
这个问题实际上不是nacos client的问题,应该是暂停同步时,需要从Eureka本身的实例来进行移除,就可以了。 |
我来修复下这个问题,感谢你发现的问题 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
产生
部署了多个nacos-sync实例,把注册的服务从eureka同步到nacos。然后,在nacos-sync后台对某个服务点击暂停同步。
期望
被同步到nacos的服务在nacos下线。
实际
没有下线,依然注册。
原因
nacos-sync通过nacos-client把从eureka读到的服务注册到nacos,本地维护一个注册列表,nacos-sync要代理列表里的真实服务和nacos建立心跳(实际上是代替真实的服务节点和nacos建立的心跳)。
另外nacos-sync同时也从nacos订阅了这个服务,本地还有另一个订阅列表。暂停同步的逻辑是从订阅列表获取服务,再去注册列表里面解除心跳。
当用户从后台点击暂停同步,实际上nacos-sync是从订阅列表把服务实例取出来,在一个一个的取消注册,断开心跳。
nacos-sync-A注销了注册实例后,nacos把最新变动推送到nacos-sync-B,nacos-sync-B从本地订阅列表把原有的服务实例删除。然后B执行了和A一样的定时任务(暂停同步的任务),这时B本地取不到订阅列表了,也就无法断开和nacos的心跳。nacos收到心跳后又重新把服务给注册上了。即服务在nacos无法下线。
The text was updated successfully, but these errors were encountered: