目录
- 介绍
- 系统模块架构
- 获取安装包
- 数据库配置
- 启动服务器
- 控制台
- 添加注册中心集群信息
- 添加同步任务
- 注意事项
介绍
- NacosSync是一个支持多种注册中心的同步组件,基于Spring boot开发框架,数据层采用Spring Data JPA,遵循了标准的JPA访问规范,支持多种数据源存储,默认使用Hibernate实现,更加方便的支持表的自动创建更新
- 使用了高效的事件异步驱动模型, 支持多种自定义事件,使得同步任务处理的延时控制在3s,8C16G的单机能够支持6K的同步任务
- NacosSync除了单机部署,也提供了高可用的集群部署模式,NacosSync是无状态设计,将任务等状态数据迁移到了数据库,使得集群扩展非常方便
- 抽象出了Sync组件核心接口,通过注解对同步类型进行区分,使得开发者可以很容易的根据自己需求,去扩展不同注册中心,目前已支持的同步类型:
- Nacos数据同步到Nacos
- Zookeeper数据同步到Nacos
- Nacos数据同步到Zookeeper
- Eureka数据同步到Nacos
- Consul数据同步到Nacos
系统模块架构
获取安装包
有两种方式可以获得 NacosSync
的安装包
- 直接下载
NacosSync
的二进制安装包:https://github.com/nacos-group/nacos-sync/releases
- 0.4.8版本下载页面:
https://github.com/nacos-group/nacos-sync/releases/tag/0.4.8
- 从
GitHub
上下载NacosSync
的源码进行构建git clone -b
cd nacosSync/
mvn clean package -U
目标文件的路径:
nacos-sync/nacossync-distribution/target/nacosSync.${version}.zip
数据库配置
#spring.datasource.url=jdbc:mysql://127.0.0.1:3306/nacos_sync?characterEncoding=utf8
spring.datasource.url=jdbc:postgresql://localhost:5432/nacos_sync
spring.datasource.username=nacos_sync
spring.datasource.password=nacos_sync
启动服务器
startup restart
控制台
访问路径: http://127.0.0.1:8083/
添加注册中心集群信息
- 点击左侧导航栏中的“集群配置”按钮,新增加一个集群,先增加一个Zookeeper集群,选择集群类型为ZK。
注意:集群名字可以自定义,但是一旦确认,不能被修改,否则基于此集群增加的任务,在 NacosSync 重启后,将不会恢复成功。
- 同样的步骤,增加NacosSync集群。
- 添加完成后,可以在列表中查询到
添加同步任务
-
增加一个同步任务,从Zookeeper集群同步到Nacos集群,同步的粒度是服务,Zookeeper集群则称为源集群,Nacos集群称为目标集群。
-
添加完成之后,可以在服务同步列表中,查看已添加的同步任务
-
同步完成之后,检查下数据是否同步成功到Nacos集群,可以通过Nacos的控制台进行查询。
-
此刻,数据已经成功从Zookeeper集群同步到了Nacos集群,部署结构如下
-
在升级Provider之前,你需要确保该Provider发布的服务,都已经配置在 NacosSync 中,同步的方式为从Nacos同步到Zookeeper,因为Provider升级连接到Nacos之后,需要确保老的Dubbo Consumer客户端能够在Zookeeper上订阅到该Provider的地址,现在,我们增加一个同步任务
注意:Nacos服务同步到Zookeeper,不需要填写版本号,你在选择源集群的时候,版本号的输入框会自动隐藏掉。
-
在升级的过程中,会有新老版本的客户端同时存在,部署结构如下
-
所有的客户端迁移完成之后,部署结构如下
-
现在,Zookeeper集群,NacosSync集群就可以下线了。
注意事项
- 同步任务添加之后,需要确保下服务是否成功同步到目标集群,可以通过目标集群的控制台进行查询。
- NacosSync 支持高可用集群模式部署,你只需要把数据库配置成同一个即可。
- 如果梳理不清楚订阅和发布的服务,建议可以把服务都做双向同步。
- Dubbo 客户端目前不支持 Nacos 的权重功能,如果你用到了权重功能,需要重新考虑一下方案是否合适。