【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 的权重功能,如果你用到了权重功能,需要重新考虑一下方案是否合适。