Eureka 平滑迁移 Nacos 方案

这篇具有很好参考价值的文章主要介绍了Eureka 平滑迁移 Nacos 方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Eureka 平滑迁移 Nacos 方案,SpringCloud,eureka,java,云原生,原力计划

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

目录

一、本方案特点

二、多注册和聚合订阅平滑迁移架构

三、迁移步骤

第一步,支持多注册和多订阅

1、修改 pom.xml,添加 spring-cloud-starter-alibaba-nacos-discovery 依赖:

2、支持多注册

4、将修改后的应用打包,并部署

5、验证迁移是否成功

6、完成应用迁移

第二步,迁移所有应用。

第三步,删除原有配置中心信息,完成迁移。

四、风险点和回滚

五·、其他问题

如何选择最先迁移哪个应用

💖微服务实战


一、本方案特点

  1. 迁移的过程中,业务不受任何影响。
  2. 迁移的过程中,不增加机器成本。

二、多注册和聚合订阅平滑迁移架构

通过多注册和聚合订阅平滑迁移到 Nacos 的架构图如下:

Eureka 平滑迁移 Nacos 方案,SpringCloud,eureka,java,云原生,原力计划

 

  • 通过引入 edas-sc-migration-starter 使得 Spring Cloud 应用支持多注册,这样确保原有系统的应用可以调用 注册到 Nacos 中的服务。
  • 通过引入 edas-sc-migration-starter 并配置 RibbonClients Configuration 支持聚合订阅,使得迁移到 Nacos中的应用可以调用原有系统的服务。
  • 迁移过程中,支持通过配置中心动态地修改订阅策略,支持通过 Endpoint 监控聚合订阅的详情,做到可配置可监控。

三、迁移步骤

第一步,支持多注册和多订阅

1、修改 pom.xml,添加 spring-cloud-starter-alibaba-nacos-discovery 依赖:

<dependency>
 	<groupId>org.springframework.cloud</groupId>
 	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
 	<version>{相应的版本}</version>
 </dependency>

并在 application.properties 中添加 nacos-server 的地址:

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

2、支持多注册

默认情况下 Spring Cloud 只支持在依赖中引入一个注册中心,当存在多个注册中心时,启动会报错。所以这里        需要添加一个依赖 edas-sc-migration-starter ,使得 Spring Cloud 应用支持多注册。

<dependency>
 	<groupId>com.alibaba.edas</groupId>
 	<artifactId>edas-sc-migration-starter</artifactId>
 	<version>1.0.1</version>
 </dependency>

3、修改 Ribbon 配置,支持同时从多个注册中心订阅 
在应用启动的主类中,显示地指定 RibbonClients 的配置为 MigrationRibbonConfiguration
假设原有的应用主类启动代码如下:

@SpringBootApplication
 public class ConsumerApplication {
     public static void main(String[] args) {
         SpringApplication.run(ConsumerApplication.class, args);
     }
 }


那么修改后的应用主类启动代码如下:

@SpringBootApplication
 @RibbonClients(defaultConfiguration = MigrationRibbonConfiguration.class)
 public class ConsumerApplication {
     public static void main(String[] args) {
         SpringApplication.run(ConsumerApplication.class, args);
     }
 }


注意,默认的订阅策略是从所有注册中心订阅,并对数据做一些简单的聚合。
您可以通过 spring.cloud.edas.migration.subscribes 属性来选择从哪几个注册中心订阅数据。

spring.cloud.edas.migration.subscribes=nacos,eureka # 同时从 Eureka 和 Nacos 订阅服务
 
 spring.cloud.edas.migration.subscribes=nacos        # 只从 Nacos 订阅服务


如果想在应用运行时动态修改从哪些注册中心订阅数据,直接使用 Spring Cloud 配置管理功能在运行时修改此属性即可。

4、将修改后的应用打包,并部署

5、验证迁移是否成功

  1. 最重要的一点,观察业务本身是否正常。
  2. 如果您的应用开启了 Actuator 监控,那么可以通过 Actuator 来查看此应用订阅的各服务的 RibbonServerList 的信息。metaInfo 中的 serverGroup 字段 代表了此节点来源于哪个服务注册中心。
http://ip:port/migration_server_list             ## Spring Boot 1.x 版本

 http://ip:port/actuator/migration-server-list    ## Spring Boot 2.x 版本

Eureka 平滑迁移 Nacos 方案,SpringCloud,eureka,java,云原生,原力计划

Eureka 平滑迁移 Nacos 方案,SpringCloud,eureka,java,云原生,原力计划

6、完成应用迁移

第二步,迁移所有应用。

  1. 如果按照第一步中的步骤完整地迁移完一个应用,且各项数据都显示业务正常,则可以开始迁移剩余应用。

第三步,删除原有配置中心信息,完成迁移。

当应用都已经迁移到 Nacos 之后,此时可以删除原有的注册中心的配置 和 迁移过程专用的依赖 edas-sc-migration-starter ,完成整个迁移。

  1. 从 pom.xml 中删除原有的注册中心的依赖 和 edas-sc-migration-starter
  2. 参考第一步中第2小步骤中的部署方式,将修改后的应用依次全部重新部署。
  3. 停止原有的 Eureka 集群。

四、风险点和回滚

从目前方案的设计中,没有发现明显的风险点。但是因为在迁移的过程中涉及到所有应用的两次修改和重启,所以建议在迁移的过程中实时关注业务数据监控的详情,确保完全不影响业务的情况下再进行下一步操作。

如果遇到异常情况,针对于不同阶段的处理方案如下:

  1. 执行第一步的过程中出现业务异常。还原代码,重新部署到原有机器,恢复业务。查清楚具体问题,排查完毕后再重新执行。主要排查是否是机器权限的问题。
  2. 执行第二步的过程中出现业务异常。还原正在迁移的应用的代码,重新部署到原有机器,恢复业务。查清楚具体问题,排查完毕后再重新执行。主要排查是否是机器权限的问题。
  3. 执行第三步的过程中出现业务异常。还原正在迁移的应用的代码,重新部署到原有机器,恢复业务。

五·、其他问题

如何选择最先迁移哪个应用

  • 建议是从最下层 Provider 开始迁移。但如果调用链路太复杂,比较难分析,所以设计的方案中是支持随便找一个非流量入口应用进行迁移。
  • 因为流量入口的应用比较特殊,所以建议迁移流量入口应用时需要根据自己应用的实际情况考虑迁移方案。

💖微服务实战

✨【微服务】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微服务开篇文章来源地址https://www.toymoban.com/news/detail-567898.html

到了这里,关于Eureka 平滑迁移 Nacos 方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式微服务技术栈-SpringCloud<Eureka,Ribbon,nacos>

    分布式架构的一种 把服务进行 拆分 springcloud 解决了 服务拆分过程中的 治理问题 与单体应用 进行区分 (单体架构 把业务所有功能集中开发,打成一个包部署) 每个模块独立开发和部署(服务集群) 服务之间互相调用 出现分布式技术 Webservice ESB Hession Dubbo 异步通信 消息队

    2024年02月07日
    浏览(44)
  • 38.SpringCloud—注册中心(eureka/nacos)、负载均衡Ribbon

    目录 一、SpringCloud。 (1)认识微服务。 (1.1)单体架构与分布式架构(微服务)。 (1.2)微服务技术对比。 (1.3)SpringCloud。 (2)服务拆分及远程调用。 (2.1)服务拆分。 (2.2)远程调用。 (3)提供者与消费者。 (4)Eureka注册中心。 (4.1)Eureka的作用。  (4.2)搭建

    2024年02月09日
    浏览(47)
  • SpringCloud实用篇1——eureka注册中心 Ribbon负载均衡原理 nacos注册中心

    单体架构: 将业务的所有功能集中在一个项目中开发,打成一个包部署。 优点:架构简单;部署成本低(打jar包、部署、负载均衡就完成了) 缺点:耦合度高(维护困难、升级困难,不利于大项目开发) 分布式架构 根据业务功能对系统做拆分,每个业务功能模块作为独立

    2024年02月13日
    浏览(29)
  • JavaWeb_SpringCloud微服务_Day1-eureka, ribbon, nacos

    Dubbo SpringCloud SpringCloudAlibaba 注册中心 zookeeper, Redis Eureka, Consul Nacos, Eureka 服务远程调用 Dubbo协议 Feign(http协议) Dubbo, Feign 配置中心 无 SpringCloudConfig SpringCloudConfig, Nacos 服务网关 无 SpringCloudGateway, Zuul SpringCloudGateway, Zuul 服务监控和保护 dubbo-admin, 功能弱 Hystrix Sentinel 注册RestTem

    2024年02月16日
    浏览(32)
  • springcloud微服务架构(eureka、nacos、ribbon、feign、gateway等组件的详细介绍和使用)

    目录 一、微服务演变 1、单体架构(Monolithic Architecture) 2、分布式架构  3、微服务 4、 总结 5、微服务架构 5.1、 微服务技术对比 5.2、企业需求 二、spring cloud  springCloud与SpringBoot的版本兼容关系 1、服务拆分及远程调用 1.1、服务拆分 1.1.1、服务拆分注意事项 1.1.2、项目实战

    2024年02月08日
    浏览(33)
  • SpringCloud Alibaba 深入源码 - Nacos 和 Eureka 的区别(健康检测、服务的拉取和订阅)

    目录 一、Nacos 和 Eureka 的区别 1.1、以 Nacos 注册流程来解析区别 a)首先,我们的服务启动时。都会把自己的信息提交给注册中心,然后注册中心就会把信息保存下来. 注册的信息实际上就是一个嵌套 Map,结构为 MapString, MapString, Service,第一层 key 就是 namespace_id,起到环境隔

    2024年01月22日
    浏览(42)
  • SpringCloud(H版&alibaba)框架开发教程,使用eureka,zookeeper,consul,nacos做注册中心——附源码(1)

    源码地址:https://gitee.com/jackXUYY/springboot-example 创建订单服务,支付服务,公共api服务(共用的实体),eureka服务 1.cloud-consumer-order80 2.cloud-provider-payment8001 3.cloud-api-commons 4.cloud-eureka-server7001 5.cloud-eureka-server7002 如图所示 修改本地host映射 修改数据库地址为自己的地址,并初始

    2024年02月03日
    浏览(43)
  • Nacos和Eureka都是开源的、易于使用的、功能丰富的平台,用于构建云原生应用

    Nacos和Eureka都是开源的、易于使用的、功能丰富的平台,用于构建云原生应用。它们提供了构建云原生应用所需的各种组件和功能,如服务发现、配置管理、动态服务管理等。以下是Nacos和Eureka的一些主要区别: 架构:Nacos采用分层架构,包括数据采集层、数据存储层、服务发

    2024年01月25日
    浏览(32)
  • Springcloud微服务之Nacos入门 服务分级存储模型 同集群优先的负载均衡 权重配置 环境隔离 Nacos与Eureka的区别 AP 和CP

    Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。 Nacos是SpringCloudAlibaba的组件,而SpringCloudAlibaba也遵循SpringCloud中定义的服务注册、服务发现规范。因此使用Nacos和使用Eureka对于微服务来说,并没有太大区别。 主要差异在

    2024年04月15日
    浏览(28)
  • Java分布式微服务1——注册中心(Eureka/Nacos)

    远程调用 向其他服务器请求信息(远程调用) 先在application或者configuration中注册一个Bean方便之后使用(可忽略) 使用restTemplate方法发送请求 getForObject/postForObject/… 1、Eureka注册中心 上面的url是硬编码写死的,很不方便切换,所以使用Eurake注册中心来管理服务提供者的地址 E

    2024年02月14日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包