Nacos sync的实现样例
项目地址
软件下载:https://github.com/nacos-group/nacos-sync/releases
官方文档:https://nacos.io/docs/v2/ecology/use-nacos-sync/#_top
介绍
NacosSync是一个支持多种注册中心的同步组件,基于Spring boot开发框架,数据层采用Spring Data JPA,遵循了标准的JPA访问规范,支持多种数据源存储,默认使用Hibernate实现,更加方便的支持表的自动创建更新 。使用了高效的事件异步驱动模型,支持多种自定义事件,使得同步任务处理的延时控制在3s,8C16G的单机能够支持6K的同步任务
NacosSync除了单机部署,也提供了高可用的集群部署模式,NacosSync是无状态设计,将任务等状态数据迁移到了数据库,使得集群扩展非常方便 。抽象出了Sync组件核心接口,通过注解对同步类型进行区分,使得开发者可以很容易的根据自己需求去扩展不同注册中心,目前已支持的同步类型
Nacos数据同步到Nacos
Zookeeper数据同步到Nacos
Nacos数据同步到Zookeeper
Eureka数据同步到Nacos
Consul数据同步到Nacos
系统模块架构
控制台
同步任务管理页面
注册中心管理页面
使用场景
部署样例
安装基础环境
操作系统支持:64位的Linux/Unix/Mac/Windows supported/Mac recommended
JDK:64bit JDK 1.8+
Maven:3.2.x+
MySQL:5.6.+
下载二级制包:
https://github.com/nacos-group/nacos-sync/releases/download/0.5.0/nacos-sync-0.5.0.tar.gz
解压
$ tar -C ./ -xf nacos-sync-0.5.0.tar.gz
$ tree nacos-sync
初始化数据库
系统默认配置的数据库是mysql,也支持其他的关系型数据库。缺省的数据库名字为“nacos_Sync”,数据库表不需要单独创建,默认使用了hibernate的自动建表功能,如果环境不支持自动建表,可以使用系统自带的sql脚本建表,脚本放在bin目录下,下面给出了建库建表命令
mysql> create database nacos_sync default character set utf8mb4 collate utf8mb4_general_ci;
mysql> use nacos_sync;
mysql> source /home/user/nacos-sync/bin/nacosSync.sql;
配置数据库
$ vim nacos-sync/conf/application.properties
启动服务
$ nacos-sync/bin/startup.sh start
$ ss -tnl | grep 8083
如果报错可以查看nacos-sync/logs/nacos-sync-start.out的日志文件排错
控制台访问
http://10.8.2.22:8083/#/serviceSync
同步配置
打开控制台的“集群配置”–>“新增集群”出现下面界面,填写集群名字,集群类型如NACOS集群,填写集群地址,如果是k8s部署的集群,填写svc暴露的nodePort即可
注意:集群名字可以自定义,但是一旦确认便不能被修改,否则基于此集群增加的任务,在NacosSync重启后将不会恢复成功
无论是单向复制还是双向同步都需要配置两个集群的配置信息
创建双向同步任务
单向复制如A集群–>B集群,只需要配置单向同步任务即可,同样的逻辑和道理,如果实现双向同步,那么就要配置A集群–>B集群和B集群–>A集群的双向同步任务
打开控制台页面的“同步任务”–>“新增任务”,根据实际情况进行如图配置
至此异地双活复制同步实现的简单过程已经完成
注意事项
同步任务添加之后,需要确保下服务是否成功同步到目标集群,可以通过目标集群的控制台进行查询
NacosSync支持高可用集群模式部署,只需要把数据库配置成同一个即可
如果梳理不清楚订阅和发布的服务,建议可以把服务都做双向同步
Dubbo客户端目前不支持Nacos的权重功能,如果用到了权重功能,需要重新考虑一下方案是否合适