美文网首页
混沌工程知识《五》

混沌工程知识《五》

作者: zccao_泰山 | 来源:发表于2023-08-22 11:44 被阅读0次

原文:AWS云上混沌工程实践之对照实验设计篇 | 亚马逊AWS官方博客 (amazon.com)

混沌工程实验:一个持续性迭代的闭环体系

image

图3 混沌工程实验的实践流程

如图3所示,完整的混沌工程实验是一个持续性迭代的闭环体系,从初步的实验需求和实验对象出发,通过实验可行性评估,确定实验范围,设计合适的观测指标、实验场景和环境,选择合适的实验工具和平台框架;建立实验计划,和实验对象的干系人充分沟通,进而联合执行实验过程,并搜集预先设计好的实验指标;待实验完成后,清理和恢复实验环境,对实验结果进行分析,追踪根源并解决问题,并将以上实验场景自动化,并入流水线,定期执行;之后,便可开始增加新的实验范围,持续迭代和有序改进。

下面我们会深入讨论有关混沌工程实验的准备事项:

实验可行性评估

观测指标设计与对照

实验场景和环境的设计

实验工具和平台框架选型(限于篇幅,未完待续)

实验可行性评估

可行性评估篇提供了这样一个混沌工程实验的可行性评估模型,从多个维度对实验技术的成熟度做了定性分析。此处的实验可行性评估,依照这个可行性评估模型,会针对具体的实验需求和实验对象进行细致评估。常见的一个形式是对照“可行性评估问题表”,对实验对象的干系人进行访谈。可行性评估问题表的内容会包含以下几个方面:

架构抵御故障的能力:通过对实验对象的架构高可用性的分析和评估,找出潜在的系统单点风险,确定合理的实验范围。

实验指标设计:评估目前实验对象判定业务正常运行所需的业务指标、应用健康状况指标和其他系统指标。

实验环境选择:选择实验对象可以应用的实验环境:开发、测试、预生产、生产。

实验工具使用:评估目前实验对象对实验工具的熟悉程度。

故障注入场景及爆炸半径:讨论和选择可行的故障注入场景,并评估每个场景的爆炸半径。

实验自动化能力:衡量目前实验对象的平台自动化实施能力。

环境恢复能力:根据选定的故障注入场景,评估实验对象对环境的清理和恢复能力。

实验结果整理:根据实验需求,讨论确定实验结果和解读分析报告的内容项。

观测指标设计与对照

观测指标设计

观测指标的设计是整个混沌工程实验成功与否的关键之一。最新的调研报告“Chaos Engineering Observability: Bringing Chaos Experiments into System Observability”指出在进行混沌工程实验过程中,系统可观测性已成为一种“强制性功能”,良好的系统可观测性会给混沌工程实验带来一个强有力的数据支撑,为后续的实验结果解读、问题追踪和最终解决提供了坚实的基础。

以下是常见混沌工程实验的观测指标类型:

业务性指标:价值最大,探测难度最大

应用健康指标:反映应用的健康状况

其他系统指标:较易获取,反映基础设施和系统的运行状况

以Netflix为例,早在2008年Netflix起步流媒体,手动追踪数百个指标,全靠人工来检测问题。 这种方法适用于数十台服务器和数千台设备,但不适用于未来的数千台服务器和数百万台设备。最终Netflix找到了一个可以反映业务状况、用户参与度的指标:每秒流视频启动次数SPS (stream-starts-per-second)。

image

SPS指标示例比较(红色=当前周,黑色=前一周)

SPS 模式通常是比较规则的,受到假日和事件等外部影响会有所变化。上图描绘的就是 SPS 随时间变化的波动情况,可以看出,它有一个稳定的模式,每天 SPS 峰值发生在晚上,谷值发生在清晨。这是因为人们习惯于在晚餐时间看电视节目。假期时,白天的观看次数增加,因为有更多的空闲时间在Netflix上观看节目。

观测指标对照

如果我们将过去一周的波动图放在当前的波动图之上,就像上图中当前的图线是红色,上一周的图线是黑色,以求找出其中的差异。由此,我们可用“受SPS影响”或“不影响SPS”来衡量业务的状况。此外,由于 SPS 随时间的变化可以预期,所以我们可用一周前的 SPS 波动图作为稳定状态的模型,并通过使用预期SPS级别与实际SPS级别来衡量业务的可用性。Netflix SPS指标的这种特性,也提醒我们应以观测指标的<u style="box-sizing: border-box;">稳定状态</u>进行对照。

不过可行性评估中,我们发现有很多的用户还是无法定义一个合适的业务指标,如无法准确定义一个稳定状态,那么我们也可以退而求其次,使用多个指标进行联合分析来对照。具体的联合分析方法包括:静态阈值、指数平滑、双指数平滑、贝叶斯检测、马尔可夫链蒙特卡罗方法(MCMC)、鲁棒主成分分析(PCA)等等,后面我们可以专门来详细讨论。

实验场景和环境的设计

实验场景和环境的设计要努力遵循以下三大设计目标:

在生产环境运行实验

持续自动化运行实验

最小化实验场景的“爆炸半径”

实验场景设计

以下是亚马逊AWS云上常见的实验场景:

image.png

这些场景的实施能力,依赖于实验工具和平台框架的选型,后面我们会专门来深入讨论。

实验环境设计

image

实验环境的不同,带来不同的业务风险。生产环境的业务风险最大,开发环境的业务风险最小,其他依次类推。我们会建议用户在生产环境上进行混沌工程实验,当然前提是这些实验场景和工具已经在开发/测试和预生产环境得到了验证。当然在生产环境上进行混沌工程实验也不是强制的,用户可以选择适合自己的推进节奏,逐步向生产环境靠拢。因为实验越接近生产环境,从结果中学到的越多。同时,为了体现实验对照的效果,在生产环境进行的混沌实验可以通过真实生产流量分支的方式,组建控制组和对照组,以此区分故障注入的影响,从一定程度上控制了爆炸半径。对于非生产环境的混沌工程实验,可采用模拟生产流量的方式,尽量和生产流量相似,来验证实验场景和工具的可靠性。

综上,本文是混沌工程专栏的第三篇,首先我们回顾了专栏前两篇中的重要结论,由此引申出“如何进行对照实验设计”这个实施性问题,并从实验可行性评估、观测指标设计与对照、实验场景和环境的设计三个维度,深入分析和讨论了混沌工程实验的对照设计原则和方法,后续我们还会针对特定专题进行剖析。

作者:祁小彬

链接:https://www.jianshu.com/p/7245d8480e85

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章

  • 混沌工程-阿里周洋肖长军以及Thoughtworks伍斌的实践

    云原生架构下的混沌工程实践,讲述了什么是混沌工程,混沌工程的5项原则。为什么要引入混沌工程?介绍了混沌工程开源工具...

  • 前端组件 混沌

    什么是混沌 混沌即混沌工程,首先我们得知道混沌工程是什么。 混沌工程起源于Netflix公司,Netflix公司的...

  • 混沌工程

    混沌工程的原则 混沌工程通过运行经过仔细计划的试验来了解系统在发生故障时的行为,一般分为三个步骤: 先是假设系统在...

  • 混沌工程

    混沌工程是什么 背景 随着服务化、微服务和持续集成的普及,软件研发效率和敏捷性得到了极大提升,但大规模服务节点和复...

  • 混沌工程

    混沌工程是近十年出现的,然而我们大部分人包括我自己都没有接触或者听说过,对我自己小白做个知识普及。 混沌工程定义 ...

  • 混沌工程

    定义 混沌工程是一种可试验的、基于系统的方法来处理大规模分布式系统中的混乱问题。通过不断试验,了解系统的实际能承受...

  • 混沌工程简介

    最近看到 Netflix 的混沌工程的介绍,感触颇深。在 TiDB 里面,我们为了保证系统的健壮性,也做了很多工作...

  • 混沌工程原理

    混沌工程是在分布式系统上进行实验的学科, 目的是建立对系统抵御生产环境中失控条件的能力以及信心。 大规模分布式软件...

  • 混沌工程意义

    背景 由很多微服务组成的分布式系统中,永远难以全面掌握什么事件会导致系统局部不可用,甚至全面崩溃。主要因素: 1)...

  • 韧性工程与混沌工程

    摘取自【韧性架构】韧性性工程的重要性[https://jiagoushi.pro/importance-resil...

网友评论

      本文标题:混沌工程知识《五》

      本文链接:https://www.haomeiwen.com/subject/awiemdtx.html