【灯塔计划】【积微成著】规模化混沌工程体系建设及AI融合探索

京东云开发者
• 阅读 14

作者:京东物流 刘锐

1、何谓混沌工程?

混沌工程由 Netflix 率先提出并应用,其业务高度依赖分布式系统,为确保系统在面对各种故障时仍能稳定运行,其组织开发了混沌工程工具集 ——Chaos Monkey 等,通过随机地关闭生产环境中的服务器来验证系统弹性。

混沌工程是一种在分布式系统上进行实验的方法,目的是提升系统的弹性和稳定性。它通过主动向系统注入故障,观察系统在各种压力情况下的行为,以发现系统中的潜在问题并加以改进。

2、混沌工程实验的核心原则

a、建立稳定性指标

建立系统稳定性指标,是观测混沌工程实验效果的关键手段。在混沌工程启动前,必须明确系统稳定性状态的定义,稳定性状态可以是系统的技术指标、业务指标或用户体验指标等。例如,系统TP99指标范围、可用率指标范围、页面响应时间范围、订单处理成功率范围等。

b、多样化故障注入

多样化的故障注入,是验证系统故障应急能力的前提。混沌工程应尽可能模拟真实世界中可能发生的各种故障或异常情况。包括不限于,硬件故障、软件故障、网络故障、人为错误等。例如,服务器宕机、网络延迟、数据库故障、配置错误等。

c、生产环境接纳度

生产环境对演练实验的接纳度,是确保故障演练实验精度和有效性的基础要素。混沌工程实验最好在生产环境中进行,因为生产环境是最真实的系统运行环境,能够反映出系统在实际使用中的各种情况。当然,在生产环境中进行实验务必谨慎操作,确保实验不会对生产运营及用户造成不良影响。

d、常态化运转

混沌工程实验的常态化运转,是确保系统健壮性得以持续巩固的基础。混沌工程实验应该持续自动化运行,以便及时发现系统中的潜在问题。自动化实验可以定期进行,也可以在系统发生变化时进行。通过持续自动化运行实验,可以不断提高系统的弹性和稳定性。

3、混沌工程实验的关键步骤及落地

快递快运技术部,自2024年11月起,针对分拣拣揽派及C端、B端核心业务线,0-1落地研测联动红蓝攻防机制,完成共两轮,87个核心接口架构分析,覆盖31个核心应用(79个场景),识别拦截5类36处风险(监控、流程、代码、预案、依赖),持续巩固快快应急预案体系,在此基础上,25年持续推动演练线上化实践、成熟度评估体系建设、落地及能力升维。

a、实验范围圈定

通过对核心系统的架构分析,梳理系统链路的关键指标(系统规模、SLA及限流指数等)和关键依赖(应用、存储及其他中间件),明确要进行实验的系统或服务范围,标记故障注入点。

实验范围可以是一个或多个单体应用、某个业务场景下的应用链路、某个数据中心或整个分布式系统。

b、稳定性指标定义

定义明确的稳定性指标,用以衡量系统在实验过程中的状态,稳定性指标可以是技术监控指标、业务监控指标或用户体验指标等。

1)技术监控指标

技术监控指标,一般从技术视角监控系统稳定性,通常分为几个维度监控。

指标名称 指标描述
UMP(JD术语) 监控方法调用的TP99,响应时间等
日志异常关键字 监控日志中的,有无异常关键字,报错信息等
容器指标监控 监控CPU,数据库等使用情况是否有异常
调用链监控 监控整个上下游调用链路,是否有可用率下降等问题
JVM监控 监控内存,线程等使用情况

2)业务监控指标

业务监控指标,是整个监控体系的“顶层”,能够直接反映用户使用业务的真实情况。在快递快运分拣业务域,体现如下(例如,发货环节,设置【发货环节成功率】作为监控指标,通过配置规则:当前时间的发货成功数据与上周同比下降超过30%,如果5分钟内连续出现3次告警,则触发严重级别的告警)。

【灯塔计划】【积微成著】规模化混沌工程体系建设及AI融合探索

c、实验场景构建

根据系统的架构及技术特点,以及可能出现的故障情况,参考设计各种实验场景。实验场景应该尽可能地模拟真实世界中可能发生的各种故障和异常情况(可参考 历史存量线上故障)。

故障分类 描述
服务器硬件故障 模拟服务器 CPU、内存、硬盘等硬件组件故障。例如,通过设置硬件监控软件模拟 CPU 使用率瞬间达到 100%,或模拟内存出现坏块导致部分内存无法正常读写,又或者模拟硬盘空间满溢,影响应用数据存储和读取
网络设备故障 包括网络交换机、路由器故障。如设置网络交换机某个端口故障,造成部分服务器网络连接中断;模拟路由器丢包,导致应用网络通信延迟或数据传输错误
操作系统故障 如操作系统内核崩溃、系统资源耗尽(如文件描述符用尽)。可通过编写脚本消耗系统资源,触发文件描述符不足的情况,观察应用在这种操作系统故障下的表现
应用程序自身故障 例如代码逻辑错误导致空指针异常、内存泄漏、死锁等。可以在应用代码中特定位置人为插入引发空指针异常的代码片段,进行局部模拟;对于内存泄漏,可通过工具模拟对象未正确释放内存的情况;通过编写存在竞争条件的代码模拟死锁场景
中间件故障 若应用使用数据库中间件、消息队列中间件等,可模拟中间件故障。比如数据库中间件连接池耗尽,导致应用无法获取数据库连接;消息队列中间件消息堆积、消息丢失等。以数据库中间件为例,可通过修改配置参数,限制连接池大小,快速创建大量数据库连接请求,使连接池耗尽
高并发压力 利用性能测试工具模拟大量用户同时访问应用,造成系统负载过高。例如,使用 JMeter 模拟每秒数千个并发请求,测试应用在高并发场景下的稳定性和故障应对能力
环境变量错误 修改应用运行所需的环境变量,如配置错误的数据库连接字符串、错误的系统路径等,观察应用能否正确识别并处理这些错误

1)一般场景构建

①CPU使用率(单个故障场景样例及核心参数解释)

•演练目的:CPU混沌实验用于在主机模拟CPU负载情况,通过抢占CPU资源,模拟CPU在特定负载情况下,验证其对服务质量、监控告警、流量调度、弹性伸缩等应用能力的影响。

•核心参数解释

◦使用率:根据研发配置的MDC告警阈值决定(例:研发配置60%。80%-90%)

◦抢占模式:故意运行占用大量 CPU 资源的进程,使得系统的 CPU 使用率飙升,从而观察其他服务和进程在资源竞争下的表现。(勾选代表打开该模式)

◦满载核数:核心满载个数(如果一个系统在正常运行时很少有核心达到满载,但在混沌工程测试中有多个核心持续满载,那么可能表明系统在极端情况下的资源分配存在问题,或者系统并没有正确地平衡负载。)

◦满载核索引:每个 CPU 核心在操作系统中都有一个唯一的索引号,这些索引号通常从 0 开始计数。(例:0,1 / 0-2) 参数优先级:使用率 > 满载核数 > 满载核索引 建议:第一次演练优先使用【使用率】

②更多场景及选型原则:混沌工程-故障演练场景选型及实施说明

2)复杂场景构建

①单应用单故障场景“多参数”组合构建

场景构建说明
构建参数 故障类型
接口参数:请求类型(GET/POST)、数据格式(JSON/XML)、请求体大小(1KB/10KB) 资源耗尽(CPU / 内存)
配置参数:线程池大小(5/10)、超时阈值(1s/5s)、缓存 TTL(30s/60s) 网络异常(延迟 / 丢包)
环境参数:CPU 利用率(50%/80%)、内存占用(60%/90%)、网络延迟(100ms/500ms) 数据异常(错误码 / 空值)
(场景样例)连接库请求延迟&业务的异常流量注入

•场景描述:依据场景构建的基本原则,我们在构建数据库请求延迟的情况前提下,向系统注入带有异常业务数据的流量,以检查应急预案对应的处理能力。

攻击接口 http://xxxxx.forcebot.jdl.com/services/xxxxx/getWaybillChute
攻击步骤 预期结果 结论
10*10个QPS将压测流量灌入(正常流量) 事务成功率100% pass
植入故障,观察(故障占比:80%,A分组5台打挂,B分组3台打挂) 5分钟内触发数据库请求告警,守方报备到备战群 pass
调节压测流量,QPS增加到60*10(值逐步增加) 服务可用率降低,TP99上升 pass
调节压测流量,QPS增加到80*10(值逐步增加) 服务可用率降低,TP99上升 pass
观察到守方通过防守动作止损 较长时间内服务没起来 事务成功率100%,连接数据库请求正常,TP99恢复正常(TCP重传、数据库连接、下线机器、扩容) pass
停止故障任务 集群下所有机器事务成功率100%,CPU使用率60%以下,TP99恢复正常,连接数据库请求正常 pass
停止压测脚本 流量停止灌入 pass

②单应用多故障场景组合构建

•场景构建说明:可参考如下组合方式,构建单应用多故障场景。

组合方式 组合描述
基于故障影响范围组合 局部与全局故障组合:先设置一个局部故障,如某个模块的代码逻辑错误导致该模块功能不可用,同时再设置一个影响全局的故障,如服务器内存耗尽,使整个应用运行缓慢甚至崩溃。这样可以测试应用在局部问题和整体资源危机同时出现时的应对策略
上下游故障组合:如果应用存在上下游依赖关系,模拟上游服务故障(如数据提供方接口异常)与下游服务故障(如数据存储服务不可用)同时发生
基于故障发生时间顺序组合 先后发生故障组合:设定故障按特定顺序出现。比如,先模拟网络短暂中断,导致部分数据传输失败,紧接着由于数据处理异常,引发应用内部的缓存雪崩问题。通过这种顺序组合,测试应用在连锁故障场景下的恢复能力和数据一致性
周期性故障组合:设置周期性出现的故障,如每隔一段时间(如 10 分钟)网络出现一次短暂拥塞,在拥塞期间,同时出现应用程序的内存泄漏问题逐渐加重。这种组合可以观察应用在长期面对周期性故障和持续恶化的内部故障时的表现
基于业务流程关键节点组合 核心业务流程故障组合:针对应用的核心业务流程设置故障。以在线支付流程为例,在用户输入支付信息阶段,模拟输入校验模块出现故障,接受错误格式的支付信息;同时在支付确认阶段,模拟与支付网关通信故障,测试支付流程在多个关键节点故障下的健壮性
业务高峰与故障组合:结合业务使用高峰时段,叠加多种故障。例如,一个视频播放应用在晚上用户观看高峰期,同时出现服务器 CPU 负载过高、视频源文件损坏、CDN 节点故障等多种故障,测试应用在高业务压力和复杂故障环境下能否保障用户基本体验
(场景样例)核心依赖中间件MySQL请求延迟&CPU使用率增加场景

•场景描述:该场景主要在单应用模式下,在数据库和CPU维度,参考故障的一般发生顺序,进行组合注入,并同步观察系统恢复能力。

•实际执行层面,在植入CPU使用率和数据库延迟故障时,预期触发CPU和接口可用利率告警,但实际情况中,CPU告警按预期触发,但接口可用率报警并未触发。

攻击接口 com.jdl.xxxxx.xxxxx.api.gather.xxxxx#queryWayGather
攻击步骤 预期结果 结论
20个QPS将流量灌入对应机器(接口单机线上最大QPS 66) 事务成功率100% pass
植入故障1【cpu 使用率70%+MYSQL延迟2000ms】 期望:触发cpu告警,触发接口可用率告警 fail
观察到守方通过防守动作止损 事务成功率100%,CPU使用率60%以下,TP99恢复正常 pass
植入故障2【针对扩容新增机器 植入cpu 使用率70%】 新机器持续cpu告警,持续扩容,保证分组下集群数量 pass
观察到守方通过防守动作止损 集群下所有机器事务成功率100%,CPU使用率60%以下,TP99恢复正常 pass
调节压测流量,QPS增加到1980(线上峰值3倍) 服务可用率降低,CPU使用率持续增加,TP99上升 触发方法调用次数告警 pass
停止压测脚本 流量停止灌入 pass

③多应用多故障场景组合构建

场景构建说明:多应用多故障场景的构建,可基于单应用单故障的场景进行组合,可参考如下组合方式。目前针对该类型场景还未进行覆盖,后续基于上下游系统的架构分析和调用关系,进行组合。如应用A调用应用B,在给应用A植入故障的同时,B应用也进行故障植入。

组合方式 组合描述
基于业务流程的组合 串联业务流程故障组合:业务场景 A发生一个故障,同时业务场景B也发生也一个故障,同时 A和B 是不同应用,业务流程串联
并发业务流程故障组合:业务场景 A发生一个故障,同时业务场景B也发生也一个故障,同时 A和B 是不同应用,业务流程并发
基于故障影响范围的组合 局部与全局故障组合:局部故障可以是某个内部使用的特定应用出现功能故障,全局故障则可以是影响整个企业的网络故障或核心数据库故障
关键与非关键应用故障组合 设置故障场景为核心业务系统出现数据库连接池耗尽的故障,非核心应用发生另一个故障
基于故障发生时间顺序的组合 先后发生故障组合:先设置一个应用的故障,待其产生一定影响后,再触发另一个应用的故障
周期性故障组合:设置某些故障周期性出现,如每隔一段时间(如每天凌晨)出现故障A,同时,在每周的特定时间段(如周五下午业务高峰时段)出现故障B,组合参考



3)计划外场景构建

故障演练计划外场景通常是指在没有预先计划或通知的情况下,模拟系统或服务出现故障的情境,以测试和提高系统的可靠性和团队的应急响应能力。其主要特点包括:突发性、真实感、压力测试、团队协作。以下是在研发毫无防备的情况,进行的一次突袭式的故障演练例子:

混沌工程与传统的故障引入测试,在注入场景和工具使用方面存在重叠。故障注入测试,是混沌工程实验的一种验证策略。 其本质区别,是思维方式的差异 ,故障注人测试是通过已知故障和应急预案,确认系统对已知风险的承载能力。而混沌工程,是通过构造诸如应急预案范围外的故障场景,确认系统对未知风险的承载能力。

(场景样例)JAVA进程线程池满(未在演练剧本内的故障,观察系统应急能力)

通常在剧本评审阶段,测试团队会与架构团队完成全量场景评估,同时会提取部分场景,在约定演练时间计划外执行,研发团队对此类故障的执行计划不知情,以此强化验证其应急处理能力。

例如:在某计划外场景演练过程中,发现2个问题,①当植入JAVA进程线程池满的故障时,预期触发CPU告警,研发团队并未第一时间同步报备。②在故障停止时,预期所有机器及事务恢复正常,并由研发接口人报备同步恢复信息,但研发团队并未第一时间同步报备。

由此可见,计划外的场景,在识别系统应急能力之外,可更多反映研发团队,在故障处理过程中的组织协同能力。

演练执行
攻击接口 com.jdl.xxxxx.resource.api.message.xxxxx#isNeedVerificationCode
攻击步骤 预期结果 结论
1个QPS将流量灌入对应机器 事务成功率100% pass
植入JAVA进程线程池满故障,观察 10分钟内触发CPU使用率告警,守方报备到备战群,业务全部失败 fail
故障生效后立即调节压测流量,QPS增加到10笔/s(日常量) 服务可用率降低,CPU使用率持续增加,TP99上升 pass
观察到守方通过防守动作止损 集群下所有机器事务成功率100%,CPU使用率60%以下,TP99恢复正常 pass
停止故障任务 集群下所有机器事务成功率100%,CPU使用率60%以下,TP99恢复正常 fail
停止压测脚本 流量停止灌入 pass



4)流量冲击融合场景构建

•系统在故障发生时,例如,C端用户在响应卡滞情况下,如系统未给予明确的故障提示、降级方案或恢复预期,往往会通过重复操作,确认系统恢复进展,请求量存在倍增可能。

•后端平台类系统对接,请求方往往会通过自动重试,尝试重建成功请求,同时在长链路业务场景下,如链路各应用重试策略未统一,请求量存在倍增可能。以上,在故障恢复过程中,已部分恢复的服务,大概率会被倍增流量快速击溃,造成系统可用性雪崩。有必要通过融合流量冲击场景的混沌实验,确认系统的极端风险承载能力。

(场景样例)应用CPU满载混合单机流量激增

•场景描述:在CPU满载的情况下,模拟接口流量激增。首先植入CPU满载,再调节注入流量,观察整个处理过程。

演练执行
攻击接口 整个应用
攻击步骤 预期结果 结论
小流量注入 事务成功率100% pass
植入故障CPU占用率80%,植入比例:70%,观察 CPU满载,5分钟内触发CPU使用率告警,守方报备到备战群 pass
调节压测流量,单机QPS增加到1倍压测流量(梯度),单机CPU占有率>60% CPU使用率持续增加,TP99上升 pass
调节压测流量,单机QPS增加到2倍压测流量(梯度),单机CPU占有率>80% CPU使用率持续增加,TP99上升 pass
观察到守方通过防守动作止损 事务成功率100%,CPU使用率60%以下,TP99恢复正常 pass
观察到守方通过防守动作止损 集群下所有机器事务成功率100%,CPU使用率60%以下,TP99恢复正常 pass
停止故障任务 集群下所有机器事务成功率100%,CPU使用率60%以下,TP99恢复正常 pass
停止压测脚本 流量停止注入 pass

d、实验剧本构建

1)剧本设计详解

故障注入过程,尤其是在生产或准生产环境实验,未经评估的故障场景,极易造成线上生产异动,对实验方案的严谨性以及人员的专业性,提出了更高的要求。实验剧本构建主要包括以下几个要素。

剧本构建核心要素 关键事项 准入标准 准出标准
明确实验目标 · 定义实验目的:识别实验的核心目的,例如提高系统的弹性、验证故障处理机制、评估服务降级策略等。 ·选择关键性能指标(KPIs):确定用于评估实验结果的关键性能指标,如系统的响应时间、可用性、吞吐量、错误率等。 ·设定具体目标:制定具体的、可衡量的目标。例如,“在网络延迟增加的情况下,系统响应时间不超过2秒”。 ·业务影响考量:确保实验目标与业务目标相一致,评估实验对业务连续性和用户体验的潜在影响。 ·团队准备:确保参与实验的团队成员了解实验目的、流程和应急响应计划。 ·确保业务影响最小化:制定策略,确保实验不会对关键业务功能造成重大影响。可以通过选择非高峰时段进行实验或在实验前进行业务影响评估。 ·风险识别:系统地识别实验可能带来的所有潜在风险,包括对系统稳定性、数据完整性和业务连续性的影响。 ·设定实验范围和条件:明确实验的范围(例如哪些服务或组件会受到影响)和条件(例如故障的持续时间、强度等)。
选择故障场景 ·识别潜在故障:通过对系统架构、依赖关系和历史故障记录的分析,识别潜在的故障类型。包括网络延迟、服务宕机、资源耗尽、数据库故障、磁盘故障,超时、服务不存活等。 ·优先级排序:根据故障对业务的影响程度进行排序。优先选择那些对关键业务流程影响较大的故障;考虑故障发生的可能性,优先演练那些较高概率发生的故障。 ·场景细化:将故障场景具体化,包括故障的触发条件、影响范围和预期结果;考虑组合多个故障场景,模拟复杂环境下的系统行为。 ·场景验证:确保所选故障场景经过验证,可以在实验环境中安全地注入和控制。 ·团队准备:团队成员应了解故障场景的细节、实验步骤和应急响应计划。 ·审批流程:实验需要获得相关方的批准,特别是涉及到关键业务系统时。 ·可行性完成:评估故障场景的实施难度,包括技术可行性和资源需求,确保实验能够在现有条件下顺利进行。 ·影响评估完成:预估故障场景可能对系统和用户造成的影响,并确保其在可控范围内,避免对生产环境造成严重影响。
设计实验方案 ·场景描述:详细描述每个故障场景,包括故障类型、注入方式和预期影响。 ·步骤规划:制定实验的具体步骤,包括故障注入的时间、地点和方式。 ·成功标准:定义实验的成功标准,即在故障条件下系统应达到的性能水平。 ·风险评估:完成对实验的风险评估,识别可能的风险和影响,并制定相应的缓解措施。 ·团队准备:团队成员已接受必要的培训,了解实验步骤、应急响应计划和沟通渠道。 ·沟通计划:确保所有相关方已被告知实验的时间、范围和可能的影响,并制定沟通计划以便在实验过程中及时更新信息。 ·方案风险评估完成:评估实验对系统和用户的实际影响,确保实验没有导致不可接受的中断或损害。
风险评估与应急预案 ·风险识别:识别实验可能带来的风险,包括对系统稳定性和业务运营的影响。 ·应急预案:制定缓解措施,如快速回滚计划和应急响应方案。 ·风险识别:系统地识别实验可能带来的所有潜在风险,包括对系统稳定性、数据完整性和业务连续性的影响。 ·应急响应计划:制定详细的应急响应计划,明确角色和责任,以便在实验过程中快速响应任何突发问题。 ·审批和沟通:风险评估报告和缓解计划需要获得相关方的审核和批准。确保所有相关方都了解可能的风险和缓解措施。 ·风险评估完成:完成对实验风险的评估,并制定相应的应急预案。
实验环境准备 ·环境搭建:准备实验环境,确保其与生产环境尽可能相似,以提高实验结果的可靠性。 ·工具配置:配置必要的故障注入和监控工具,确保能够实时收集和分析数据。 ·环境验证:验证实验环境的准备情况,包括配置、数据和工具的可用性。 ·沟通确认:确认所有相关方(如开发、运维、业务团队)已收到实验通知并同意进行实验。 ·环境隔离:确保实验环境与生产环境适当隔离(成熟度高的可以不隔离),以避免实验对生产系统造成不必要的影响。 ·环境一致性:验证实验环境的配置与生产环境尽可能一致,包括硬件、软件版本、网络配置等,以确保实验结果的可用性和相关性。 ·资源可用性:确保实验所需的所有资源(如计算资源、存储、网络带宽)已准备就绪,并能够支持实验的顺利进行。
实验执行与数据分析 ·实时监控:在实验过程中,实时监控系统状态和关键指标,确保能够快速识别和响应异常情况。 ·故障注入:按照实验方案注入故障,观察系统的反应。 ·数据收集:收集实验期间的所有相关数据,包括日志、监控指标和用户反馈。 ·结果分析:分析实验结果,评估系统在故障条件下的表现,并识别改进机会。 ·风险评估完成:确保已进行全面的风险评估,识别潜在风险,并制定相应的缓解措施。 ·团队准备就绪:所有相关团队(如开发、运维、安全)已准备好,并了解各自的职责和应对措施。 ·应急计划确认:确保应急计划已制定并经过验证,所有团队成员都清楚如何在紧急情况下快速恢复系统。 ·环境验证:实验环境已被验证为与生产环境相似,并且所有必要的工具和配置已准备就绪。 ·沟通与批准:获得所有相关方(包括管理层和业务团队)的批准,确保他们了解实验计划和可能的影响。 ·监控和日志系统在线:确保监控和日志系统正常运行,以便实时追踪实验过程中系统的状态和行为。 ·实验结果评估:对照预定的成功标准评估实验结果,确保实验目标已实现。 ·系统恢复确认:确保系统已恢复到正常运行状态,所有故障注入的影响已完全消除。 ·数据完整性验证:检查实验期间的数据完整性,确保没有数据丢失或损坏。 ·报告生成:生成详细的实验报告,包括实验过程、结果、发现的问题和改进建议。 ·经验总结与分享:召开经验总结会议,分享实验中的经验教训,并更新相关的操作文档和策略。 ·后续行动计划:确定并记录需要改进的领域和后续行动计划,以提升系统的弹性和可靠性。
复盘与成熟度评估 ·报告撰写:撰写详细的实验报告,记录实验过程、结果和发现的问题。 ·改进计划:根据实验结果制定系统改进计划,并计划后续步骤。 ·知识共享:将实验结果和经验教训分享给相关团队,促进组织内部的知识积累。 ·复盘会议:召开复盘会议,讨论实验中的亮点和不足,优化未来的实验流程。 ·成熟度改进:评估被演练系统服务成熟度。 ·数据完整性:确保所有相关数据和日志已收集完毕,并且数据质量足以支持有效分析。 ·参与者准备:确保所有关键参与者(如开发、运维、安全团队成员)已准备好参与复盘会议,并了解实验的背景和结果。 ·目标明确:复盘的目标和预期成果已明确,并传达给所有参与者 ·成熟度评估:已完成对当前混沌工程实践的成熟度评估,识别出需要改进的领域。 ·问题识别与分析:已识别并分析实验中的所有关键问题和挑战。 ·成功与不足记录:记录实验中的成功经验和不足之处,并分析其原因。 ·改进措施制定:制定具体的改进措施和后续行动计划,并获得相关方的认可。 ·文档更新:更新相关文档,包括操作手册、实验报告和改进计划。 ·经验分享:将复盘结果和经验分享给更广泛的团队或组织,以促进知识共享。

2)剧本构建样例

故障演练方案-快递快运-分拣条线-2024年12月

e、工具选型

1)工具选型原则

①功能特性

•复杂场景构建:对于复杂的分布式系统,尤其是包含多种技术栈(如同时有微服务、数据库、消息队列等)的系统,需要选择能够模拟多种故障类型的工具,以更全面地测试系统的弹性。

•实验场景定制化:混沌工程工具应该允许用户根据自己的系统特点和需求定制实验场景,提供丰富的实验模板,并可通过修改这些模板或编写自己的实验脚本来定制实验。这种灵活性使得用户能够模拟特定的业务场景下可能出现的故障,如模拟电商系统在购物高峰期时数据库查询缓慢的情况。

•系统集成能力:实验工具需要能够与企业现有的系统和工具集成,如监控系统、日志系统等。通过插件或者 API 的方式实现与其他系统的集成,增强工具的实用性。

②环境适配

•容器化基础设施兼容性:随着容器技术和 Kubernetes 的广泛应用,混沌工程工具需要加强对以上基础环境的支持,更充分地兼容 Kubernetes(Pod、Deployment、Service 等),并进行有效的故障注入。

•云平台兼容性:对于部署在云平台(如 京东云、阿里云、腾讯云、华为云、百度云、GCP、IBM Cloud、Oracle Cloud、AWS、Azure、Ali 等)上的系统,需要考虑工具是否与这些云平台兼容,是否能够提供针对特定云平台的故障模拟功能,。例如,AWS S3 存储桶故障、Azure 虚拟机故障等特定故障情况,以适应云环境下的实验需求。

•跨平台支持:对于同时在多种操作系统(如 Linux、Windows、Android、IOS、MacOS 等)和硬件架构(如 x86、ARM)上运行的系统,确保所选工具能够在所有相关平台上正常工作,避免出现因平台差异导致实验无法进行的情况。

③易用性和学习成本

用户界面友好程度

◦直观、易于操作的用户界面可以降低用户的学习成本和操作难度。例如,Gremlin 有一个相对直观的 Web 界面,用户可以通过简单的操作(如选择故障类型、目标系统等)来设置和启动实验。对于非技术人员或者刚接触混沌工程的团队成员来说,这样的界面更容易上手。

文档和社区支持

◦完善的文档和活跃的社区可以帮助用户更快地学习和使用工具。工具的官方文档应该包括详细的安装指南、实验设置说明、故障模拟类型介绍等内容。同时,一个活跃的社区可以让用户分享经验、解决问题,例如在开源的混沌工程工具社区中,用户可以找到其他使用者分享的自定义实验场景案例,帮助自己更好地开展实验。

④安全性和可靠性

实验风险控制

◦混沌工程工具在进行故障注入时可能会对生产系统造成一定的风险,因此需要选择能够有效控制实验风险的工具。一些工具提供了诸如 “安全模式” 或 “沙箱模式” 的功能,在这些模式下,故障注入的强度和范围可以得到限制,并且可以提前设置好终止实验的条件,以确保在系统出现异常时能够及时停止实验,避免对生产系统造成严重破坏。

工具自身的可靠性

◦工具本身应该是可靠的,不会因为自身的故障而导致实验结果不准确或者对系统造成额外的干扰。可以查看工具的版本更新记录、用户评价等信息来了解工具的可靠性情况。例如,经过多个企业长时间使用且更新频繁的工具,通常在可靠性方面有更好的保障。

2)业界混沌工程解决方案

在混沌工程实践里,通过模拟各类故障场景,像是模拟服务器崩溃、制造网络延迟,或是触发数据丢失状况等方式,能够极为精准地挖掘出系统中潜藏的薄弱环节。目前,市面上既有开源性质的解决方案,也不乏商业化的专业工具。接下来,我们将着重对京东(JD)的混沌解决方案,以及其他具有代表性的开源方案展开详细介绍。

①JD泰山混沌工程平台(快快技术-首选解决方案平台)

简介: 是一款遵循混沌工程原理和混沌实验模型的实验注入工具,帮助用户检验系统高可用、提升分布式系统的容错能力,平台使用简单、调度安全。是基于 ChaosBlade 底座进行打造,并增加了JIMDB、JSF、JED等中间件类故障场景,让大家可以精细地控制演练影响范围(爆炸半径)。

特点: 支持多种类型的故障,如基础资源故障:CPU、 内存、网络、磁盘、进程;Java进程故障:进程内CPU满载、内存溢出、类方法延迟/抛异常/篡改返回值、MYSQL请求故障、JIMDB请求故障、JSF请求故障;JED集群故障:集群分片主从切换、集群分片节点重启

适用场景: 适用于复杂分布式系统和微服务架构中的故障模拟,另外针对JD特有的服务可支持故障植入。

②业界工具平台及能力对标

平台/能力 特点 适用场景
云原生计算基金会托管项目,专注于 Kubernetes 环境中进行混沌工程实践,可编排多种混沌实验 ·支持多种类型的故障注入,如 Pod 故障、网络故障、文件系统故障、时间故障、压力故障等 ·提供了直观的 Web 界面 ChaosDashboard,方便用户管理、设计和监控混沌实验 适用于云原生架构下的系统,帮助开发人员、运维人员在 Kubernetes 环境中测试应用程序和基础设施的可靠性与稳定性,如基础资源故障,Java应用故障等
Kubernetes 原生的混沌工程开源平台,以其强大的故障创建与编排能力著称 ·拥有故障注入实验市场 ChaosHub,提供大量可定制的实验模板,支持多种故障注入类型,涵盖通用、各大云平台及 Spring Boot 等多种场景 ·可与 Prometheus 等可观测性工具原生集成,方便监控故障注入实验的影响 适用于不同技术背景的团队,在 Kubernetes 环境中进行混沌工程实践,帮助识别系统中的弱点和潜在停机隐患。如可模拟存储故障,CICD管道层面故障等
阿里巴巴开源的混沌工程工具,可针对主机基础资源、容器、Kubernetes 平台、Java 应用、C++ 应用、阿里云平台及其他服务等多达 7 个场景开展故障注入实验 ·支持在多种环境中进行故障注入,能够模拟各种复杂的故障场景,如 CPU 满载、内存泄漏、网络延迟等资源层面的故障,还能深入到应用层对特定方法进行故障注入 ·具有易用性和灵活性,通过简单的 CLI 命令行工具进行故障注入 ·支持动态加载和无侵入式的实验设计 适用于复杂分布式系统和微服务架构中的故障模拟,帮助团队提前发现系统中的薄弱环节。能够模拟一些中间件的故障,如云原生故障等
轻量级、灵活且易于集成的混沌工程工具,允许用户以声明式的方式定义各种故障注入场景 ·支持使用 YAML 文件定义混沌实验,内置多种故障模型,如 Pod Kill、Network Latency、Disk IO Stress 等 ·深度集成 Kubernetes,提供友好的 Web 界面和 RESTful API,方便操作与集成 适用于开发者和运维人员在 Kubernetes 环境中进行混沌工程实验,可作为新功能上线前的测试、持续集成 / 持续交付流程的一部分,以及故障恢复训练等
功能全面的混沌工程工具,提供了直观的 Web 界面,可模拟多种故障场景,包括服务器故障、网络延迟、丢包、数据库故障、容器故障等 ·具备强大的故障模拟能力和灵活的实验配置选项,可与多种监控和日志工具集成,方便用户在实验过程中观察系统的状态变化 ·提供了 “安全模式” 或 “沙箱模式” 等风险控制功能,确保实验的安全性 适用于各种规模和架构的分布式系统,帮助企业提升系统的弹性和稳定性,尤其适合对安全性和风险控制要求较高的生产环境
亚马逊推出的混沌工程工具,专门用于在 AWS 云平台上进行故障注入实验 ·可模拟 AWS 云服务的各种故障情况,如 EC2 实例故障、S3 存储桶故障、RDS 数据库故障等 ·与 AWS 的其他服务和工具集成紧密,方便用户在云环境中进行全面的系统测试 适用于使用 AWS 云平台的企业和开发者,帮助他们在云环境中评估系统的可靠性和弹性,确保应用程序能够在 AWS 云服务出现故障时正常运行



f、执行实验

1)系统架构分析

①架构分析的必要性

系统级架构分析,是所有稳定性保障工作开展的首要条件。通过对系统机构的充分理解和分析,才能准确识别故障演练的切入点(可能的弱点),以下,是系统架构分析的必要环节和目的。

②识别关键组件和依赖关系

系统架构分析帮助识别系统中关键的组件和服务,以及它们之间的依赖关系。这有助于确定哪些部分对系统的整体功能至关重要,并需要优先进行故障演练。

③理解数据流和通信路径

分析架构可以揭示数据在系统内的流动路径和通信模式。这有助于设计针对网络延迟、带宽限制或通信中断的故障演练。

④识别单点故障

系统架构分析可以帮助识别系统中的单点故障,这些是可能导致整个系统崩溃的薄弱环节。通过故障演练,可以测试这些点的冗余性和故障恢复能力。

⑤优化故障演练设计

了解系统架构可以帮助设计更加真实和有针对性的故障场景,从而提高故障演练的有效性和相关性。

⑥评估故障影响范围

系统架构分析可以帮助预测故障可能影响的范围和程度,从而为故障演练设定合理的范围和目标。

⑦加强团队的协作与沟通

通过架构分析,团队成员可以更好地理解系统的整体设计和各自的角色。这有助于在故障演练中提高团队的响应能力和协作效率。

⑧支持持续改进

架构分析提供了一个基准,用于在故障演练后评估系统的改进效果。通过反复的分析和演练,可以不断优化系统架构,提高系统的弹性。



总之,系统架构分析是故障演练的基础,它确保演练的设计和实施是有针对性的,并能有效地提高系统的可靠性和稳定性。



2)架构分析案例

①架构分析要求

•梳理系统全局架构图,标注演练(压测同理)入口。

•梳理演练(压测同理)接口调用架构图,标识调用链路强弱依赖、调用层级关系以及演练(压测同理)切入点。

•沉淀调用链路信息文档。

(图例)系统总架构图

【灯塔计划】【积微成著】规模化混沌工程体系建设及AI融合探索



(图例)单接口调用架构图

【灯塔计划】【积微成著】规模化混沌工程体系建设及AI融合探索

②调用链梳理文档(样例): 快快接口梳理(常态化演练)

3)实验方案

在生产环境或测试环境中执行实验,观察系统在各种故障情况下的行为。在执行实验过程中,应严格遵照剧本要求明确分工及实验步骤,密切关注系统的稳定状态指标,确保实验不会对用户造成不良影响。故障演练剧本

①方案样例

实验方案实施过程中,应严格按照分工和剧本执行,第一时间留存关键证据,记录关键步骤结论。

g、结果分析

•对实验结果进行分析,找出系统中的潜在问题和薄弱环节。分析实验结果可以使用数据分析工具、监控工具或日志分析工具等。针对实验结果总结经验并后续做针对性改进。

•样例:如针对某一个应用,演练完成之后,会从以下维度评估,并总结经验。

应用: workbench-xxxxx-backend-xxxxx

故障场景: 强依赖JSF超时不可用+弱依赖JSF超时不可用

故障时间:2025-01-02 21:14:38 ~ 2025-01-02 21:35:00

问题现象

▪下游强依赖接口(计费系统)持续响应3S,TP99飚高,可用率未下降,仍100%

▪从植入故障到引起监控报警,间隔13min,该接口性能告警配置建议调整时间(现状:5次/分钟超过配置的阈值则报警,并在10分钟内不重复报警)

问题原因

▪针对强依赖接口,下游超时未上报可用率下降

▪告警时间配置10min,告警配置不敏感

改进措施

▪针对强依赖接口,下游超时上报可用率下降

▪更改UMP告警配置,更改为5min告警1次



h、问题修复及重复实验

•根据实验结果,修复系统中的潜在问题和薄弱环节。之后重复进行实验,以验证修复效果并进一步提高系统的弹性和稳定性。

•目前快快技术团队,在演练过程中,关键问题修复之后,会针对性进行二次验证。



i、成熟度评估

1)什么是混沌工程成熟度模型

混沌工程成熟度模型是一种框架,用于评估和指导组织在实施混沌工程实践中的发展阶段和成熟度。这个模型帮助组织理解它们在混沌工程实践中的位置,并为进一步改进提供路线图。

通常,混沌工程成熟度模型会分为几个阶段,每个阶段代表不同的能力和实践水平,通常包括初始阶段、基础阶段(初级)、标准化阶段(发展中)、优化阶段(成熟)、创新阶段(卓越)。

混沌工程成熟度模型的演变可以帮助组织系统化地实施混沌实验,并逐步提高其混沌工程实践的成熟度。通过系统化的成熟度评估,组织可以更有效地实施混沌工程实践,提升其整体系统的稳健性和响应能力。

混沌工程成熟度模型的演变反映了组织在复杂系统环境中不断追求更高弹性和可靠性的努力,结合业内对成熟度模型理解和京东实际情况,对成熟度框架进行剪裁(去掉接纳度维度和初始阶段),剪裁后的成熟度框架如下。

成熟度等级 1级(初级) 2级(发展中) 3级(成熟) 4级(卓越)
架构抵御故障的能力(系统维度) 一定冗余 统中存在备份或多个实例,以防单点故障。在硬件层面,可以有多个服务器或数据中心;在软件层面,可以有多个服务实例或数据库副本。(多机房无单点) 冗余且可扩展 除了具备一定的冗余之外,系统还应该能够根据需求进行水平或垂直扩展。水平扩展是指增加更多的服务器或实例,垂直扩展是指升级现有服务器的硬件配置。可扩展性允许系统在面临高负载或增长时继续提供服务。 已使用可避免级联故障技术 级联故障是指一个故障导致一系列其他故障的连锁反应。为了避免这种情况,可以使用技术如熔断(Circuit Breaker)、隔离(Bulkhead)和限流(Rate Limiting)。(垂直部署) 已实现韧性架构 韧性架构是指系统在面临异常情况(如高负载、网络中断或硬件故障)时仍能保持一定的功能和性能。实现韧性架构通常需要设计和实施多种策略,包括上述的冗余、可扩展性和避免级联故障技术,以及其他技术如自动恢复(自动重启、自动回滚等)、自适应负载平衡和实时监控等。
指标监控能力(系统维度) 实验结果只反映系统状态指标 实验结果主要关注系统的基础健康状态指标,例如CPU使用率、内存使用率、磁盘空间等。这些指标可以帮助你了解系统在故障情况下的表现(具备MDC监控) 实验结果反应健康状态指标 除了基础系统状态指标外,实验结果还会考虑更高级别的健康状态指标,例如服务可用性、响应时间、错误率等。这些指标可以提供关于系统整体健康状况的更深入的见解。(具备UMP和Pfinder监控,应用健康度评分90分以上) 实验结果反应聚合的业务指标 实验结果会聚焦于与业务相关的指标,例如订单处理速度、用户会话数、转化率等。这些指标可以帮助你了解故障对业务流程和用户体验的影响。(具备业务监控能力) 有对照组比较业务指标差异 除了上述指标外,还会设置一个对照组(即没有故障的基线组)来与实验组进行比较。通过比较两组的业务指标差异,可以更准确地评估故障对业务的实际影响。
实验环境选择(系统维度) 可在预生产环境运行试验 在接近生产环境的设置中进行试验,预生产环境通常与生产环境具有相似的配置和数据,可以帮助你在不影响实际用户的情况下评估系统的弹性。 复制生产流量在灰度环境运行 在一个专门设计的灰度环境中模拟生产环境的流量和负载。通过这种方式,你可以在真实的生产条件下测试系统的弹性,而不直接影响到实际用户。 在生产环境中运行实验 需要非常小心和谨慎,只有当你有足够的信心和准备工作时,才应该考虑在生产环境中进行混沌工程实验。这种方法可以提供最真实的结果,但也存在最大的风险。 包含生产在内的任意环境都可进行实验 这种说法并不完全正确。虽然理论上可以在任何环境中进行混沌工程实验,但在实践中,需要根据具体的系统和业务需求来选择合适的环境。例如,对于关键系统或高风险应用,可能不适合直接在生产环境中进行实验。
故障注入场景和爆炸半径范围(系统维度) 进行一些基础的演练场景注入 选择注入一些基本的故障场景,例如突然终止一个进程、关闭一个服务或者模拟机器崩溃等。这些场景可以帮助你了解系统在面对单一故障时的反应。 注入较高级的故障场景 注入更复杂的故障场景,例如网络延迟、数据库延迟或者是第三方服务不可用等。这些场景可以模拟更真实的生产环境中的问题。 引入服务级别的影响和组合式演练场景 注入涉及多个服务的复杂故障场景,例如同时模拟多个微服务的故障、网络分区或者是负载均衡器失效等。这些场景可以帮助你了解系统在面对多个故障同时发生时的行为。 基于业务注入故障 注入更高级别的故障,例如模拟用户的不同使用模式、返回结果的变化或者是异常结果的出现等。这些场景可以帮助你理解系统在面对非标准输入或输出时的弹性。
试验自动化(基础设施维度) 利用工具进行半自动化试验 使用工具来辅助试验的某些步骤,但仍需要人工干预。例如,使用脚本来模拟故障或生成负载,而人工负责启动和监控试验。 自动创建、运行实验,但需要手动监控和停止 试验的创建和运行可以被自动化,例如使用CI/CD流程来部署和执行试验。然而,仍然需要人工监控试验的进展和结果,并在必要时手动停止试验。 自动结果分析,自动终止试验 系统可以自动检测到试验的结果,并根据预设的规则自动终止试验。例如,如果系统的性能下降超过某个阈值,试验将被自动停止。 自动设计、实现、执行、终止实验 整个混沌工程流程都被自动化。系统可以自主设计试验、选择适当的环境、执行试验、分析结果,并根据结果自动调整或终止试验。这种级别的自动化需要高度复杂的系统和算法支持。
工具使用(基础设施维度) 采用试验工具 选择一款专门设计用于混沌工程的试验工具,例如Chaos Monkey、Gremlin、Pumba等。这些工具可以帮助你模拟各种故障和压力测试,评估系统的弹性。(泰山—风险管理—混沌工程) 使用试验框架 选择使用一个更全面的试验框架,例如Chaos Toolkit或Litmus。这些框架提供了更丰富的功能,包括试验设计、执行、监控和结果分析等。(泰山—风险管理—混沌工程) 实验框架和持续发布工具集成 将混沌工程工具与持续发布(CI/CD)工具集成,例如Jenkins、GitLab CI/CD或CircleCI。这样可以实现自动化的混沌工程流程,例如在每次代码部署后自动运行一系列混沌工程试验。 工具支持交互式的比对实验 工具不仅可以执行混沌工程试验,还可以提供交互式的比对实验功能。例如,你可以使用工具来比较两种不同的系统配置或版本在面对相同的故障情况下的表现差异。这种功能可以帮助你更深入地理解系统的弹性和性能。
环境恢复能力(基础设施维度) 可手动恢复环境 需要手动介入来恢复环境。这可能涉及到重新启动服务、清理日志文件、调整配置等步骤。虽然这种方法可以解决问题,但它通常需要更多的时间和人力资源。 可半自动恢复环境 系统具备一些自动化的恢复功能,例如自动重启服务或者自动清理日志文件。然而,仍然需要系统管理员的介入来执行其他恢复步骤(比如手动恢复数据、手动回滚代码等)。这种方法可以加快恢复过程,但仍然依赖于人工干预 部分可自动化恢复环境 系统的恢复过程可以被大部分自动化。例如,系统可以自动检测故障并尝试恢复,或者在出现问题时自动切换到备用系统。虽然仍然可能需要人工干预来解决某些问题(比如未知类型故障、数据一致性问题、安全问题等),但自动化程度已经大大提高。 韧性架构自动恢复 系统可以自动检测和响应任何类型的故障,包括那些在设计时未被预见的故障。这种能力通常需要一个高度弹性和自适应的架构,例如微服务架构、容器化环境或者云原生应用。系统可以自动扩展、缩小、重启服务或者重新路由流量,以确保服务的连续性。
实验结果整理(基础设施维度) 可以通过实验工具得到实验结果,需要人工整理、分析和解读 实验工具会生成大量的数据,包括系统指标、错误日志、用户行为等。这些数据需要人工进行整理、分析和解读,以便从中提取有用的信息和洞察。 可以通过实验工具持续收集实验结果,但需人工分析和解读 实验工具不仅可以在实验期间收集数据,还可以在日常运营中持续监控系统的状态。这样可以帮助团队更早地发现问题并进行修复。然而,仍然需要人工分析和解读这些数据,以便理解系统的行为和性能。 可以通过实验持续收集实验结果和报告,并完成简单的故障分析 实验结果处理已经具备了一定的自动化能力。实验工具可以自动收集数据、生成报告,并进行初步的故障分析。这样可以大大减轻人工的工作量。但是,对于复杂的故障或深入的分析,仍然需要人工的介入。 实验结果可预测收入损失、并完成容量规划、区分出不容服务实际的关键程度 通过对实验结果的深入分析和建模,可以预测系统故障可能带来的收入损失,并据此进行容量规划和资源优化。同时,可以通过实验结果来区分哪些服务或功能是关键的,哪些是非关键的,从而有针对性地进行改进和优化。

4、移动端混沌实验

结合移动端特性与现有稳定性测试基础,以下为混沌工程在移动端的系统性实施框架,涵盖设计原则、核心要素、工具链及落地步骤。

a、核心原则

核心原则 描述
以业务场景为中心 故障注入围绕核心业务流程,如物流中的揽收、派送子域,确保关键路径的韧性
渐进式风险暴露 从单点可控故障开始,如模拟API超时,逐步升级至复杂故障链,如网络中断、服务端熔断
可观测性驱动 故障注入需同步监控业务指标,如成功率、耗时,和系统指标,如崩溃率、资源占用率
安全边界控制 通过环境隔离,如仅限测试环境、预发环境隔离,和熔断机制,如自动终止破坏性实验规避生产事故

b、核心要素

1)故障场景库设计

故障类型 典型场景 注入手段
网络层 5G/弱网切换、DNS劫持、TCP丢包 Charles弱网模拟、OkHttp MockWebServer
设备层 强制杀进程、模拟内存泄漏、电池耗尽 ADB命令(adb shell am force-stop)、Xcode工具链
应用层 主线程阻塞、依赖服务(如地图SDK)超时 代码插桩(AOP)、第三方SDK Mock工具
数据层 本地数据库损坏、缓存过期、时间篡改 文件系统操作、SQLite注入异常
安全层 中间人攻击、证书校验绕过、敏感数据明文存储 Wireshark抓包篡改、Frida动态Hook

2)实验优先级矩阵

业务影响 发生概率 实验优先级
P0(立即修复)
P1(灰度验证)
P2(监控优化)
P3(长期规划)

c、工具链与自动化集成

1)分层工具矩阵

层级 推荐工具 适用场景
网络模拟 Charles、ATC、Facebook Augmented Traffic Control 弱网、断网、协议级攻击测试
设备控制 ADB、iOS Simulator CLI、Google Espresso 进程终止、传感器模拟、自动化操作注入
故障注入 Chaos Mesh、Pumba、自研SDK 容器级资源限制、服务端联调故障
监控分析 Firebase Crashlytics、Prometheus+Grafana 崩溃追踪、性能指标实时可视化

2)自动化流水线设计

【灯塔计划】【积微成著】规模化混沌工程体系建设及AI融合探索

d、落地实施步骤

1)设备覆盖计划

测试设备根据一线使用频率较高的系统版本和设备类型的TOP3来选择。

【灯塔计划】【积微成著】规模化混沌工程体系建设及AI融合探索



2)常态化落地机制(弱网与断网故障注入深度实践)

弱网与断网测试,是验证应用网络韧性的核心环节。通过Charles工具链与深度业务场景结合,系统性验证了移动端在极端网络条件下的行为,为后续自动化混沌工程流水线建设提供了实践范本。未来可进一步与mpaas监控、灰度发布联动,实现“故障注入-监控告警-自动修复”闭环。以小哥工作台APP为例,其测试实施过程如下:

测试方法与工具链 工具选型:基于Charles Proxy实现网络故障注入,通过抓包拦截与网络参数动态配置,模拟2G/3G/4G等网络类型,支持自定义带宽(如上行50kbps/下行100kbps)、延时(300ms~5s)、丢包率(10%~30%)及稳定性(周期性断网)
前置条件:开通测试设备与Charles的网络互访权限,确保流量可被代理捕获;构建Debug包以绕过证书校验限制,支持HTTPS请求解析。
场景覆盖与问题挖掘 业务场景:围绕揽收、派送等核心流程,覆盖100+关键交互节点,包括:订单提交时的网络闪断重试;离线模式下地址信息本地缓存与同步;弱网环境下的图片上传降级策略
问题发现:累计识别20+韧性缺陷,如以下3类。 ①网络切换容错缺失:Wi-Fi与蜂窝网络切换时,偶现任务状态丢失; ②重试风暴:断网恢复后,客户端未采用指数退避策略,导致服务端瞬时流量激增; ③离线数据冲突:多设备离线操作后,数据合并逻辑异常引发业务脏数据。
优化方向 流程提效:推动去Debug包依赖,采用OkHttp MockWebServer或Charles Map Local功能,直接劫持线上包API响应,减少构建成本; 构建自动化弱网场景库,将典型配置(如电梯、楼宇网络)预设为脚本,一键触发测试。



5、AI大模型与混沌工程的双向融合

a、AI场景下的混沌实验

1)AI大模型系统与传统系统的差异

随着AI大模型技术的快速发展,各行各业的传统系统都在逐步融合AI大模型能力,那么由此给混沌实验带来了新的挑战,与传统系统的混沌实验相比,融合了AI大模型能力的系统则会有一定的差异性,如下:

维度 传统系统 AI大模型融合系统
实验原理 基于确定性规则(如手动触发服务宕机、模拟流量激增)。 结合AI生成对抗性故障(如动态调整故障参数、模拟数据分布偏移)。
实验目标 验证系统对已知故障(如网络延迟、服务宕机)的容错能力,确保预设的冗余、熔断等机制有效。 包括传统系统既有的实验目标以外,还需: 1、验证AI模型的动态适应能力(如故障预测、自愈决策),验证系统在复杂、动态环境中的智能响应能力。 2、评估AI模型的鲁棒性(如对抗数据扰动、模型漂移)、AI与人类决策的协作效率
场景设计 硬件/网络故障、服务中断 数据异常、模型推理瓶颈、算力动态调度
监控指标 基础资源、接口调用、服务可用性(SLA)、平均恢复时间(MTTR)、错误率。 保留传统指标,并新增AI相关指标: - 模型推理延迟、决策准确率; - 异常检测召回率; - 动态策略调整效率。 -数据质量(如特征分布偏移)、模型置信度、AI与人类决策一致性。
结果分析 单点故障定位、容错机制验证 模型鲁棒性评估、数据链路风险、业务影响量化

因此,在对AI大模型融合系统实施混沌实验时,在满足传统系统混沌实验关注点的同时,还需要更加关注模型服务可靠性(如推理延迟、数据异常影响),覆盖数据噪声、GPU资源争用及模型输出漂移等复杂场景,指标监控上应额外追踪模型性能(如准确率)、数据分布偏移及GPU利用率。在进行结果分析时需量化模型鲁棒性、数据链路风险及业务间接损失(如用户信任)。



2)AI大模型混沌工程实验

①实验目标

•验证大模型服务降级/熔断策略的有效性

•测试模型服务与业务系统的异常协同能力

•检测数据流-模型-业务链路的健壮性

•验证模型性能监控与自动恢复机制。

②实验原则

•最小化爆炸半径:从非核心业务开始,逐步扩大范围

•可观测性:确保所有操作可监控、可记录、可回滚

•稳态假设:明确定义系统正常运行的指标(如成功率、延迟、QPS等)

•生产环境优先:优先在生产环境进行(需严格规划)

③实验标准

实验准入 实验准出
演练前,研测双方,未完成演练分组确认、数据隔离确认,禁止启动演练 故障识别效率:守方在5分钟内识别故障,同时在“常态化备战群”报备故障
演练场景,未通过研测联合评审,并发出评审纪要,禁止启动演练 故障定位效率:守方在10分钟内定位故障,同时在“常态化备战群”同步故障原因
演练周期内,指定攻守人员未在指定场所准备就绪,禁止启动演练 止损效率:守方在15分钟内通过自动或手动方式,降级止损
演练平台任务,未与演练剧本及观察员,二次对齐确认,禁止启动演练 弱依赖有效性:弱依赖类故障,不影响核心业务流转
演练集群申请列表检查完毕 故障修复效率:如演练场景为有损故障、或故障注入过程对线上业务产生影响,需要在20分钟内修复
演练退出标准:故障注入超过5分钟未被识别、超过10分钟未被定位、超过15分钟未止损,对应场景终止故障注入,并完成环境初始化,标记演练未通过

④场景设计原则

针对AI大模型工程系统的混沌实验设计,需结合核心业务场景和底层依赖(算力、数据、模型、网络),重点验证系统的容错性、自适应能力和用户体验鲁棒性。

故障分类 具体场景 实验步骤 过程监控 预期结果
基础设施层 GPU节点故障 1. 选择1个GPU计算节点 2. 模拟硬件故障(如nvidia-smi注入故障代码) 3. 持续10分钟 - GPU利用率/温度实时监控 - 节点存活状态检测 - 服务自动迁移日志追踪 - 服务自动迁移至备用节点 - 业务中断时间<30秒 - GPU资源池利用率波动<15%
显存溢出攻击 1. 逐步增加推理请求的输入尺寸 2. 监控显存使用率 3. 触发OOM后记录恢复流程 - 显存分配/释放速率监控 - OOM错误日志捕获 - 关联服务健康状态检测 - 触发熔断机制自动重启服务 - 错误日志记录完整率100% - 未影响其他模型服务
服务层 模型API高延迟 1. 在API网关注入10000ms延迟 2. 维持15分钟 3. 监控降级策略触发情况 - 请求响应时间分布监控 - 客户端重试次数统计 - 降级策略触发状态 - 客户端超时重试机制生效 - 备用模型启用率>90% - 整体错误率上升≤5%
模型热切换失败 1. 推送新模型版本 2. 强制中断切换过程 3. 验证回滚机制 - 模型版本哈希校验 - 切换过程耗时监控 - 请求成功率波动检测 - 10秒内检测到切换失败 - 自动回退至稳定版本 - 业务请求成功率>99.5%
数据流层 特征存储中断 1. 切断特征存储服务网络 2. 持续5分钟 3. 恢复后验证数据一致性 - 特征服务健康检查 - 本地缓存命中率监控 - 数据一致性校验 - 自动切换本地特征缓存 - 数据恢复后差异率<0.1% - 业务决策准确率下降≤3%
实时数据乱序 1. 注入10%乱序数据流 2. 逐步提升至50%乱序率 3. 监控处理延迟 - 数据流处理延迟监控 - 窗口计算偏差检测 - 乱序告警触发统计 - 流处理引擎乱序容忍机制生效 - 最终计算结果偏差<1% - 告警系统在30秒内触发
模型层 模型精度下降 1. 修改在线模型权重参数 2. 注入5%对抗样本 3. 监控模型输出稳定性 - 模型输出分布偏移检测 - 对抗样本识别率 - 业务决策错误率波动 - 模型监控系统30秒内告警 - 自动切换备用模型 - 业务决策错误率<警戒阈值(如2%)
多模型投票失效 1. 关闭1个投票模型实例 2. 注入矛盾样本 3. 验证决策一致性 - 投票结果置信度监控 - 模型间结果差异率 - 人工干预请求量统计 - 投票机制自动降级为权重模式 - 最终决策置信度>85% - 人工复核请求触发率<5%



b、快递快运小哥AI智能助手-混沌工程探索

1)系统简介

快递快运终端系统是服务于一线快递小哥及站点管理者的日常工作作业实操系统,是京东物流作业人员最多、物流揽派作业最末端以及作业形态多元化的系统。

AI大模型具有超强自然语言处理、泛化能力、意图理解、类人推理以及多元化结果输出的独特能力,基于此,快递快运小哥AI智能助手通过结合AI大模型工程系统、大数据、GIS、语音SDK等分别在揽收、派送、站内、辅助、问答服务五大类作业环节上实现了如小哥揽收信息录入、打电话、发短信、查询运单信息、小哥揽派任务信息聚合查询、知识问答及揽派履约时效精准化提示等场景。提升小哥作业效率和揽派实操体验。

2)系统架构分析

快递快运小哥AI智能助手【产品架构图】快递快运小哥AI智能助手故障演练【系统架构图】

3)实验场景

针对AI大模型工程系统的混沌实验设计,需结合核心功能(智能提示、智能问答、智能操作)和底层依赖(算力、数据、模型、网络),重点验证系统的容错性、自适应能力和用户体验鲁棒性。

故障分类 具体场景 实验步骤 预期结果
服务层 模型API高延迟 (AI大模型工程系统提供给小哥后台服务系统的API高延迟) ·从泰山平台注入10000ms延迟故障场景 ·故障维持15分钟 ·停止故障场景注入,恢复大模型能力 ·小哥工作台APP客户端检测到大模型服务接口超时(如揽收数据录入时,无法得到响应数据),启动降级策略机制,切断大模型服务,兜底回到五大模型服务模式,小哥可以正常继续标准化作业 ·小哥工作台APP持续在无大模型服务下运转 ·小哥工作台APP客户端检测大模型能力恢复,启动大模型能力服务
模型层 模型精度下降 ·修改在线模型权重参数 ·注入5%对抗样本数据(线上已录制的大模型访问数据流量) ·恢复大模型参数 ·大模型监控系统30秒内告警,识别到模型参数异常变更,预警通知开发人员,开发人员发现模型参数异常 ·客户端发现大模型使用能力下降,开发启动自动切换备用模型(参数已经适配好的模型),开发下线参数异常模型 ·开发发现参数异常模型恢复,重新启动上线



c、混沌工程的AI智能化演进展望

混沌实验的AI化演进是系统稳定性测试与人工智能技术深度融合的重要趋势。这一演进不仅体现在实验工具的智能化升级上,更体现在实验设计、执行与分析的全链路优化中。以下分别从技术融合、工具创新及场景扩展三个维度展开论述:

1)技术融合:AI赋能混沌实验的核心环节

混沌实验包含了实验设计、实验执行及实验监控与根因分析三大核心环节,具体而言。



①实验设计智能化

传统混沌实验依赖于人工假设(如“当网络延迟增加时,系统可用性应保持在99.99%以上”),而AI可通过历史故障数据与系统日志,自动识别潜在脆弱点并生成实验假设。

例如,基于强化学习的AI模型可模拟复杂故障场景的组合,优化实验参数(如故障注入的强度、范围),提升测试覆盖率。AI可分析服务调用链,预测依赖服务失效后的级联影响,并自动设计针对性的网络分区实验。在验证电商大促场景下的订单支付链路韧性时,通过AI驱动的智能实验设计,系统可自动化发现潜在风险组合并生成针对性实验方案,具体而言

实验设计关键环节 实验设计关键流程
历史数据挖掘与脆弱点识别 数据输入: ·历史故障日志:比如过去3年大促期间记录的168次服务降级事件(如库存超卖、优惠券死锁)。 ·系统拓扑:服务依赖关系(如支付网关调用订单数据库的频率为5000次/秒)。 ·性能基线:日常与大促期间的CPU/内存/延迟指标对比数据 AI分析: ·使用图神经网络(GNN)分析服务调用链,识别高频依赖且资源消耗高的节点(如优惠券服务在流量峰值时CPU利用率达90%)。 ·基于关联规则挖掘(Apriori算法)发现故障组合模式(如“库存服务响应延迟>200ms”与“支付网关连接池耗尽”共同发生的概率为72%)。
强化学习生成实验参数 强化学习模型(PPO算法)配置: ·状态空间:优惠券服务线程池使用率、支付网关活跃连接数、订单数据库写入延迟。 ·动作空间: ·故障类型:线程阻塞(阻塞比例10%~100%)、连接池限制(50%~20%容量)。 ·注入时机:流量爬坡期(0%~100%峰值)。 ·奖励函数: ·正向奖励:实验触发系统熔断/降级(如订单服务自动切换为本地缓存)。 ·负向奖励:订单失败率>0.1%或实验引发级联故障。 ·训练过程: 在仿真环境中模拟10万次实验,AI学习到最优策略: “在流量达到峰值的70%时,先注入优惠券服务50%线程阻塞,待系统触发自动扩容后,再限制支付网关连接池至30%容量”
实验执行与动态调控 初始注入:AI按策略在流量爬坡期注入优惠券服务50%线程阻塞。 动态响应: ·系统检测到线程池满载,自动扩容优惠券服务实例(从10个扩展到15个)。 ·AI监控到扩容完成,立即触发支付网关连接池限制至30%。 异常检测: ·订单数据库写入延迟突增至800ms(超过基线300%),AI通过LSTM模型预测5秒内可能触发死锁,立即停止实验并回滚故障。

通过借助AI智能实验方案设计,获得以下收益。

优势项 描述
风险发现效率提升 提前识别出4个高危漏洞
验证成本降低 实验耗时从人工方案的48小时缩短至6小时,资源消耗减少60%
韧性增强 优化后系统在真实大促中订单失败率从0.15%降至0.02%,且故障平均恢复时间(MTTR)从8分钟缩短至90秒

以上,AI不仅替代了人工设计中的重复劳动,更重要的是通过系统化挖掘隐性关联动态博弈式测试,将混沌工程从“已知-已知”测试升级为“已知-未知”甚至“未知-未知”风险探索。



②执行与调控动态化

AI的动态决策能力使得混沌实验从“预设故障”向“自适应故障注入”演进。例如,通过实时监控系统指标(如CPU负载、请求延迟),AI可动态调整故障注入的强度或终止实验,避免超出系统容灾阈值。通过AI驱动的动态实验调控,可以使混沌工程实现更多的突破,例如:实现动态适应性,从“固定剧本”升级为“实时博弈”,更贴近真实故障场景;实现精准调控,避免因过度测试导致业务受损,平衡实验风险与价值;实现多目标优化,同时验证性能、稳定性、安全性的综合影响,例如:验证系统在流量激增时自动扩缩容的能力。

实验场景 在大促期间实施弹性伸缩混沌实验
实验目标 验证系统在流量激增时自动扩缩容的能力
AI调控策略 初始故障:模拟流量突增50%,触发自动扩容 动态调整: ·若系统扩容速度过慢(如新实例启动时间>3分钟),AI自动追加CPU负载故障(如占用80% CPU),资源争用下的扩容极限。 ·若扩容成功但负载均衡异常(如某些实例请求量超标),AI注入节点宕机故障,验证服务迁移能力。 终止条件:当订单失败率超过1%时,立即停止实验并触发告警
预期结果 AI发现扩容策略在CPU高负载时延迟增加2倍,推荐优化预热脚本并增加冗余实例池



③智能监控与智能根因分析

传统监控工具(如Prometheus)依赖人工设置告警阈值,而AI可通过异常检测算法(如LSTM、自编码器)实时识别系统行为的偏离,并关联故障注入事件,快速定位根因。例如,南京大学利用AI分析古生物大数据揭示复杂系统的演化模式,类似方法可用于预测分布式系统中的故障传播路径。

智能监控与根因分析通过AI技术实现从“被动告警”到“主动预测-定位”的跨越,其核心是通过多维度数据融合与因果推理,快速定位复杂系统中的故障根源。其技术原理可以从以下几个方面深入展开:

异常检测:动态阈值与模式识别 传统监控缺陷:人工设置静态阈值(如“CPU使用率>90%触发告警”),无法适应业务波动(如大促期间CPU正常使用率可能长期维持在85%)
AI解决方案: 1)时序预测模型(LSTM/Prophet):基于历史数据预测指标正常范围(如预测大促期间订单服务的请求延迟基线为50ms±10ms),动态调整告警阈值; 2)无监督异常检测(自编码器/Isolation Forest):通过对比实时数据与正常模式的特征差异(如请求成功率的分布偏移),识别未知异常类型(如特定API接口的偶发超时)
根因定位:因果图与传播路径推理 传统方法缺陷:人工排查需逐层检查日志、指标和链路追踪,耗时长且易遗漏隐性依赖
AI解决方案: 1)服务拓扑建模(图神经网络/GNN):将微服务调用关系建模为图结构,分析节点(服务)与边(依赖)的异常传播权重。 2)因果推理(贝叶斯网络/结构方程模型):结合故障注入实验数据(如“当Redis缓存失效时,数据库QPS增加300%”),构建故障因果链,量化各因素对目标异常(如订单失败率)的贡献度。
故障传播预测:复杂系统仿真 仿生学启发:借鉴南京大学分析古生物演化的方法(如模拟环境剧变对物种多样性的影响),通过数字孪生技术构建系统仿真模型,预测故障传播路径
关键技术: 1)故障注入+强化学习:模拟随机或组合故障(如“数据库主从延迟+缓存击穿”),观察系统响应并生成故障传播概率图。 2)传播路径预测:若检测到A服务异常,AI基于历史数据预测其下游影响(如A服务故障有70%概率在30秒内导致B服务超时)

AI驱动的智能监控与根因分析通过动态异常检测-因果推理-传播预测的三层技术架构,将故障定位从“人工地毯式排查”升级为“秒级精准定位”。此能力不仅大幅缩短了故障恢复时间,更重要的是通过预测潜在连锁反应(如“缓存失效→数据库过载→服务雪崩”),推动系统架构从“容灾”向“抗灾”演进。未来,结合故障注入实验的闭环验证,AI监控有望实现“自愈推荐”,即自动生成修复策略并验证其有效性,真正实现系统的智能韧性。



2)AI驱动的混沌工程平台能力升级

①混沌工程工具AI能力建设焦点

以下针对目前的发展方向,混沌工程平台,可基于以下几个方面拓展能力升级。

故障类型 故障描述 参数说明
GPU节点故障 故障注入平台的配置需要结合硬件特性、分布式训练框架的容错机制以及业务场景需求,包含:硬件级故障、软件级故障以及环境级故障 参数类别 示例参数 说明 故障类型 gpu_failure_type 显存错误/驱动崩溃/NVLink中断等 持续时间 duration 瞬时故障(毫秒级)或持续故障(分钟级) 影响范围 gpu_index 指定GPU卡序号(如0-3) 错误概率 error_rate 显存访问错误的发生频率(如1e-6次/操作)
显存溢出攻击 模拟恶意或异常显存占用行为,验证系统对显存资源耗尽场景的防御能力、容错机制及恢复效率,包含: 显存暴力抢占:持续分配显存直至耗尽(模拟恶意进程)。 显存泄漏攻击:周期性分配显存但不释放(模拟代码缺陷)。 梯度爆炸攻击:注入异常梯度值导致反向传播显存需求激增。 多任务资源竞争:并行启动多个高显存任务(测试调度策略的健壮性)。 参数项 可选值/示例 说明 fault_type gpu_memory_overflow 故障类型(显存溢出攻击) injection_method direct_allocation(直接分配) gradient_attack(梯度爆炸) multi_task(多任务竞争) 显存溢出的具体实现方式 target_gpu 0(GPU卡序号) 指定攻击的目标GPU设备 memory_fill_rate "90%" 或 "10GB" 显存占用目标阈值(百分比或绝对值) leak_speed "100MB/s" 显存泄漏速率(仅对泄漏攻击有效) attack_duration "5m"(5分钟) 攻击持续时间(瞬态攻击或持续攻击)
模型热切换失败 在不停机的情况下切换模型版本时,因资源竞争、依赖冲突或状态同步错误导致新模型加载失败或旧模型残留,引发服务中断或预测结果混乱。例如:新模型加载时显存不足、旧模型卸载不彻底(如未释放GPU资源)、版本元数据(如输入输出格式)不兼容 参数项 可选值/示例 说明 fault_type model_hotswap_failure 故障类型(模型热切换失败) injection_method resource_lock(资源锁定) metadata_corruption(元数据损坏) 模拟资源竞争或版本元数据错误 failure_point pre_load(加载前) post_unload(卸载后) 指定故障注入阶段(加载前/卸载后) rollback_strategy auto_rollback(自动回滚) manual_intervention(人工介入) 切换失败后的恢复策略 retry_threshold 3(最大重试次数) 加载失败后的自动重试次数
实时数据乱序 数据流因网络延迟、分片传输错误或消息队列故障导致时序数据乱序,影响时间敏感型模型(如LSTM、Transformer)的预测准确性。例如:时间窗口内数据顺序错乱、数据延迟超过模型允许的时序容忍度、乱序数据触发模型状态异常(如状态机崩溃) 参数项 可选值/示例 说明 fault_type data_out_of_order 故障类型(实时数据乱序) disorder_rate "30%" 乱序数据比例(如30%的数据顺序被打乱) max_latency "5s" 最大延迟时间(模拟数据迟到) window_size 1000 受影响的时间窗口大小(单位:数据条目数或时间范围) distribution uniform(均匀分布) burst(突发乱序) 乱序分布模式
模型精度下降 因输入数据漂移、模型参数篡改或计算单元异常(如GPU浮点运算错误),导致模型预测精度显著下降且未被监控系统及时捕获。例如:输入数据分布偏移(如传感器数据偏差)、模型权重文件被部分覆盖或损坏、浮点计算静默错误(如CUDA核函数异常) 参数项` 可选值/示例 说明 fault_type model_accuracy_drop 故障类型(模型精度下降) noise_level "10%" 输入数据噪声强度(如添加10%高斯噪声) weight_corruption random(随机扰动) targeted(定向攻击) 模型参数篡改方式 error_type float_error(浮点错误) quantization(量化异常) 计算单元错误类型 detection_threshold 0.95(置信度阈值) 触发告警的精度下降阈值(如置信度低于0.95时告警)
多模型投票失效 在多模型投票决策系统中,因部分模型故障、通信中断或投票逻辑缺陷,导致最终决策结果与真实多数投票结果不一致。如:单个模型输出异常(如返回空值或极端值)、投票结果聚合逻辑错误(如加权投票权重未生效)、模型间通信超时或数据丢失 参数项` 可选值/示例 说明 fault_type ensemble_voting_failure 故障类型(多模型投票失效) failure_mode silent(静默失败) noisy(输出噪声) 模型故障类型 target_models ["model_a", "model_c"] 指定需要注入故障的模型列表 communication_delay "2s" 模拟模型间通信延迟 voting_algorithm majority(多数表决) weighted(加权投票) 投票算法类型(验证算法容错性)

②自动化工具链的升级

当前的各类工具主要依赖手动配置,通过AI的引入使得工具能够从以下几个维度升级

自动化配置点 配置描述
智能选择靶点 基于系统拓扑和负载情况,优先测试高风险的组件
生成实验剧本 结合强化学习模拟多故障叠加场景,如“同时触发数据库延迟与容器资源耗尽
自动修复建议 根据实验结果推荐冗余设计或负载均衡策略

③应用层故障注入的精细化

应用级故障注入工具通过“坐标系统”,精确定位实验范围(如特定用户或服务版本),而AI可进一步扩展这一能力。例如,通过自然语言处理解析日志,自动生成针对特定API接口的异常返回规则

④场景扩展

智能化场景推荐

包括不限于,基于系统架构特性、基于既往线上故障、基于系统核心指标异动的智能化场景推荐,具体而言:

智能化场景推荐 技术原理 设计方案
基于系统架构特性的场景推荐 ·拓扑结构分析: ·通过服务注册中心(如Nacos、Consul)获取微服务依赖关系,构建系统调用拓扑图。 ·使用**图神经网络(GNN)**计算节点中心性(如介数中心性),识别核心链路(如“订单创建→支付→库存扣减”路径)。 ·资源依赖建模: ·分析服务与底层资源(数据库、缓存、消息队列)的绑定关系,定位资源竞争热点(如多个服务共享同一Redis集群)。 ·输入:系统拓扑图、服务QPS、资源使用率(如数据库连接数)。 ·算法: ·关键路径识别:基于PageRank算法标记高权重节点(如支付网关)。 ·瓶颈预测:结合资源水位预测模型(如ARIMA),推断未来压力点。 ·输出: ·推荐实验场景: ·针对核心链路:模拟支付网关高延迟。 ·针对共享资源:注入Redis主节点宕机。
基于既往线上故障的场景推荐 ·故障模式挖掘: ·对历史故障日志进行NLP解析(如BERT模型),提取故障类型、影响范围、修复措施。 ·使用**关联规则挖掘(Apriori算法)**发现高频故障组合(如“缓存雪崩+数据库连接池耗尽”)。 ·时序模式分析: ·基于LSTM构建故障时序模型,预测周期性风险(如大促前1小时库存服务易出现超卖)。 ·输入:历史故障数据库、修复记录、时间戳。 ·算法: ·故障关联图谱:构建故障-服务-资源的关联网络。 ·相似度匹配:通过余弦相似度匹配当前系统状态与历史故障特征。 ·输出: ·推荐实验场景: ·复现历史高频故障:优惠券服务线程池满。 ·预测性场景:模拟大促开始后30分钟的缓存击穿。
基于系统核心指标异动的场景推荐 ·动态基线计算: ·使用Prophet时序模型预测指标正常范围(如日常CPU使用率40%→大促期间允许80%)。 ·多维度异常检测: ·通过**多变量自编码器(MAE)**分析指标组合异常(如“CPU 85% + 数据库锁等待数激增”)。 ·输入:实时监控指标流(Prometheus)、业务日志(ELK)。 ·算法: ·异常模式聚类:对异常事件进行K-means聚类,识别典型模式(如“突增流量型”“资源泄漏型”)。 ·根因映射:将异常模式映射至预设故障场景库。 ·输出: ·推荐实验场景: ·当检测到订单服务延迟突增时,推荐测试“库存服务缓存失效”。 ·当数据库锁等待数超标时,推荐测试“分布式锁服务故障”。

云原生与边缘计算

在动态的云原生环境中,AI可预测容器编排(如Kubernetes)的故障恢复效率,并验证自动扩缩容策略的有效性。

跨学科复杂系统模拟

混沌实验的理念正被引入生物、气候等复杂系统研究。例如,南京大学团队利用AI模拟元古宙生命演化中的“雪球地球”事件对生物多样性的冲击这种“环境混沌实验”为评估极端条件下的系统韧性提供了新范式。

随着AI技术的不断发展和应用场景的落地实施,混沌实验正从“被动容灾”转向“主动韧性构建”,其核心是通过智能算法提升实验的精准度与系统自愈能力。未来,随着AI与量子计算、生物模拟等领域的交叉,混沌实验或将突破工程范畴,成为探索复杂系统普适规律的科学工具。

6、【积微成著】专业分享

•【积微成著】性能测试调优实战与探索(存储模型优化+调用链路分析):http://xingyun.jd.com/shendeng/article/detail/24444?forumId=174&jdme_router=jdme://web/202206081297?url%3Dhttp%3A%2F%2Fsd.jd.com%2Farticle%2F24444

•【积微成著】规模化混沌工程体系建设及AI融合探索:http://xingyun.jd.com/shendeng/article/detail/44438?forumId=99&jdme_router=jdme://web/202206081297?url%3Dhttp%3A%2F%2Fsd.jd.com%2Farticle%2F44438

•【积微成著】“泰山变更管控”在物流技术的深入实践:http://xingyun.jd.com/shendeng/article/detail/45193?forumId=1414&jdme_router=jdme%3A%2F%2Fweb%2F202206081297%3Furl%3Dhttp%3A%2F%2Fsd.jd.com%2Farticle%2F45193

点赞
收藏
评论区
推荐文章
混沌演练实践(一)
混沌工程是通过主动制造故障场景并根据系统在各种压力下的行为表现确定优化策略的一种系统稳定性保障手段,简单说就是通过主动注入故障的方式、提前发现问题,然后解决问题规避风险。
Stella981 Stella981
3年前
Chaos Mesh —— 让应用跟混沌在 Kubernetes 上共舞
作者:殷成文2019年12月31日,我们在GitHub上正式开源了ChaosMesh。作为一个云原生的混沌测试平台,ChaosMesh提供在Kubernetes平台上进行混沌测试的能力。本篇文章将围绕ChaosMesh起源及原理等方面进行介绍,并结合具体案例带领大家一起探索混沌测试的世界。!(https://img
Stella981 Stella981
3年前
PingCAP 唐刘:如何利用混沌工程打造健壮的分布式系统?
作者:赵钰莹_本文转载于InfoQ。__原文链接_:https://www.infoq.cn/article/EEKM947YbboGtD\_zQuLw(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.infoq.cn%2Farticle%2FEEKM947YbboGt
Stella981 Stella981
3年前
Netflix的DevSecOps最佳实践
应用安全早期的安全工作DevSecOps沟通和协作虚拟安全团队云上安全安全隔离原则移除静态密钥凭证管理适当的权限划分混沌工程在安全的使用
Stella981 Stella981
3年前
Chaos Mesh® X GitHub Actions —— 把混沌工程集成到你的 CI 中
本文将介绍如何在GitHubActions的workflow中使用ChaosMesh,从而将混沌工程集成到系统开发的CI中。阅读本文前,需要对ChaosMesh和GitHubActions有一定的了解:ChaosMesh是一个云原生的混沌测试平台,提供在Kubernetes上进行混沌测试的能力,可以说C
Easter79 Easter79
3年前
TiDB 混沌工程实践:如何打造健壮的分布式系统?
本文转载自InfoQ网站作者:唐刘策划:赵钰莹原文链接:https://www.infoq.cn/article/bxGvrb\_CxAZD6Wv3fUj8(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.infoq.cn%2Farticle%2FbxGvrb_C
主动发现系统稳定性缺陷:混沌工程 | 京东云技术团队
这是一篇较为详细的混沌工程调研报告,包含了背景,现状,京东混沌工程实践,希望帮助大家更好的了解到混沌工程技术,通过混沌工程实验,更好的为系统保驾护航。
混沌演练状态下,如何降低应用的MTTR(平均恢复时间) | 京东云技术团队
如何在混沌演练的场景中降低应用的MTTR,必须需要根据监控定位,然后人工进行反馈进行处理吗?是否可以自动化,是否有方案可以降低混沌演练过程中的影响?以此达到快速止血,进一步提高系统的稳定性。本篇文章将根据一些思考和实践来解答以上问题。
助力618-Y的混沌实践之路 | 京东云技术团队
近三年,京东混沌工程作为大促三道防线之一,在促前扮演了非常重要的角色,而Y的混沌实践,也在不断地进行升级,主要从应用覆盖率和场景覆盖率两个方向明确提升方向,并在集团混沌大赛上取得了一系列突破和成绩。