《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、微服务入口调用作为流量回归参考,微服务对组件调用作为MOCK和故障注
7、入参考;基于字节码增强的非侵入微服务健壮性评估故障武器库HTTPMONGOJDBCREDISKAFKA核心方法HttpServlet service过滤条件微服务组件返回响应不匹配匹配HTTP方法过滤URI过滤抛异常错误响应超时、高时延触发概率外部API接口调用类微服务HTTP无响应HTTP抛异常HTTP异常响应数据处理类微服务数据库慢操作REDIS命中低链路池无资源数据流转类微服务数据生产UNACKACK高时延链路池无资源将武器打包成不同的模式库负向改进、持续积累基于字节码增强的非侵入微服务健壮性评估健壮性判断基于字节码增强的非侵入微服务健壮性评估自动化方案微服务入口流量微服务MOCK微服务
8、组件故障云服务环境微服务A工作负载A微服务B工作负载B微服务C工作负载C微服务A工作负载A-1微服务A新需求功能测试关键实现点:1、微服务完成新需求功能开发后,把功能测试环节的流量录制下来;2、根据调用链数据,可生成包含微服务入口流量、微服务MOCK、组件故障武器的健壮性评估方案;3、CAST在云服务环境灰度出新工作负载,在此实例上实施健壮性评估。使用此方案可解决回放过程中,异常流程无调用链信息可参考的问题。基于字节码增强的非侵入微服务健壮性评估基于故障模式库批量生成自动化故障模式武器清单故障时长故障范围(单实例/多实例)微服务入口流量调用组件华为云混沌工程服务故障武器库:华为CFE故障注入组
9、件,支持20+场景、200+故障模式组件故障演练报告与大屏:按照应用和实验维度对故障感知、故障定界和业务恢复进行量化评估。提供完整的执行记录、评测报告和演练大屏。应用纳管探针一键部署执行记录故障演练混沌实验编排评估报告故障武器库演练大屏丰富的故障模式资产库和故障注入武器库基于终端云、华为云、车云等混沌工程锤炼和经验积累形成故障模式核心资产和武器库能力外溢:l 故障模式:网上问题、业界事件、测试验证逆向积累、正向设计分析l 故障武器库:覆盖基础设施、中间件、数据库和应用、接口等,支持虚拟机、K8s、以及跨云跨DC场景基于Chaos理论的可控随机测试方法随机时间、随机对象、随机故障模式注入的可控随
10、机测试方法:l 稳态定义l 混沌实验场景模板l 混沌编排随机策略l 故障注入防护策略l 永远在线持续混沌l 自动采集、追踪、监控和结果自动化断言基于华为云全场景混沌工程能力基于华为云稳态流量、拨测探活、全流程监控的全场景混沌工程,提升系统多活高可用能力:l CPTS稳态流量l EchoTest业务拨测l AOM资源监控l APM应用监控l 可靠性测试量化评估报告华为云混沌工程服务CAST 2022.11月已经开始邀测,计划2023.5.30开启公测。展望未来持继积累、厚积薄发通过AI学习录制流量,应对更多流程分支回放,提升回放成功率MaybeCASTGPT基于语言大模型,学习历史问题安例,自动补充模式库,故障场景覆盖更完善,根据微服务流量,自动推荐测试模式库基于语言大模型,给出更精准的微服务健壮性评估结论学习标杆韧性架构,结合智能评估,给出架构优化建议THANKS谢 谢