zrlw commented on issue #13298: URL: https://github.com/apache/dubbo/issues/13298#issuecomment-1798536030
dubbo3服务采用应用级别注册到nacos2时,实例信息会存放在注册中心的register库,dubbo3服务的各个接口名与应用名之间的映射关系会存到元数据中心的config_info表(dataId字段存接口名,groupid字段存固定值mapping,content字段存应用名,如果映射到多个应用,各个应用名之间逗号分割)。 nacos-sync同步数据到nacos目标集群,本质是将上述数据从源集群的两个表取出放入目标集群,现在nacos提供的从config_info取数据的接口方法只有dataid和groupid条件,没有content参数,只能按dubbo3的接口名和mapping去获取。 1. 如果把应用名和所属的各个接口存到config_info表,dataid字段存应用名,groupid字段存固定值appmapping(和mapping区别开来的目的是防止dubbo应用名命名时和某个接口名重名,那样就会取错记录了),content字段存该应用的各个接口; 2. nacos-sync通过nacos提供的config_info查询接口,把dataid条件设为要同步的应用名、groupid设为appmapping就能从获取config_info对应记录的content字段里的所有接口名; 3. nacos-sync将查到的接口名作为dataid、groupid设为mapping、content设为应用名,循环调用nacos元数据发布接口,将这些接口与应用名的映射关系再存入目标集群的config_info表; 4. 目标集群的dubbo消费者从nacos目标集群元数据中心的config_info表拉取这些映射关系,确定rpc调用接口对应的应用名,再从nacos目标集群的服务实例register库拉取应用服务实例的ip和端口,然后建立长连接; 5. 如果dubbo3服务的metadata-type采用默认local存在本地,目标集群的dubbo消费者再通过建立的长连接直接拉取各个dubbo3服务实例的元数据(比如dubbo.tag); 6. 如果dubbo3服务的metadata-type采用remote存储在元数据中心,那么dubbo消费者再将应用名作为dataid,服务实例的revision作为groupid条件,调用nacos目标集群的元数据查询接口,从config_info表拉取对应记录的content字段(存dubbo3服务实例的元数据)。 -- 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]
