首页 > 其他分享 >华为云微服务引擎0停机迁移Nacos?它是这样做的

华为云微服务引擎0停机迁移Nacos?它是这样做的

时间:2022-12-29 20:31:55浏览次数:51  
标签:服务 CSE 停机 Nacos Agent 接入 Sermant 云微

华为云微服务引擎 |停机迁移Nacos?“它”是这样做的

迁移云环境场景

• 微服务规模小,使用微服务引擎CSE成本太高。

• dubbo/Nacos微服务架构改造dubbo-servicecomb接入CSE需要投入的成本高,且社区dubbo-servicecomb未投入人力维护,可能遇到很多适配问题。

• 仅想使用CSE的治理能力,配置中心仍然使用Nacos,或者后期微服务整改后使用CSE,但是目前想使用Nacos过渡情况。

• 倾向使用Nacos作为配置中心使用,其它使用华为云的其它组件,如CCE、中间件等。

• 使用Nacos或者想用Nacos的客户,项目整改比较紧急,调整框架迁移CSE时间不够。

• 想使用Nacos作为配置中心,但是又不想去动原有的代码逻辑。

概述

结合市场痛点,华为云提供托管版Nacos引擎,能帮助客户免去运维Nacos集群的烦恼,更加聚焦业务本身的实现,同时华为云也提供专业的Nacos专家支持。本文介绍如何将Spring Cloud应用从开源Consul无缝迁移至华为云Nacos。

什么是Sermant Agent

Sermant Agent是一种基于JavaAgent的无代理服务网格技术。它利用JavaAgent来检测主机应用程序,并具有增强的服务治理功能,以解决海量微服务架构中的服务治理问题。

Sermant Agent处于快速发展阶段,当前已支持多种服务治理能力,包含流量治理、注册、优雅上下线及动态配置能力。

为什么使用Sermant Agent接入

代码零侵入,配置很简单

相较于SDK方式接入,基于Sermant Agent的接入会更加快捷高效,配置简单,且应用无需做任何代码改造,仅需在服务启动时附带Sermant Agent即可动态接入到CSE的Nacos。

持多种治理能力

Sermant Agent默认集成流量治理能力,当前支持熔断、限流、隔离仓以及重试治理能力,该能力可基于CSE配置中心进行配置与发布。

支持多种注册中心

Sermant Agent目前支持业内主流的注册中心,已经支持了ServiceComb ServiceCenter、Naocs,Eureka、Zookeeper等正在开发中。

支持应用不停机迁移

Sermant Agent支持服务的双注册,可根据配置中心下发的服务订阅策略,动态修改当前服务的订阅策略,并基于该能力帮助线上应用在业务不中断的前提下完成服务迁移。

不仅如此,Sermant Agent提供优雅上下线能力,在服务重启、上下线时提供保障,在保护服务的同时,规避服务下线时可能存在的流量丢失问题。

接入原理

当然,在说明原理之前,我们首先需要了解什么是Java Agent。

Java Agent是在JDK1.5之后引入的新特性,它支持JVM将字节码文件读入内存之后,JVM使用对应的字节流在Java堆中生成一个Class对象之前,用户可以对其字节码进行修改的能力,JVM使用修改之后的字节码进行Class对象的创建,从而实现Java应用的非代码侵入的业务逻辑修改和替换。

Sermant Agent正是基于动态修改字节码的技术,在服务启动时,动态增强原服务的注册逻辑。那Sermant Agent是如何在不修改代码的前提下接入Nacos呢?主要流程如下:


包含以下6个步骤:

1. 首先服务携带Sermant Agent启动;

2. 服务启动时,针对服务执行字节码增强操作(基于Java Agent的字节码增强),主要针对注册与配置两块,在步骤3-5体现;

3. 通过字节码增强,动态识别原应用的注册中心;

4. 注入启动配置,动态关闭原应用的注册中心自动配置逻辑;

5. 随后通过Spring的SpringFactory机制注入基于Spring Cloud实现的注册Nacos的自动配置类,由Spring接管;

6. 当应用发起注册时,会通过步骤5注入的注册逻辑向CSE的Nacos发起注册,最终完成接入。

简单零代码修改,轻松接入CSE的Nacos

接入场景分为虚机接入和容器接入,大家可以根据自身需求选择合适的接入方式。

机场景接入CSE的Nacos

虚机部署的应用可通过Sermant Agent接入到CSE的Nacos。

基于ECS将应用接入CSE的Nacos流程


容器场景接入CSE的Nacos

容器部署的应用可通过Sermant Injector自动挂载Sermant Agent,从而通过Sermant Agent接入到CSE的Nacos。

基于CCE将应用接入CSE的Nacos流程

标签:服务,CSE,停机,Nacos,Agent,接入,Sermant,云微
From: https://blog.51cto.com/u_15838269/5978752

相关文章

  • Alibaba Nacos初体验
    Windows10nacos-server-2.1.2.zipnacos-client:2.0.4/2.1.0(依赖的jar包)-- 序章官方介绍:Nacos/nɑ:kəʊs/是DynamicNamingandConfigurationService的首......
  • Nacos1.4源码(2):服务端注册源码
    注册表结构在先说注册源码之前,先要对注册表结构有一个印象,注册表结构如下:最外层使用NameSpace用来隔离环境NameSpace下有不同的Group,Group用来管理ServiceService下......
  • web项目 获取nacos配置java 代码
    1.主动监听nacos配置类importcom.alibaba.cloud.nacos.NacosConfigManager;importcom.alibaba.nacos.api.config.ConfigService;importcom.alibaba.nacos.api.confi......
  • spring-cloud技术栈使用eureka注册中心微服务优雅停机实践
    问题使用SpringCloud搭建微服务体系,如果注册中心选用Eureka,使用spring-cloud-starter-netflix-eureka-client包,能在项目中方便的整合Eureka。在日常开发中经常会遇到一......
  • 防止服务器停机的最佳方法
    防止服务器停机的最佳方法服务器停机的原因虽然解决造成服务器停机的硬件和软件原因(如服务器配置、安全漏洞和容量)至关重要,但一些最常见的服务器停机原因(如人为错误和......
  • 防止服务器停机的最佳方法
    防止服务器停机的最佳方法服务器停机的原因虽然解决造成服务器停机的硬件和软件原因(如服务器配置、安全漏洞和容量)至关重要,但一些最常见的服务器停机原因(如人为错误和......
  • Spring Cloud Alibaba之Nacos
    目录结构:一、SpringCloudAlibaba简介二、使用版本情况三、什么是Nacos?四、Nacos运行环境部署五、Nacos注册中心六、Nacos命名空间和分组......
  • Nacos1.4源码(1):客户端注册源码
    搭建环境搭建Nacos服务端环境从github上下载nacos1.4源码下来:https://github.com/alibaba/nacos下载下来,源码编译好,直接idea运行com.alibaba.nacos.Nacos类就行:那我......
  • nacos如何使用占位符${}进行参数配置
    有的时候,我们的nacos会出现一个配置文件里,有多个配置项对应的值都是一样的,这个时候nacos就可以用到占位符${}进行参数配置。例如下面的这个配置system:mapApi:h......
  • Nacos配置管理
                              ......