zrlw opened a new issue, #13298: URL: https://github.com/apache/dubbo/issues/13298
## Describe the feature 目前dubbo3服务注册到注册中心之后,还会发布映射关系到注册中心的元数据中心,但是只发部了“接口名 -》 应用名”的单向映射。 nacos-sync这种同步服务实例到目标集群的工具,不仅要同步实例,而且要同步这种映射关系的元数据。 问题是当dubbo服务注册方式为应用级别实例、而且metadata-type为默认local时,nacos-sync不知道要从注册中心元数据中心拉取哪些元数据,因为nacos-sync只知道要同步的应用服务名,并不能知道元数据里哪些dataId对应这个应用服务名,即使通过http方式遍历获取所有group=mapping的映射记录,也不能确定这些mapping都是有效的,因为实例注销之后这些元数据还会长期保留(比如kill -9干掉了dubbo服务,注册中心会自动注销实例,但对应的元数据还留在了元数据中心)。 这个问题有个简单的解决办法:dubbo注册应用实例成功后再发布map到元数据中心时,多发布一个反向的映射关系,dataId为应用名,group为mapping,内容为本次发布的其他mapping的dataId集合,比如"com.xxx.InterfaceA, com.xxx.InterfaceB,com.xxx.InterfaceC" 这个mapping对dubbo自己没有用,但对注册实例同步工具是巨大的支持,补齐了中间缺少的一环: 获取服务实例列表 -》 获取应用Instance名(应用名) -》根据应用名查询元数据中心获取各个Interface名称 -》从元数据中心拉取各个Interface的元数据 -》同步元数据到目标集群 、 同步服务实例到目标集群 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
