跨注册中心服务同步实践

news/2024/11/24 22:59:46/

博主介绍:✌全网粉丝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

系统需要

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

  • 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.+

获取安装包

有 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.0group: 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微服务开篇


http://www.ppmy.cn/news/644819.html

相关文章

代码随想录day32

122.买卖股票的最佳时机II prices[2]-prices[0](prices[1]-prices[0])(prices[2]-prices[1])&#xff0c;利用这个性质&#xff0c;我们只收获每天的正利润&#xff0c;不断累加。 class Solution { public:int maxProfit(vector<int>& prices) {int res0;for(int i…

参考文献外国名字写法

写参考文献用百度学术 比如这篇作者 如果用姓在前全称 名在后缩写 可以点开百度学术里的作者名看看缩写 ZIVKOVIC Z HEIJDEN F V D Liu Y

英文写信称呼

1常见称呼 Mr.(先生&#xff09;用于男性 Dr./Prof.(博士/教授&#xff09;用于学术界 Ms.(女士&#xff09;用于女性&#xff0c;指已婚、未婚均可&#xff0c;只知收信人姓名而不知性别时也可使用 Editor(编辑&#xff09; Dear Sir or Madam,用于不知收信人姓名时 TpWhonliM…

英文名字

Yvonne 伊芳 <script src"bddict/js/fmp.js" type"text/javascript"></script> <script type"text/javascript"></script> mabel 名词 n. 玛贝尔 (女子名 ,涵义 :温柔、和蔼的人 ) Tavia 伟大的极好的女性拉丁语 Ani…

中国人的英文名和外国人的中文名

很早很早以来都在想一个问题 &#xff0c;也许这个问题一点意义都没有&#xff0c;但我还是觉得很迷惑。我记得初中刚刚学英语的时候有教&#xff1a;中国的人的名字翻译成英文名称是按照汉语拼音直接翻译过去的&#xff0c;一般为两个单词&#xff0c;比如有个人叫“张小三”则…

常用的英文名

NumberEnglish NamePhonetic SymbolChinese Name1Peter[ˈpiːtər]彼得2James/詹姆斯3Helen[ˈhɛlən]海伦4Tom[tɑːm]汤姆5Betty[ˈbɛtɪ]贝蒂6John[dʒɑːn]约翰7Andy[ndɪ]安迪8Bob[bɑːb]鲍勃9Carl[kɑrl]卡尔10Karen[ˈkɛrən]凯伦11Dora[ˈdɔrə]多拉12Jane[dʒe…

英文地址写法

英文地址写法 一、寄达城市名的批译 : 我国城市有用英文等书写的,也有用汉语拼音书写的。例如“北京”英文写为“Peking”,汉语拼音写为“Beijing”二者虽然都是用拉丁字母,但拼读方法不同,前者是以音标相拼,而后者则是用声母和韵母相拼的,批译时要注意识别,以免错译。…