0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

科技之光2 来源:科技之光2 作者:科技之光2 2022-12-29 20:01 次阅读

华为云微服务引擎| 0停机迁移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流程

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 华为云
    +关注

    关注

    3

    文章

    2445

    浏览量

    17408
收藏 人收藏

    评论

    相关推荐

    宝藏级微服务架构工具合集

    大量数据流。这些工具各有特色,可根据具体需求和场景选择合适的来构建和管理微服务架构。以下是UU小编整理的几个热门的微服务架构工具及其概括性介绍:
    的头像 发表于 12-21 16:33 56次阅读

    NVIDIA NIM微服务登陆亚马逊科技

    经过优化的 NIM 微服务现可在 Amazon Bedrock Marketplace、SageMaker JumpStart 和 AWS Marketplace 上获取,用于各种 NVIDIA 和生态系统模型。
    的头像 发表于 12-06 13:33 182次阅读

    计算迁移的步骤与注意事项

    计算迁移是一个复杂且关键的过程,需要细致的规划和执行。以下是计算迁移的一般步骤及注意事项: 一、计算
    的头像 发表于 10-24 09:20 549次阅读

    微服务架构与容器的关系与区别

    微服务架构与容器密切相关又有所区别。微服务将大型应用拆分为小型、独立的服务,而容器基于容器技术,为
    的头像 发表于 10-21 17:28 210次阅读

    容器服务引擎是什么意思?

    容器服务引擎是什么意思?容器服务引擎是一种基于云原生架构的容器编排工具,能够帮助用户快速构建
    的头像 发表于 10-19 17:08 172次阅读

    容器引擎属于saas层服务吗?二者是什么关系

    容器引擎属于SaaS层服务容器引擎通常被视为一种平台即服务(PaaS)的变体或扩展,虽然它
    的头像 发表于 10-12 10:57 198次阅读

    入门级攻略:如何容器化部署微服务

    第一步理解容器化基础,第二步创建Dockerfile,第三步构建推送镜像,第四步部署微服务,第五步管理微服务、第六步优化更新。容器化部署微服务是现代软件开发中的一种高效方法,可提供良好的可移植性、可扩展性和管理性。容器化部署
    的头像 发表于 10-09 10:08 149次阅读

    容器服务引擎是什么?如何使用

    容器服务引擎(CloudContainerEngine,简称CCE),是一个企业级的Kubernetes集群托管服务,提供高度可扩展、高性能的云原生应用部署和管理方案。容器
    的头像 发表于 09-30 10:17 180次阅读

    IT资源迁移服务器的关键因素

    随着计算技术的不断成熟和普及,越来越多的企业选择将他们的IT资源迁移服务器上。这种转变不仅可以降低成本、提高灵活性,还可以提升安全性和效率。本文将深入探讨将IT资源
    的头像 发表于 09-18 11:21 317次阅读

    龙智Atlassian ITSM解决方案、迁移解决方案详解:高速ITSM实施+端到端的迁移服务

    随着计算技术的不断成熟与普及,企业对于高效、灵活的IT服务管理(ITSM)与无缝的迁移解决方案的需求日益增长。如何有效管理复杂的IT环境,加速业务上
    的头像 发表于 09-04 09:41 265次阅读
    龙智Atlassian ITSM解决方案、<b class='flag-5'>云</b><b class='flag-5'>迁移</b>解决方案详解:高速ITSM实施+端到端的<b class='flag-5'>云</b><b class='flag-5'>迁移</b><b class='flag-5'>服务</b>

    重塑服务华为 Flexus X 实例破解服务传统难题

    在数字化转型的大潮中,计算不仅是企业加速变革的引擎,更是其增强竞争力的关键。企业通过“上”能够迅速响应市场变化,从而在激烈的商业竞争中占据有利地位。然而,随着企业对
    的头像 发表于 08-12 09:54 574次阅读
    重塑<b class='flag-5'>云</b><b class='flag-5'>服务</b>,<b class='flag-5'>华为</b><b class='flag-5'>云</b> Flexus X 实例破解<b class='flag-5'>云</b><b class='flag-5'>服务</b>传统难题

    如何使用服务器刷写自定义固件?

    并不清楚。 我们发现服务器位于 iot.espressif.cn 地址,并且该模块正在那里发送请求。然后通过互联网将固件发送到模块。 我们想尝试一下它是否可以从我们的本地服务器下
    发表于 07-15 08:23

    Java微服务随机掉线排查过程简析

    我们的业务共使用 11 台(阿里服务器,使用 SpringcloudAlibaba 构建微服务集群, 共计 60 个微服务, 全部注册在同一个
    的头像 发表于 01-13 17:41 932次阅读
    Java<b class='flag-5'>微服务</b>随机掉线排查过程简析

    游戏公司不使用微服务架构的原因

    微服务基本只有 request/response 的模式。不了 streaming?微服务通常要求应用是无状态的才能做到水平扩展。streaming 本身就是加入了状态
    的头像 发表于 12-29 11:18 432次阅读

    服务器数据恢复-华为ECS服务器数据恢复案例

    服务器数据恢复环境: 华为ECS服务器,linux操作系统,mysql数据库(innodb引擎
    的头像 发表于 12-27 15:03 1001次阅读
    <b class='flag-5'>服务</b>器数据恢复-<b class='flag-5'>华为</b>ECS<b class='flag-5'>云</b><b class='flag-5'>服务</b>器数据恢复案例