• 从其它环境转移到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

    系统模块架构:

    image.png


    控制台
    提供了精简Web操作控制台,支持国际化:

    同步任务管理页面

    注册中心管理页面

    image.png

    使用场景:

    • 多个网络互通的Region之间服务共享,打破Region之间的服务调用限制

    image.png

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

    image.png

    使用流程

    准备工作

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

    获取安装包

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

    • 直接下载 NacosSync 的二进制安装包:nacosSync.${version}.zip
    • 从 GitHub 上下载 NacosSync 的源码进行构建

    Package:

    1. cd nacosSync/
    2. mvn clean package -U

    目标文件的路径:

    nacos-sync/nacossync-distribution/target/nacosSync.${version}.zip
    

    解压安装包之后,工程的文件目录结构

    1. nacosSync
    2. ├── LICENSE
    3. ├── NOTICE
    4. ├── bin
    5. │   ├── nacosSync.sql
    6. │   ├── shutdown.sh
    7. │   └── startup.sh
    8. ├── conf
    9. │   ├── application.properties
    10. │   └── logback-spring.xml
    11. ├── logs
    12. └── nacosSync-server.${version}.jar

    初始化数据库

    系统默认配置的数据库是Mysql,也能支持其他的关系型数据库。 1.建库,缺省的数据库名字为“nacos_Sync”。 2.数据库表不需要单独创建,默认使用了hibernate的自动建表功能。 3.如果你的环境不支持自动建表,可以使用系统自带的sql脚本建表,脚本放在bin目录下。

    数据库配置

    数据库的配置文件放在conf/application.properties中:

    1. spring.datasource.url=jdbc:mysql://127.0.0.1:3306/nacos_sync?characterEncoding=utf8
    2. spring.datasource.username=root
    3. spring.datasource.password=root

    启动服务器

    1. $ nacosSync/bin:
    2. sh startup.sh restart

    检查系统状态

    1.检查系统日志

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

    2.检查系统端口

    缺省的系统端口是8081,你可以自己定义在application.properties中。

    1. $netstat -ano|grep 8081
    2. 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
    

    image.png

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

    image.png

    开始迁移

    迁移信息

    Dubbo服务的部署信息:

    image.png

    迁移的服务:

    Service NameVersionGroup Name
    com.alibaba.nacos.api.DemoService1.0.0zk

    添加注册中心集群信息

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

    image.png

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

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

    image.png

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

    image.png

    添加同步任务

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

    imagesd.png

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

    image.png

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

    image.png

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

    image.png

    Dubbo 客户端连接到 Nacos 注册中心

    Dubbo Consumer客户端迁移

    Dubbo 已经支持Nacos注册中心,支持的版本为2.5+,需要增加一个Nacos注册中心的Dubbo扩展插件依赖:

    1. <dependency>
    2. <groupId>com.alibaba</groupId>
    3. <artifactId>dubbo-registry-nacos</artifactId>
    4. <version>0.0.2</version>
    5. </dependency>

    增加Nacos客户端的依赖:

    1. <dependency>
    2. <groupId>com.alibaba.nacos</groupId>
    3. <artifactId>nacos-client</artifactId>
    4. <version>0.6.2</version>
    5. </dependency>

    配置Dubbo Consumer的Dubbo配置文件consumer.yaml,让客户端能够找到Nacos集群。

    1. spring:
    2. application:
    3. name: dubbo-consumer
    4. demo:
    5. service:
    6. version: 1.0.0
    7. group: zk
    8. dubbo:
    9. registry:
    10. address: nacos://127.0.0.1:8848

    不需要修改代码,配置更新完毕之后,你就可以重启你的应用,使之生效了。

    Consumer发布完成之后,目前的部署结构如下: 

    image.png

    Dubbo Provider迁移

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

    image.png

    image.png

    注意:Nacos服务同步到Zookeeper,不需要填写版本号,你在选择源集群的时候,版本号的输入框会自动隐藏掉。

    同步任务完成后,你就可以升级Provider了,升级Provider的方法,参考升级Consumer的步骤。

    新的部署结构

    • 在升级的过程中,会有新老版本的客户端同时存在,部署结构如下:

    image.png

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

    image.png

    现在,Zookeeper集群,NacosSync集群就可以下线了。

    注意事项

    • 同步任务添加之后,需要确保下服务是否成功同步到目标集群,可以通过目标集群的控制台进行查询。
    • NacosSync 支持高可用集群模式部署,你只需要把数据库配置成同一个即可。
    • 如果梳理不清楚订阅和发布的服务,建议可以把服务都做双向同步。
    • Dubbo 客户端目前不支持 Nacos 的权重功能,如果你用到了权重功能,需要重新考虑一下方案是否合适。
  • 相关阅读:
    【小笔记】复杂模型小数据可能会造成过拟合还是欠拟合?
    LeetCode LCP 50. 宝石补给【模拟】简单
    iOS开发Swift-9-SFSymbols,页面跳转,view屏幕比例,启动页-和风天气AppUI
    【webrtc】初始mia
    火爆疯传的 Redis 学习笔记,收藏达到 30W,让你成功上岸!
    java读取OPC DA数据---Utgard
    dRep-基因组质控、去冗余及物种界定
    用户体验新尝试&思考|让“跳转”加速
    一文读懂物联网中无线通信主要技术
    BigDecimal使用
  • 原文地址:https://blog.csdn.net/leesinbad/article/details/133497292