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操作控制台,支持国际化:

同步任务管理页面 ![](https://img.alicdn.com/tfs/TB1eSYyJ5LaK1RjSZFxXXamPFXa-2866-1064.png)### 注册中心管理页面## ![image.png](https://img.alicdn.com/tfs/TB1e_rdJ7voK1RjSZFNXXcxMVXa-2876-1124.png)## 使用场景: * 多个网络互通的Region之间服务共享,打破Region之间的服务调用限制

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

使用流程

准备工作

启动服务之前,你需要安装下面的服务:

获取安装包

有两种方式可以获得 NacosSync 的安装包:

  • 直接下载 NacosSync 的二进制安装包:[nacosSync.{version}.zip](https://github.com/nacos-group/nacos-sync/releases "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

检查系统状态

1.检查系统日志

日志的路径在nacosSync/logs/nacosSync.log,检查是否有异常信息。

2.检查系统端口

缺省的系统端口是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

添加注册中心集群信息

1.点击左侧导航栏中的"集群配置"按钮,新增加一个集群,先增加一个Zookeeper集群,选择集群类型为ZK。

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

2.同样的步骤,增加NacosSync集群。

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

添加同步任务

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

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

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

3.此刻,数据已经成功从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 的权重功能,如果你用到了权重功能,需要重新考虑一下方案是否合适。

原文出自:Nacos官网

相关推荐
Sam-August9 小时前
【分布式架构实战】Spring Cloud 与 Dubbo 深度对比:从架构到实战,谁才是微服务的王者?
java·spring cloud·dubbo
麦兜*16 小时前
MongoDB 6.0 新特性解读:时间序列集合与加密查询
数据库·spring boot·mongodb·spring·spring cloud·系统架构
echoyu.1 天前
消息队列-初识kafka
java·分布式·后端·spring cloud·中间件·架构·kafka
AAA修煤气灶刘哥1 天前
缓存这「加速神器」从入门到填坑,看完再也不被产品怼慢
java·redis·spring cloud
AAA修煤气灶刘哥1 天前
接口又被冲崩了?Sentinel 这 4 种限流算法,帮你守住后端『流量安全阀』
后端·算法·spring cloud
T_Ghost2 天前
SpringCloud微服务服务容错机制Sentinel熔断器
spring cloud·微服务·sentinel
喂完待续2 天前
【序列晋升】28 云原生时代的消息驱动架构 Spring Cloud Stream的未来可能性
spring cloud·微服务·云原生·重构·架构·big data·序列晋升
惜.己2 天前
Docker启动失败 Failed to start Docker Application Container Engine.
spring cloud·docker·eureka
chenrui3103 天前
Spring Boot 和 Spring Cloud: 区别与联系
spring boot·后端·spring cloud