0停机迁移Nacos?Java字节码技术来帮忙

news2025/1/16 3:57:46
摘要:本文介绍如何将Spring Cloud应用从开源Consul无缝迁移至华为云Nacos。

本文分享自华为云社区《0停机迁移Nacos?Java字节码技术来帮忙》,作者:华为云PaaS服务小智。

1.市场迁移云环境痛点

市场微服务迁移云环境难主要有以下几点场景:

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

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

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

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

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

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

2.概述

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

3.什么是Sermant Agent

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

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

4. 为什么使用Sermant Agent接入

4.1代码零侵入,配置很简单

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

4.2支持多种治理能力

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

4.3支持多种注册中心

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

4.4支持应用不停机迁移

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

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

5.接入原理

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

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

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

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发起注册,最终完成接入。

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

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

6.1虚机场景接入CSE的Nacos

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

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

6.2容器场景接入CSE的Nacos

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

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

7.更多版本支持

点击关注,第一时间了解华为云新鲜技术~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/81980.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[ MySQL ] 使用Navicat进行MySQL数据库备份 / 还原(Part 2:备份.sql文件方式)

本文主要讲解如何用Navicat(Navicat Premium ,或者Navicat for mysql)进行MySQL备份和恢复数据库(利用.sql文件的方式)。 关于MySQL数据库备份,本博客内主要相关文章有: [ MySQL ] 使用Navica…

兔子来源中性粒细胞膜

兔子来源中性粒细胞膜 1.按组成元素分 构成细胞膜的成分有磷脂,糖蛋白,糖脂和蛋白质。 2.按组成结构分 磷脂双分子层是构成细胞膜的基本支架。细胞膜的主要成分是蛋白质和脂质,含有少量糖类。其中部分脂质和糖类结合形成糖脂,部分…

“你家娃为什么这么爱看书?”只用3招,孩子秒变小书迷

我儿子从幼儿园带回来一个消息,说班上所有的孩子都在老师那里订课外书。我儿子立即向老师解释说:我不需要买书。我妈妈给我买了很多书。我家里有很多书。我每天都读。家长群里有家长艾特问我的孩子为什么这么喜欢读书。为什么孩子们喜欢读书,…

作业12:第七章课后题

目录习题7-1 在小批量梯度下降中,试分析为什么学习率要和批量大小成正比习题7-2 在Adam算法中,说明指数加权平均的偏差修正的合理性习题7-9 证明在标准的随机梯度下降中,权重衰减正则化和L_{2}正则化的效果相同.并分析这一结论在动量法和Adam…

【Vue2+Element ui通用后台】左侧菜单实现

文章目录主体布局搭建左侧菜单搭建左侧菜单跳转主体布局搭建 我们在 Container 布局容器&#xff0c;找到有左侧、头部、和主体部分的布局&#xff0c;直接复制代码到 Main.vue 中&#xff1a; <template><div><el-container><el-aside width"200p…

「从零入门推荐系统」06:推荐系统召回算法介绍

作者 | gongyouliu编辑 | gongyouliu我们在前面几章中介绍了推荐系统的一些基本概念&#xff0c;从本章开始我们会进入推荐系统的核心章节&#xff0c;也就是关于推荐算法部分的介绍。我们在第五章「推荐系统业务流程与架构」中讲到推荐系统一般会分为召回和排序两个阶段&#…

ADI Blackfin DSP处理器-BF533的开发详解38:图像处理专题-Sobel 算子边缘检测(含源代码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了 Sobel 算子的图像边缘检测&#xff0c;代码运行时&#xff0c;会通过文件系统打开工程文件根目下" …/ImageView"…

Java集合和常见数据结构以及泛型

Java集合和常见数据结构以及泛型集合概述Collection集合的体系特点Collection集合常用APICollection集合的遍历方式方法一&#xff1a;迭代器方法二&#xff1a;foreach/增强for循环方法三&#xff1a;lambda表达式Collection集合存储自定义类型的对象常见数据结构数据结构概述…

PDF格式如何转成Excel?这篇文章教会你如何转换

不知道在日常的办公中&#xff0c;大家有没有碰到过这样一个问题&#xff1a;当领导给你发个PDF文件后&#xff0c;要求你尽快的将PDF文件中的表格数据进行修改&#xff0c;但当你把PDF转换成Excel格式后&#xff0c;发现转换后的文件排版格式错乱的。可是截止时间的压迫和乱七…

[附源码]Python计算机毕业设计大学生日常行为评分管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

Python输出文字改变颜色

# Python输出文字改变颜色的方法 一、使用注释性输出 &#xff08;一&#xff09;、基本语法 \033[显示方式; 前景色; 背景色m******\033[0m 显示方式、前景色、背景色都为可选参数&#xff0c;选择自己需要的即可&#xff0c;而且顺序可变非固定&#xff0c;但建议按照默认顺…

Openlayers 自定义投影坐标系数据转换以及在线转换工具

Openlayers 自定义投影坐标系数据转换以及在线转换工具OpenLayers 教程查看 EPSG 码和定义Openlayers 自定义投影坐标系数据转换以及在线转换工具在线示例OpenLayers 教程 工作中经常会遇到转换坐标的情况&#xff0c;一般都会写代码搞定&#xff0c;但是有时候只需要查看一下…

web前端期末大作业:基于HTML+CSS+JavaScript汽车租赁网站(47页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

ELK 企业级日志分析系统

一、ELK 概述 1、ELK 简介 ELK平台是一套完整的日志集中处理解决方案&#xff0c;将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用&#xff0c; 完成更强大的用户对日志的查询、排序、统计需求。 ●ElasticSearch&#xff1a;是基于Lucene&#xff08;一个全文检…

[附源码]Python计算机毕业设计Django安防管理平台

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

CleanMyMacX软件怎么样?实际使用效果功能讲解

如果你也对MAC系统的优化和文件管理摸不清头脑&#xff0c;不知道该如何清理垃圾和缓存文件。那你可以试试我最近发现的这款软件——CleanMyMac X。 这是一款MAC OS的老牌清理软件&#xff0c;集系统的清理、提速、保护和软件的卸载于一体,由知名软件开发商MACPaw开发&#xf…

未来五年,人类和数字化劳动力混合的员工队伍将变得非常普遍

从机器管家安德鲁&#xff0c;到钢铁侠的贾维斯&#xff0c;无论是实体智能机器人&#xff0c;还是人工智能系统&#xff0c;人们对于机器人助手的想象从未停止过。 虽然&#xff0c;人类和机器人助手一起工作&#xff0c;听上去很科幻&#xff0c;但这一情况如今已比想象的更…

SpringBoot整合邮件服务(QQ邮箱)

文章目录SpringBoot整合邮件服务配置选择账户点击开启SMTP服务&#xff1a;发送短信&#xff1a;发送完&#xff0c;点击我已发送&#xff0c;然后得到密码&#xff1a;POM依赖&#xff1a;application.ymlJava集成EmailService在controller里定义接口&#xff1a;在业务实现层…

继承——C++第二大特性

目录 一、概念及定义 1、概念 2、定义 &#xff08;2&#xff09;方式 &#xff08;3&#xff09;继承基类成员访问方式的变化 二、父类子类赋值转换 三、继承中的作用域 四、派生类的默认成员函数 六、继承与静态成员 七、复杂的菱形继承及菱形虚拟继承 八、归纳 一、…

C语言——每周刷题题集(第一周)

前言 做题可以更好地巩固所学知识&#xff0c;并加深对于知识点的理解。下面题目均来自牛客网入门编程练习题。 第一题: BC8 十六进制转十进制 描述&#xff1a; BoBo写了一个十六进制整数ABCDEF&#xff0c;他问KiKi对应的十进制整数是多少。 输入描述&#xff1a; 无 …