作者:张豪鹏 华为云高级软件工程师
一、 前言
Sermant是基于Java字节码增强技术的无代理服务网格,采用Java字节码增强技术为宿主应用程序提供服务治理功能。从1.2.0版本开始,Sermant已经实现了在服务不停机状态下进行安装和卸载的热插拔功能,在上一篇文章《服务运行时动态挂载JavaAgent和插件——Sermant热插拔能力解析》中已经介绍了Sermant热插拔功能的实现原理。本篇文章将通过故障注入场景,来展示Sermant热插拔能力的应用价值。
二、 故障注入
1) 什么是故障注入?
故障注入是一种测试方法,它通过在系统中故意引入错误或故障,来测试系统对这些错误或故障的响应和恢复能力,并验证系统是否能够正常处理这些异常情况。下图是故障注入测试中的一些常见故障:

通过故障注入技术,测试人员可以在Java应用中模拟各种故障场景,以便评估应用的响应能力和恢复能力,还可以帮助提前拦截和发现Java应用潜在的可靠性问题,提升应用稳定性,避免现网出现重大质量事故。例如:
- 通过在指定方法中抛出自定义异常可以测试系统在异常情况下的稳定性
- 通过修改指定方法的返回值可以测试系统在异常数据情况下的处理能力
- 通过数据库故障可以测试系统在异常情况下是否可以保持数据一致性等。
2) Java应用实现故障注入方案的难点是什么?
传统的故障注入方案是在应用中通过手动或者脚本的方式来引入故障,例如:修改代码、改变输入值、随机错误注入等。传统方式在进行故障注入测试时会存在以下问题:
- 通过修改代码来注入故障时,每次注入新的故障都需要进行代码修改并重启服务,影响故障注入的效率
- 通过开关配置来进行故障注入时,需要增加大量的开关逻辑判断
因此如何在不重启应用的情况下实现故障注入,并且可以重复的进行故障注入对提高故障注入测试的效率和全面性变得至关重要。
三、 Sermant热插拔功能在故障注入场景下的应用
Sermant热插拔功能可以在服务不停机状态下进行故障注入插件的安装和卸载,故障注入插件在插件安装的时候可以指定任意方法进行故障注入,在故障注入测试完成后可以卸载该插件来避免影响系统运行,故障注入插件卸载完成后可以重新安装故障注入插入进行其他方法的故障注入。
1) Sermant热插拔功能是什么?
Sermant热插拔功能是基于JavaAgent动态加载机制实现的,可以在服务不停机状态下进行Java Agent和插件的安装、卸载,而且安装、卸载插件时不会影响其他插件的正常运行。
下图为Sermant热插拔能力的示意图,Sermant可以在服务运行过程中进行Agent动态安装,Agent安装完成后可以通过动态安装、卸载插件来调整所需的微服务治理能力,也可以卸载整个Agent。
Sermant热插拔功能在故障注入与微服务治理中的应用

本文介绍了华为云Sermant的热插拔功能如何在故障注入场景中提高测试效率,通过动态安装和卸载插件实现服务的故障模拟和诊断,同时展示了其在微服务治理升级中的潜力。
最低0.47元/天 解锁文章
978

被折叠的 条评论
为什么被折叠?



