跨注册中心服务同步实践

博主介绍:✌全网粉丝4W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战、定制、远程,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌

博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦

🍅开源项目免费哦:点击这里克隆或者下载  ,已经发布Vue3版   🍅

🍅文末获取联系🍅精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟

 Java项目案例《100套》

https://blog.csdn.net/qq_57756904/category_12173599.html

 uniapp小程序《100套》

https://blog.csdn.net/qq_57756904/category_12199600.html

目录

目标

系统需要

获取安装包

初始化 DB

DB 配置

启动服务器

检查系统状态

检查系统状态

控制台

开始迁移

1、迁移信息

2、添加注册中心集群信息

3、添加同步任务

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

Dubbo Consumer 客户端迁移

Dubbo Provider 迁移

5、新的部署结构

注意事项

💖微服务实战


目标

  • 启动 NacosSync 服务
  • 通过一个简单的例子,演示如何将注册到 Zookeeper 的 Dubbo 客户端迁移到 Nacos

系统需要

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

获取安装包

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

  • 直接下载 NacosSync 的二进制安装包

nacosSync.0.2.0.zip

  • 从 GitHub 上下载 NacosSync 的源码进行构建

Package:

cd nacosSync/
mvn clean package -U

目标文件的路径:

nacos-sync/nacossync-distribution/target/nacosSync.0.1.0.zip

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

nacosSync
├── LICENSE
├── NOTICE
├── bin
│   ├── nacosSync.sql
│   ├── shutdown.sh
│   └── startup.sh
├── conf
│   ├── application.properties
│   └── logback-spring.xml
├── logs
└── nacosSync-server.0.1.0.jar

初始化 DB

系统默认配置的数据库是 MySql,也能支持其他的关系型数据库

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

DB 配置

DB 的配置文件放在 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)

检查系统状态

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 的部署结构:

开始迁移

1、迁移信息

Dubbo 服务的部署信息:

迁移的服务:

2、添加注册中心集群信息

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

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

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

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

3、添加同步任务

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

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

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

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

4、让 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 配置文件,让客户端能够找到 Nacos 集群

consumer.yaml

spring:
  application:
name: dubbo-consumer
demo:
  service:
    version: 1.0.0
    group: zk
dubbo:
  registry:
    address: nacos://127.0.0.1:8848

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

consumer.yaml

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

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

Dubbo Provider 迁移

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

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

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

5、新的部署结构

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

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

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

注意事项

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

💖微服务实战

【微服务】SpringCloud的OpenFeign与Ribbon配置

集Oauth2+Jwt实现单点登录

Spring Cloud Alibaba微服务第29章之Rancher

Spring Cloud Alibaba微服务第27章之Jenkins

Spring Cloud Alibaba微服务第24章之Docker部署

Spring Cloud Alibaba微服务第23章之Oauth2授权码模式

Spring Cloud Alibaba微服务第22章之Oauth2

Spring Cloud Alibaba微服务第21章之分布式事务

Spring Cloud Alibaba微服务第18章之消息服务

Spring Cloud Alibaba微服务第16章之服务容错

Spring Cloud Alibaba微服务第14章之分库分表

Spring Cloud Alibaba微服务第11章之MyBatis-plus

Spring Cloud Alibaba微服务第8章之OpenFeign

Spring Cloud Alibaba微服务第7章之负载均衡Ribbon

SpringCloud Alibaba微服务第6章之Gateway

SpringCloud Alibaba微服务第4章之Nacos

SpringCloud Alibaba微服务开篇

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡布奇诺-海晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值