【Nacos】 NacosSync 用户手册
【Nacos】 NacosSync 用户手册
Metadata
title: 【Nacos】 NacosSync 用户手册
date: 2023-01-04 15:32
tags:
  - 行动阶段/完成
  - 主题场景/组件
  - 笔记空间/KnowladgeSpace/ProgramSpace/ModuleSpace
  - 细化主题/Module/Nacos/运维手册
categories:
  - Nacos
keywords:
  - Nacos
description: 【Nacos】 NacosSync 用户手册;NacosSync 是一个支持多种注册中心的同步组件, 基于 Spring boot 开发框架, 数据层采用 Spring Data JPA, 遵循了标准的 JPA 访问规范, 支持多种数据源存储, 默认使用 Hibernate 实现, 更加方便的支持表的自动创建更新
【Nacos】 NacosSync 用户手册
- 理解 NacosSync 组件 
- 启动 NacosSync 服务 
- 通过一个简单的例子,演示如何将注册到 Zookeeper 的 Dubbo 客户端迁移到 Nacos。 
- NacosSync 是一个支持多种注册中心的同步组件, 基于 Spring boot 开发框架, 数据层采用 Spring Data JPA, 遵循了标准的 JPA 访问规范, 支持多种数据源存储, 默认使用 Hibernate 实现, 更加方便的支持表的自动创建更新 
- 使用了高效的事件异步驱动模型, 支持多种自定义事件, 使得同步任务处理的延时控制在 3s,8C16G 的单机能够支持 6K 的同步任务 
- NacosSync 除了单机部署, 也提供了高可用的集群部署模式, NacosSync 是无状态设计, 将任务等状态数据迁移到了数据库, 使得集群扩展非常方便 
- 抽象出了 Sync 组件核心接口, 通过注解对同步类型进行区分, 使得开发者可以很容易的根据自己需求, 去扩展不同注册中心, 目前已支持的同步类型: - Nacos 数据同步到 Nacos
- Zookeeper 数据同步到 Nacos
- Nacos 数据同步到 Zookeeper
- Eureka 数据同步到 Nacos
- Consul 数据同步到 Nacos
 
系统模块架构:

控制台
提供了精简 Web 操作控制台, 支持国际化:
同步任务管理页面

注册中心管理页面

使用场景:
- 多个网络互通的 Region 之间服务共享, 打破 Region 之间的服务调用限制

- 双向同步功能, 支持 Dubbo+Zookeeper 服务平滑迁移到 Dubbo+Nacos, 享受 Nacos 更加优质的服务

准备工作
启动服务之前,你需要安装下面的服务:
- 64bit OS: Linux/Unix/Mac/Windows supported, Linux/Unix/Mac recommended.
- 64bit JDK 1.8+: downloads, JAVA_HOME settings.
- Maven 3.2.x+: downloads, settings.
- MySql 5.6.+
获取安装包
有两种方式可以获得 NacosSync 的安装包:
- 直接下载 NacosSync 的二进制安装包:nacosSync.${version}.zip
- 从 GitHub 上下载 NacosSync 的源码进行构建
Package:
cd nacosSync/
mvn clean package -U
目标文件的路径:
nacos-sync/nacossync-distribution/target/nacosSync.${version}.zip
解压安装包之后, 工程的文件目录结构:
nacosSync
├── LICENSE
├── NOTICE
├── bin
│   ├── nacosSync.sql
│   ├── shutdown.sh
│   └── startup.sh
├── conf
│   ├── application.properties
│   └── logback-spring.xml
├── logs
└── nacosSync-server.${version}.jar
初始化数据库
系统默认配置的数据库是 Mysql,也能支持其他的关系型数据库。 1. 建库,缺省的数据库名字为 “nacos_Sync”。 2. 数据库表不需要单独创建,默认使用了 hibernate 的自动建表功能。 3. 如果你的环境不支持自动建表,可以使用系统自带的 sql 脚本建表,脚本放在 bin 目录下。
数据库配置
数据库的配置文件放在conf/application.properties中:
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/nacos_sync?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
启动服务器
$ nacosSync/bin:
sh startup.sh  restart
检查系统状态
- 检查系统日志
日志的路径在nacosSync/logs/nacosSync.log,检查是否有异常信息。
- 检查系统端口
缺省的系统端口是8081,你可以自己定义在application.properties中。
$netstat -ano|grep 8081
tcp        0      0 0.0.0.0:8081                0.0.0.0:*                   LISTEN      off (0.00/0/0)
控制台
访问路径:
http://127.0.0.1:8081/#/serviceSync

如果检查没有问题,NacosSync 已经正常启动了,NacosSync 的部署结构:

开始迁移
迁移信息
Dubbo 服务的部署信息:

迁移的服务:
| Service Name | Version | Group Name | 
|---|---|---|
| com.alibaba.nacos.api.DemoService | 1.0.0 | zk | 
添加注册中心集群信息
- 点击左侧导航栏中的 “集群配置” 按钮,新增加一个集群,先增加一个 Zookeeper 集群,选择集群类型为 ZK。

注意:集群名字可以自定义,但是一旦确认,不能被修改,否则基于此集群增加的任务,在 NacosSync 重启后,将不会恢复成功。
- 同样的步骤,增加 NacosSync 集群。

- 添加完成后,可以在列表中查询到:

添加同步任务
- 增加一个同步任务,从 Zookeeper 集群同步到 Nacos 集群,同步的粒度是服务,Zookeeper 集群则称为源集群,Nacos 集群称为目标集群。

添加完成之后,可以在服务同步列表中,查看已添加的同步任务:

- 同步完成之后,检查下数据是否同步成功到 Nacos 集群,可以通过 Nacos 的控制台进行查询。

- 此刻,数据已经成功从 Zookeeper 集群同步到了 Nacos 集群,部署结构如下:

Dubbo 客户端连接到 Nacos 注册中心
Dubbo Consumer 客户端迁移
Dubbo 已经支持 Nacos 注册中心,支持的版本为 2.5+,需要增加一个 Nacos 注册中心的 Dubbo 扩展插件依赖:
<dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>dubbo-registry-nacos</artifactId>
            <version>0.0.2</version>
</dependency>
增加 Nacos 客户端的依赖:
<dependency>
        <groupId>com.alibaba.nacos</groupId>
        <artifactId>nacos-client</artifactId>
        <version>0.6.2</version>
</dependency>
配置 Dubbo Consumer 的 Dubbo 配置文件consumer.yaml,让客户端能够找到 Nacos 集群。
spring:
 application:
name: dubbo-consumer
demo:
 service:
 version: 1.0.0
 group: zk
dubbo:
 registry:
 address: nacos://127.0.0.1:8848
不需要修改代码,配置更新完毕之后,你就可以重启你的应用,使之生效了。
Consumer 发布完成之后,目前的部署结构如下:

Dubbo Provider 迁移
在升级 Provider 之前,你需要确保该 Provider 发布的服务,都已经配置在 NacosSync 中,同步的方式为从 Nacos 同步到 Zookeeper,因为 Provider 升级连接到 Nacos 之后,需要确保老的 Dubbo Consumer 客户端能够在 Zookeeper 上订阅到该 Provider 的地址,现在,我们增加一个同步任务:


注意:Nacos 服务同步到 Zookeeper,不需要填写版本号,你在选择源集群的时候,版本号的输入框会自动隐藏掉。
同步任务完成后,你就可以升级 Provider 了,升级 Provider 的方法,参考升级 Consumer 的步骤。
新的部署结构
- 在升级的过程中,会有新老版本的客户端同时存在,部署结构如下:

- 所有的客户端迁移完成之后,部署结构如下:

现在,Zookeeper 集群,NacosSync 集群就可以下线了。
注意事项
- 同步任务添加之后,需要确保下服务是否成功同步到目标集群,可以通过目标集群的控制台进行查询。
- NacosSync 支持高可用集群模式部署,你只需要把数据库配置成同一个即可。
- 如果梳理不清楚订阅和发布的服务,建议可以把服务都做双向同步。
- Dubbo 客户端目前不支持 Nacos 的权重功能,如果你用到了权重功能,需要重新考虑一下方案是否合适。


