nacos-group / nacos-sync

Service Sync component
Apache License 2.0
292 stars 144 forks source link

增加nacos2集群之间,cosul、eureka、zookeeper与nacos2.x集群之间的同步功能 #339

Open zrlw opened 10 months ago

zrlw commented 10 months ago

dubbo服务端采用应用级别注册时(dubbo.registry.register-mode设为instance),nacos-sync不仅需要同步服务实例,还需要同步dubbo服务实例的元数据:比如接口名到应用名的映射关系,dubbo.tag路由标签,dubbo消费端通过这些元数据信息确定访问哪个服务实例。 相关问题: https://github.com/nacos-group/nacos-sync/issues/307 https://github.com/alibaba/nacos/issues/5863 为实现上述功能,需要对nacos-sync做修订,增加dubbo临时实例及应用实例元数据在nacos2注册中心之间批量同步功能,修改内容已提交PR到develop分支,其中元数据自动同步功能需要dubbo服务端设置dubbo.application.metadata-type为remote,将各个服务实例元数据存储在元数据中心(默认为local存储在本地)。 此PR已在下列测试场景下完成实例及元数据集群间成功同步。

  1. 两套nacos2.3.0-BETA注册中心集群(包括元数据中心);
  2. 两套dubbo3.2.7测试服务端;
  3. 两套dubbo3.2.7测试消费端。

@paderlol 已经有几个月没有看到你的回帖了,还在nacos-sync么?

zrlw commented 10 months ago

https://github.com/nacos-group/nacos-sync/pull/336

zrlw commented 10 months ago

@binbin0325

zrlw commented 10 months ago

该pr只在nacos2集群之间实现了dubbo服务实例的revision及接口映射关系元数据同步(仅当metadata-type=remote时)。 在其他场景下同步应用级别注册实例,还需要手工在目标集群创建应用实例需要的元数据(主要是接口名与应用名之间的映射关系)

更新: 增加了metadata-type=local的接口映射关系元数据同步(通过查询源集群元数据中心获取应用名对应的接口名)

zrlw commented 10 months ago

如果同步metadata-type=local的dubbo应用级别服务实例,不想手工在目标集群维护mapping映射关系元数据,可以让所有consumer端在@DubboReference注解上添加providedBy属性指定需要调用的应用服务名(dubbo provider配置的dubbo.application.name属性),各个consumer直接感知接口名和应用名的映射关系,这样目标集群元数据中心就不再需要配置映射关系元数据了。

zrlw commented 10 months ago

PR增加nacos2集群之间dubbo映射元数据的同步功能。