《04 基于字节码增强的非侵入微服务健壮性评估(华为钟锦锋).pdf》由会员分享,可在线阅读,更多相关《04 基于字节码增强的非侵入微服务健壮性评估(华为钟锦锋).pdf(15页珍藏版)》请在三个皮匠报告上搜索。
1、基于字节码增强的非侵入微服务健壮性评估华为云计算混沌工程能力组钟锦锋CloudDevOps流程下的可靠性测试活动CI测试开发需求分析生产发布华为云自运营云服务CloudDevOps理念:创新性需求快速上线试错、变现;微服务独立自治微服务流水线测试系统集成可靠性测试混沌测试现网演练可靠性测试基石通过可靠性模式库牵引整系统可靠性评估发散测试通过随机故障注入补充测试设计盲区大考验收磨练系统、SRE对常见重大故障的处理测试稳固三角体背后的挑战可靠性随机问题占比高,问题定位难度大,复现成本高,导致可靠性问题要花更多的时间可靠性测试自动化厚重,时间长,无法挂载到微服务发布流水线,需要独立流水线承载。微服务
2、架构下,某个微服务不够健壮,会影响整个云服务性能、可靠性,也容易阻塞自动化可靠性测试涉及流量注入、故障注入、运行状态信息采集、测试结果分析,需要与多平台配合,只有测试人员才会使用在阶段添加可靠性测试环节白盒故障注入,故障点明确,问题定位针对性强。在阶段就进行测试,可挂载微服务流水线,完成微服务基本健壮性评估后再转集成验证。微服务自行测试,即便测出阻塞性问题,也只影响本微服务测试,对其他微服务无影响。通过一个平台实现流量注入、故障注入、运行状态信息采集、测试结果分析,开发也可以卷起来。作为当前可靠性测试的一个前期环节,快速扫除微服务基础可靠性问题,提升微服务健壮性。基于字节码增强的非侵入微服务健
3、壮性评估方案简介基于Sermant底座插件开发能力,实现开发态无侵入的JVM应用白盒故障注入基础能力,集成JVM故障注入能力到CAST平台,提供JVM应用自动化评估能力,覆盖典型JVM故障模式基线Sermant(也称为Java-mesh)是华为自研的基于Java Agent的字节码增强技术,通过Java Agent对宿主应用进行非侵入式增强,以解决Java应用的微服务治理问题。通过Sermant可以对微服务常用组件,如JDBC、HTTP、KAFKA等,进行流量监控、流量注入、MOCK、异常注入、资源监控等功能。基于字节码增强的非侵入微服务健壮性评估整体框架被测微服务AGENT调用链组件流量组件
4、武器组件HTTPTHREADJDBCKAFKA监控组件。CAST环境纳管部署AGENT,对组件做拔插管理流量获取采集调用链,供武器和流量参考流量注入作为可靠性测试背景流量故障注入对业务组件进行时延、抛异常等故障采集资源采集队列、链路池、线程池、内存等评估报告汇总输出微服务健壮性评估报告及建议关键实现点:1、在被测微服务上部署JVM AGENT,AGENT自动对微服务常用组件切面,如HTTP、TREAD、JDBC、KAFKA等;2、AGENT通过不同的组件,对业务组件实现调用链监控、流量回放、故障注入、资源使用情况监控;3、CAST平台组织测试逻辑,对微服务进行流量注入与故障注入,在完成测试后,
5、对微服务资源状态进行分析,输出评估报告,并针对问题给出修复建议。基于字节码增强的非侵入微服务健壮性评估关键能力(热插拔)Sermant提供底座&插件动态插拔能力,健壮性评估按需启用&卸载各能力组件被测微服务AGENT调用链组件流量组件武器组件HTTPTHREADJDBCKAFKA监控组件。被测微服务AGENT调用链组件流量组件武器组件HTTPTHREADJDBCKAFKA监控组件。被测微服务AGENT调用链组件流量组件武器组件ClassFUC-AJDBCKAFKA监控组件。关键实现点:1、Sermant依赖JVM提供的动态插桩能力进行动态字节码植入,为微服务创建切面,健壮性评估时向微服务动态挂
6、载,评估后可热卸载。2、依赖插件化架构,利用JVM 重转换&重定义等特性为不同可靠性能力组件进行动态插拔,可做到按需启用。Class字节码CAST1.attach加载SermantJVMClass2.reTransformClassFUC-ABEFOREAFTER基于字节码增强的非侵入微服务健壮性评估流量录制Ioias微服务入口流量,用于流量回放Ioias微服务依赖,用于回放MOCK故障注入依据,按微服务使用的组件挑选故障关键实现点:1、JVM Agent对微服务关键组件进行监控,把监控到的组件调用以调用链的方式呈现出来;2、微服务入口调用作为流量回归参