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

停机,迁移,nacos,java,字节,技术,帮忙 · 浏览次数 : 321

小编点评

**Spring Cloud 应用迁移至华为云 Nacos** **市场痛点** * 微服务规模小,使用微服务引擎CSE成本太高。 * dubbo/Nacos微服务架构改造dubbo-servicecomb接入CSE需要投入的成本高,且社区dubbo-servicecomb未投入人力维护,可能遇到很多适配问题。 * 仅想使用CSE的治理能力,配置中心仍然使用Nacos,或者后期微服务整改后使用CSE,但是目前想使用Nacos过渡情况。 **华为云提供托管版Nacos引擎** * 可以帮助客户免去运维Nacos集群的烦恼,更加聚焦业务本身的实现。 * 提供专业的Nacos专家支持。 **如何将 Spring Cloud 应用从开源 Consul 无缝迁移至华为云 Nacos?** **1. 什么是 Sermant Agent?** * Sermant Agent是一种基于JavaAgent的无代理服务网格技术。 * 利用 JavaAgent 来检测主机应用程序,并具有增强的服务治理功能。 **2. 为什么使用 Sermant Agent 接入 4.1 代码零侵入,配置简单相较于 SDK方式接入,基于Sermant Agent 的接入会更加快捷高效。** * 配置简单,无需做任何代码改造,仅需在服务启动时附带 Sermant Agent即可动态接入到 CSE 的 Nacos。 **3. 支持多种治理能力** * 支持流量治理、注册、优雅上下线及动态配置能力。 **4. 配置原理** * 在服务启动时,动态增强原服务的注册逻辑。 * 通过字节码增强,动态识别原应用的注册中心。 * 在 Spring 的 SpringFactory 机制中注入基于Spring Cloud 实现的注册Nacos 的自动配置类。 **5. 更多版本支持** * 支持多种版本支持,帮助用户选择合适的接入方式。 **6. 总结** * 通过使用华为云托管版Nacos引擎,可以轻松将 Spring Cloud 应用从开源 Consul 无缝迁移至华为云 Nacos。 * 这项技术可以帮助用户降低开发成本,提升应用性能。

正文

摘要:本文介绍如何将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.更多版本支持

 

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

与0停机迁移Nacos?Java字节码技术来帮忙相似的内容:

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

摘要:本文介绍如何将Spring Cloud应用从开源Consul无缝迁移至华为云Nacos。 本文分享自华为云社区《0停机迁移Nacos?Java字节码技术来帮忙》,作者:华为云PaaS服务小智。 1.市场迁移云环境痛点 市场微服务迁移云环境难主要有以下几点场景: • 微服务规模小,使用微服务引擎

可重入锁思想,设计MQ迁移方案

如果你的MQ消息要从Kafka切换到RocketMQ且不停机,怎么做?在让这个MQ消息调用第三方发奖接口,但无幂等字段又怎么处理?今天小傅哥就给大家分享一个关于MQ消息在这样的场景中的处理手段。 这是一种比较特例的场景,需要保证切换的MQ消息不被两端同时消费,并且还需要在一段消费失败后的MQ还可以继

【转帖】服务器操作系统官方发行时间及停止维护时间

https://blog.whsir.com/post-7029.html 所有的操作系统都有着一定的生命周期,在我们实际使用操作系统时,应了解操作系统官方停止维护的时间节点,以便我们可以提早的进行版本升级迁移工作,本文列举了一些常见的操作系统版本以及官方停止维护时间。 Rocky Linux系统

php不使用Office包实现上万条数据导出表格

经过上传客户要求主副表迁出,又提出可以将某张表的数据导出excel,听着很简单,实际看数据表发现上万条数据,并且需要关联表查询相关字段,导出的表格才可以被客户看明白。 要是使用office包目前后台内存耗尽,被迫停止运行,所以想要突破百万条数据导出需要另辟它路。所以就是使用了导出CSV并非excel

智慧电厂转动设备的“非停监测”及算法应用

转动设备故障预测技术是智慧电厂运维的关键,任何“非停”(非计划性停机)事件都可能带来重大的经济损失和安全风险。尤其在面对如汽轮机这类高速旋转部件的维护挑战时,其健康状况直接关联着整个发电系统的可靠性和经济性,这无疑凸显了实施预测性维护策略的迫切性。 预测性维护技术的革新路径 预测性维护技术的兴起,标

痞子衡嵌入式:不同J-Link版本对于i.MXRT1170连接复位后处理行为有所不同

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是不同J-Link版本对于i.MXRT1170连接复位后处理行为。 痞子衡之前写过一篇旧文 《i.MXRT1170上用J-Link连接复位后PC总是停在0x223104的原因》,这篇文章详细解释了 RT1170 BootROM 代码里软件

Kubernetes(K8S) Deployment 升级和回滚

创建部署详见 Kubernetes(K8S) Deployment 部署 Pod 传统应用升级,一般是V1.0的jar包,有一个应对 1.0 的 shell 启动脚本。升级时,传 2.0 的 jar包,配置 2.0 的 shell 脚本。 执行顺序为,停1.0的服务,启2.0的服务,有问题时,把2.

[转帖]CentOS 8已经停止维护,怎么检查CentOS的版本

https://rumenz.com/rumenbiji/centos-check-version.html CentOS 8 在2021年12月31日停止更新并停止维护(EOL)。 CentOS 7 将会在2024年6月30日停止维护(EOL) 那么怎么知道我们线上正在跑的是哪个版本呢? 现在Ce

[转帖]cnBeta网站备案被取消,停止国内解析

https://baijiahao.baidu.com/s?id=1747630942348916820&wfr=spider&for=pc 个人站不能放广告吗? cnBeta网站备案被取消,停止国内解析,但国外还可以访问。 网上传闻原因有2个,个人备案、政治属性广告。 当然了,cnBeta换成企业

[转帖]接口偶尔超时,竟又是JVM停顿的锅!

https://www.cnblogs.com/codelogs/p/16391159.html 简介# 继上次我们JVM停顿十几秒的问题解决后,我们系统终于稳定了,再也不会无故重启了!这是之前的文章:耗时几个月,终于找到了JVM停顿十几秒的原因 但有点奇怪的是,每隔一段时间,我们服务接口就会有一小