你的位置:先锋影音成人影院 > 动漫成人快播 > telegram 反差 基于微辞工程的微处事韧性风险识别和分析

telegram 反差 基于微辞工程的微处事韧性风险识别和分析

发布日期:2024-11-19 15:00    点击次数:156

telegram 反差 基于微辞工程的微处事韧性风险识别和分析

微处事架构(microservice architecture)是由马丁·福勒所建议的一种新的软件架构形式[1], 它将一个单体的软件系统拆分为若干可孤独运行、部署的微处事(microservices).微处事架构将软件功能变更的鸿沟抵制在一个微处事里面, 且不影响其他的微处事telegram 反差, 大幅减少了软件功能迭代过程中系统再行构建、测试、部署的老本, 因此, 接收微处事架组成为了DevOps开发形式中常用的技巧[2].连年来, 微处事架构已成为很多互联网公司会使用的一种主流软件架构形式[3-5].

联系于早年面向处事架构的软件系统, 接收微处事架构的软件系统(以下简称微处事架构系统)对处事的分散更细粒度化, 况且每每会使用容器技能提高系统资源的讹诈率, 致使微处事架构系统部署结构更为复杂.受此影响, 微处事架构系统会濒临更多非软件假想时弊成分(如处事器不测宕机、汇集不褂讪等)所激勉的软件系统故障[6].除了软件系统故障除外, 软件系统的升级、系统部署配置(如微处事的冗余备份配置、编造机的资源分拨)的动态变更、未预期的责任负载等情况, 均可能导致微处事架构系统弗成平素提供其处事[7].

在传统的软件系统质地度量中, 描写系统搪塞故障才能的度量目的有可用性、可靠性、容错性等[8], 这些度量目的每每将系统的情状分为“可用/可靠”和“不可用/不可靠”两种.然而, 连年来对云运筹帷幄故障形式的关系研究标明[7, 9]: 故障除了能平直导致系统处事自身的不可用之外, 也可能会使系统处事质地(性能)受到严重影响, 然而系统处事仍处于可造访情状.在这种情况下, 可用性、可靠性这一类目的并弗成完全体现出一个微处事架构系统在故障发生时其系统处事性能受到影响的严重进程.举例, 一个系统在情况A下系统处事的平均响适时候从3s延迟至5s, 在情况B下系统处事的平均响适时候从3s延迟至12s, 假设情况A和情况B抓续的时长沟通, 那么系统在情况A和情况B下的可靠性亦然沟通的.然而很明显, 系统在情况B下处事性能受影响的进程比在情况A下严重.另一方面, 现存对软件系统处事性能的评估方法主要以性能测试为主, 通过性能测试不错识别出系统在一定处事压力下体现出来性能假想时弊.然而系统在故障发生时, 系统处事性能受到的影响并不会在性能测试中考据.

基于上述原因, 微处事架构系统的关系研究东说念主员出手使用“韧性(resilience)”一词暗示系统处理故障的才能[10, 11](“resilience”一词在不同学术鸿沟中有多种翻译, 每每被翻译为“弹性”“韧性”, 而国内运筹帷幄机鸿沟现在对resilience的翻译尚未确定.由于“弹性”一词早已在云运筹帷幄中被用来描摹软件系统的伸缩性和可膨胀性, 本文使用“韧性”一词作为resilience的翻译).为了提高微处事架构系统的韧性, 负载平衡、熔断机制、心跳检测等一些常用的系统容错机制[12]被开发东说念主员和架构假想东说念主员应用在系统上.

在运筹帷幄机鸿沟中, 现在还莫得对软件韧性有和谐的界说.笔据其他鸿沟研究中对韧性的界说[13]以及韧性这一意见在微处事架构系统开发者中被使用的情况, 本文作家在先前的研究责任[14]中从处事性能的角度将微处事架构系统的韧性界说为: “一个微处事架构系统在系统环境扰动发生并导致其处事性能着逾期, 保管其处事性能在一个可接受的水准, 并快速将处事性能复原至平素情状的才能”.其中, 系统环境扰动(disruption)是其他鸿沟韧性研究中的一个通用意见, 意为影响系统(非专指软件系统)功能平素运作的事件.在微处事架构系统中, 系统环境扰动既包括软件系统的里面组件故障, 也包括上文中所说起的诸如系统升级、配置变更等使微处事架构系统产生“变更”的事件.在上述界说的基础上, 该研究建议了微处事韧性度量模子MRMM(microservice resilience measurement model), 该模子将微处事架构中关系韧性的意见进行意见建模, 并给出用于度量系统环境扰动发生时处事性能变化的3个度量维度, 以评估其对微处事架构系统处事性能的影响进程.

通过竖立由MRMM的3项度量目的组成的处事韧性方针, 不错描写出一个微处事架构系统预期达到的处事韧性; 随后, 微处事架构系统的开发东说念主员将在各式可能的系统环境扰动中寻找出会超出韧性方针阈值的扰动, 将其认定为挟制微处事韧性的软件风险(以下简称为韧性风险), 并为其假想系统搪塞机制[15].在传统的软件风险分析过程中, 对软件风险的识别每每接收头脑风暴、行家教导等东说念主为分析方法, 关联词在微处事架构系统中, 跟着微处事数目的增多以及处事之间调用关系的复杂化, 笔据微处事架构系统中种种型系统资源可能发生的环境扰动事件类型, 东说念主为地列举出整个可能发生的具体系统环境扰动(如某一个处事存在一种扰动类型, 就需要穷尽方针系统的各个处事在发生这种扰动后可能的情况)并一一考据这些扰动是否会产生严重的处事左迁, 明显会虚耗精深的东说念主力老本以实时候老本.关于识别到的韧性风险, 现存的故障会诊和分析方法需要对方针系统的整个通讯过程植入监控代码, 或对历史性能数据东说念主工地标注系统平素十分与否, 将破耗精深相当的系统开发老本或东说念主工老本.此外, 莫得和谐的韧性度量方法, 使得微处事架构系统的研究东说念主员难以界定处事性能受系统环境扰动影响的严重进程, 并在迭代过程中选定需要优先处理的韧性风险.总而言之, 微处事架构系统的韧性风险识别过程中存在着以下两个问题.问题1:怎样使用较少的东说念主力和时候老本识别出方针微处事架构系统的韧性风险?问题2:怎样分析识别到的韧性风险对方针微处事架构系统的影响?

针对上述问题, 本文建议了微处事韧性风险的识别和分析方法, 其全体经过如图 1所示.当先, 本方法笔据MRMM模子中的韧性度量目的为方针微处事系统中的处事竖立韧性方针; 随后, 基于微辞工程的方法履行若干次微辞实验, 在每次微辞实验中, 以随即的状貌生成系统环境扰动, 通过比拟实验中系统环境扰动产生的处事左迁是否超出处事韧性方针的阈值范围, 识别出方针系统中的韧性风险.针对每一个被识别的韧性风险, 为了免去对微处事架构系统的相当开发老本和对性能数据的东说念主工标注老本, 本文通过因果关系搜索算法无监督地分析实验罢了数据中各系统性能目的之间的因果关系, 并给出可能的韧性风险影响链路.

Fig. 1 Process of microservice resilience risk identification and analysis 图 1 微处事韧性风险的识别和分析过程

本文第1节详细本文的关系研究.第2节先容基于微辞工程的韧性风险识别方法.第3节先容针对微处事架构系统的韧性风险分析方法.第4节以一个微处事架构系统Sock-Shop为例, 对本文建议的方法进行案例研究.第5节进一步分析案例研究的实验罢了, 总结本文的责任, 并建议下一步的研究打算.

1 关系责任

在学术研究中, 韧性最早由生态学家Holling于1973年所建议, 用以暗示一个生态系统响应外部过问并复原由外部过问所带来的挫伤的才能[16].随后, 韧性这一意见逐渐被引入至社会-生态系统、经济学、组织不停、城市有计划等多个鸿沟[17, 18].在软件/运筹帷幄机鸿沟中, 韧性的意见固然在微处事架构降生之前就已被建议, 但运筹帷幄机鸿沟关系韧性的研究联系于其他鸿沟仍处于初步阶段.Laprie于1992年在可靠性(dependability)关系界说的综述中建议了韧性的意见, 并将韧性界说为软件系统对故障的复原才能[19]; 随后, 于2008年建议将韧性作为可靠性(reliability)的推行研究, 再即将韧性界说为: 在软件系统在面对系统环境、配置等成分变化时, 系统保管处事发布情状的才能[20].2012年, 由科因布拉大学和纽卡斯尔大学建立的AMBER(assessing, measuring, and benchmarking resilience)组织回归了各文献对韧性的界说, 并发扬了韧性在云运筹帷幄中的必要性以及与软件韧性的关系研究[21].一些针对软件/运筹帷幄机韧性的研究[22-24]基本王人通过应用其他鸿沟的界说来确认韧性这一意见, 并尝试解释韧性与可靠性、容错性等软件质地性情的关系.

在微处事架构被建议的几年内, 微处事架构韧性的繁重性就已在一些应用册本[10, 25]以及学术研究[11]中被建议.与软件/运筹帷幄机整个这个词鸿沟的现存韧性研究沟通, 现在绝大部分提到微处事架构韧性的研究只是提到了韧性的意见, 并基本以现存韧性机制(如负载平衡、熔断机制等)的优化研究为主, 包括微处事的健康不停[26]、负载平衡[27]、故障复原机制[28]、故障发现等[29].也有少数针对微处事韧性伸开的关系表面研究.Heorhiadi等东说念主建议了一种微处事架构的韧性测试框架[30]; Thomas和Andre建议了用于微处事架构性能和韧性基线分析的元模子[31], Giedrimas笔据现存的韧性机制总结了微处事架构韧性假想中需要沟通的几个方面[32], Andre和Aleti建议了一种结合了责任负载和故障注入的微处事架构韧性基线考据框架[33], Michal和Marian比拟了单体应用和微处事架构之间在性能和韧性之间的各别[34].关联词, 现存微处事韧性的研究中并未有从软件风险角度商讨韧性的研究.

软件风险评估(software risk evaluation)是软件工程中的繁重过程之一, 其中, 软件风险识别是软件风险评估过程中的紧要设施[35].主流的软件风险评估方法有故障树分析法(fault tree analysis)[36]、诞妄用例法(misuse case)[37]、挟制建模(threat modeling)[38]以及FMEA法[39].上述的评估方法在软件风险识别阶段均使用东说念主为方法识别软件风险, 通过参考行家教导以及肖似的历史表情或者头脑风暴来列出可能挟制软件自身以及软件开发过程中潜在的风险.其中, 挟制建模在风险识别阶段引入了STRIDE模子[38], 通过摆列不同的风险类型启发风险分析东说念主员找到软件表情的潜在风险.连年来, 对软件风险导出方法的研究也主要以针对不同鸿沟软件的优化为主, 软件风险的识别仍然使用东说念主为方法[40, 41].

微辞工程[42]是由Netflix公司于2017年建议的一种用于考据微处事系统对故障搪塞才能的实验方法.通过随即地对方针系统进行故障注入, 不雅察系统处事是否被故障影响.Netflix针对自身的应用的关节处事——视频播放处事, 以每秒视频的启动次数(video-stream start per second, 简称SPS)作为度量目的, 通过不雅察故障注入后视频播放处事的SPS值是否会低于指定阈值, 判断注入的故障是否为潜在系统风险.现在, 在运筹帷幄机鸿沟关系微辞工程的学术研究极少, 在SCI、EI、DBLP等数据库中对“Chaos Engineering”一词进行检索, 仅能搜索到少许与Netflix建议的微辞工程意见一致的关系文献.在建议微辞工程的意见后, Netflix又针对微辞工程的交易价值[43]、测试平台[44]及微辞实验的履行过程[45]进行了进一步发扬.Zhang等东说念主针对Java编造机建议了ChaosMachine框架[46], 该框架大要在微辞实验的过程中.通过添加Java注目的状貌收场在Java代码中插入十分(exception)抛出活动, 以考据Java处事拿获并处理十分的才能.Jesper等东说念主针对容器环境建议了ChaosOrca框架[47], 收场了对部署微处事环境的容器的系统调用进行故障注入.Kennedy等东说念主讹诈微辞工程的方法随即地对云处事进行安全性障碍, 以发现云处事中的数据安全问题.现在, 微辞工程已被业界招供为一种可本质的方法论[48-50], 并已有一些可用于本质的器具, 如Netflix的ChaosMonkey、阿里巴巴的Chaosblade、微辞工程处事Gremlin以及开源表情Chaos-toolkit等.这些器具现在的主邀功能为收场特定的系统环境扰动, 并提供对应微辞实验文献模板或指示给测试东说念主员, 而关系微辞实验的具体假想过程并莫得关系收场.本文的案例研究中, 也将讹诈上述器具收场的系统环境扰动发现方针系统潜在的韧性风险.

故障会诊是用于分析软件风险对软件系统影响的一种繁重方法.现存针对分散式处事架构的软件系统的故障会诊方法不错分为基于监督学习的方法和基于系统调用关系的方法.

● 基于监督学习的方法[51-54]需要在一个已标签过的数据集上进行机器学习模子的教师, 教师后的模子大要判断现时系统中是否存在某一种类型的十分.现在, 基于监督学习的故障会诊方法需要精深采集系统的历史数据, 况且每每仅能判断方针系统是否存在某一特定类型的故障.

● 基于系统调用关系的方法将当先构建出系统处事和系统资源之间的依赖关系图, 并笔据依赖关系定位系统故障的根因.其中, 系统处事和资源的依赖关系每每参考已有的教导学问[55-58], 或者通过在代码中插桩获得处事或组件之间调用关系[59-62].这一过程需要东说念主工识别处事和资源之间的依赖关系或者在现存系统上开发特定的器具拿获依赖关系.

为了大要仅通过系统性能数据构建出微处事架构系统的依赖关系图, 陈鹏飞等东说念主先后建议了CloudRanger[63]、Microscope[64]、CauseInfer[65]这3种根因会诊模子.上述3种模子均使用了因果搜索算法分析方针微处事系统的系统资源和处事之间的因果关系并构建因果关系图, 且通过实考据明了因果搜索算法在对微处事系统的故障会诊上联系于现存故障会诊方法在准确率和成果上具有显耀的上风, 且无需对系统性能数据标注标签.参考上述研究责任, 本文在韧性风险的分析过程中一样使用了因果关系搜索算法来构建方针微处事系统中性能目的之间的依赖关系.

本文作家在先前的研究责任[14]中建议了微处事韧性度量模子MRMM, 该模子使用了性能左迁进程、左迁复原时候和左迁亏本这3个度量维度度量了一次系统环境扰动产生的处事左迁中系统性能的变化, 以体现系统环境扰动对微处事架构系统的影响进程, 如图 2所示.以MRMM为基础, 该研究建议了一种韧性需求的暗示方法, 通过方针导向的需求模子体现出微处事架构中韧性方针、韧性风险和韧性机制之间的关系.关联词, 怎样识别出一个微处事架构系统中的韧性风险并对其进行分析, 并莫得在该研究的商讨范围内.

Fig. 2 Three resilience metrics in MRMM 图 2 MRMM中的3个韧性度量目的 2 微处事架构系统韧性风险的识别方法

基于微辞工程的本质方法和微处事韧性度量模子MRMM[14], 本文建议了针对微处事架构系统的韧性风险识别方法.联系于传统的软件风险评估模子中东说念主为识别软件风险的方法, 该方法将讹诈微辞工程器具中已收场的系统扰动事件类型, 以随即的状貌自动构建出精深微辞实验, 抓续地对方针微处事架构系统进行微辞实验, 并以事先竖立的韧性度量方针判断某种系统环境扰动是否为韧性风险, 收场了一种针对韧性风险的发现战术, 并免去了东说念主为穷尽并考据各处事中不同系统资源类型的各式环境扰动对方针系统影响的东说念主工老本.具体的微辞实验实例详见本文第4.2节的案例研究部分.

2.1 假设与前提

本文所建议的微处事系统韧性风险识别方法具有以下假设和前提.

(1) 方针微处事架构系统除名DevOps的开发形式, 系统治有齐备的自动化构建、部署体系.

(2) 方针微处事架构系统已完成了初次迭代, 并有一个可部署履行的版块.

(3) 方针微处事架构系统中, 整个系统处事的实时处事性能数据不错通过器具采集.

(4) 方针微处事架构系统由于自身的性能假想时弊导致的处事性能着落不在本文的研究范围内.

(5) 本文将仅沟通单个系统环境扰动对微处事架构系统的影响, 关于多种扰动对处事的组合影响, 将在本文的后续研究中进一步探讨.

2.2 韧性风险识别方法

本文建议的韧性风险识别方法将包含以下几个设施.

(1) 迷惑处事性能基线

通过竖立由MRMM的3项度量目的组成的处事韧性方针, 不错描写出一个微处事架构系统预期达到的处事韧性.当一个处事发生的某次处事左迁所测量得到的处事韧性超出了其处事韧性方针的阈值范围, 导致该次处事左迁的扰动将被识别为微处事架构的韧性风险.MRMM中的各项韧性度量目的均通过运筹帷幄服求本色性能与处事性能基线的各别得到, 因此在韧性风险识别过程的出手阶段, 需要对方针微处事架构系统所提供的每个系统处事建立处事性能基线, 以判断处事是否处于处事左迁情状.迷惑处事性能基线的过程中包含两个设施.

a) 确定处事性能目的.

笔据处事类型的不同, 处事性能的关隆重心也会不同.因此, 每一个系统处事王人需要确定其关节处事性能目的.处事性能目的的选定不错参考现存IT系统性能措施(如SPEC[66]、TPC[67, 68]、ETSI GS[69])、性能评估数据集[70, 71]以过火他处事度量目的选定关系研究[72]中常见的性能目的.沟通到微处事架构系统的最终方针是为互联网公司获得盈利, 一些特定的处事需要竖立与交易需求关系的性能目的.举例, Netflix将每秒用户视频的播放数目作为一种需要检测的关节性能目的[43].

b) 笔据处事性能目的迷惑处事性能基线.

在确定处事性能目的之后, 对每一个处事的处事性能目的建立对应的处事性能基线.笔据性能目的类型的不同, 性能基线既可能是一个定值(如处事响适时候的基线值每每为一个定值), 也可能随事件变化动态取值(如销售处事的每秒到手走动量的基线值会跟着销售淡旺季变化而变动).定值的性能基线的竖立状貌有统计历史运行数据(如处事处于平素情状时的性能数值)、鸿沟行家给出教导值、参考关系措施(如上文提到的IT系统性能措施)给出的建议值等,另类图片 动态的性能基线则不错在历史处事性能数据上使用时候序列数据处理算法(如EWMA、ARMIA、LSTM等)运筹帷幄处事在某个时段中若平素运行其性能的预估值来得到.

(2) 竖立处事韧性方针

处事韧性方针是用于判断系统环境扰动是否为韧性风险的基准, 其体现了系统环境扰动发生后系统处事的处事左迁进程的可接受范围.处事韧性方针将按照MRMM中的3个韧性度量目的进行竖立.各个系统处事的处事韧性方针值的竖立将依据各个处事的本色业务需求, 其中没挑升念念的度量维度则不需要竖立对应的方针值(举例, 以系统响适时候作为性能目的的处事不需要竖立左迁亏本的处事韧性方针).

(3) 确立微辞实验参数

微处事架构韧性风险的识别过程中, 需要对微辞实验进行参数限度以抵制整个这个词识别过程所破耗的时候.微辞实验的参数包含:

① 实验次数: 一次韧性风险识别过程中将履行些许次微辞实验.

② 实验最大时长: 每次微辞实验最多抓续些许时候, 若一次微辞实验的实验时候跳跃确立的最大时长, 该次微辞实验将被强制拒绝.

(4) 进行微辞实验

微辞实验将通过随即地生成系统环境扰动, 并将其引入至正在运行的方针微处事架构系统中.在履行微辞实验的过程中, 为了保证每一次微辞实验不会被前一次微辞实验中引入的系统环境扰动所影响, 微辞实验将讹诈自动化构建器具将方针微处事系统进行再行构建、部署, 并在实验末端后就义实验环境.每一次微辞实验中, 将包括以下两个随即成分.

● 系统压力场景: 在微辞实验中, 方针微处事架构系统将承受一定的业务压力, 从而使由于系统环境扰动产生的处事左迁愈加明显.而为了使实验环境大要愈加逼近系统真确运行环境, 系统业务压力的模拟将参考系统在真确运行环境中可能濒临的业务压力场景.每一次微辞实验, 将随即地录取一个压力场景进行业务压力模拟.

● 系统环境扰动: 微辞实验中, 系统环境的扰动将按照以下状貌生成: 当先, 系统环境扰动的生成器具将随即地选定发生系统环境扰动的资源类型; 随后, 系统环境扰动的生成器具将在实验环境中指定资源类型的实例中随即录取一个作为系统环境扰动发生的具体位置; 终末, 在该资源类型中可能发生的系统环境扰动事件中随即地录取一个事件作为在微辞实验中发生的系统环境扰动事件.

在履行微辞实验的过程中, 除了系统压力场景的模拟以及系统环境的扰动之外, 还需要对方针系统实时地监控并进行数据采集.数据采集的对象包括两部分: ①系统处事的处事性能数据, 用以实验末端后度量实验中引入系统环境扰动后产生的处事左迁; ②系统资源性能数据(如CPU使用率、汇集流量等).

(5) 韧性风险识别

在整个的微辞实验末端后, 微辞实验中采集到的处事性能数据将与微辞实验前预设的处事性能基线数据进行比拟, 判断系统环境扰动过程中系统处事是否发生了处事左迁.若系统处事发生了处事左迁, 则笔据MRMM中的3个韧性度量维度对实验中发现的处事左迁进行度量, 并与预设的处事韧性方针比拟: 要是处事左迁的进程超出了处事韧性方针所预设的阈值, 则确认此次微辞实验中所引入的系统环境扰动是严重影响系统处事性能的韧性风险, 该次微辞实验中生成采集得到系统处事性能数据和系统资源性能数据将作为韧性风险分析的依据.

3 微处事架构系统的韧性风险分析

如本文小序中所述, 本文建议的韧性风险分析方法将幸免对微处事架构系统自身的相当开发老本, 以无监督的方法分析一个韧性风险怎样影响方针系统并激勉处事左迁.该方法将以被识别的韧性风险所对应的微辞实验中采集的系统性能数据为依据, 通过因果搜索算法构建系统性能目的之间的因果关系图, 随后笔据系统性能数据的飞腾和着落变化对因果关系图中的各条边赋予权重, 最终输出若干由系统性能目的组成的韧性风险的影响链路, 这些影响链路将按照因果关系边的权重排序.微处事架构系统的运维东说念主员不错笔据韧性风险的影响链路中波及到的系统性能目的假想对应的系统优化决议.韧性风险分析方法的全体经过如图 3所示.

Fig. 3 Process of resilience risk analysis 图 3 韧性风险分析过程 3.1 微辞实验数据采集

关于每一个被识别的韧性风险, 其对应的微辞实验履行过程中的处事性能和资源性能的历史数据将作为韧性风险怎样产生处事左迁的分析依据.本文建议的韧性风险分析方法所分析的方针为系统各项性能目的之间的因果变化关系, 因此会在每一次微辞实验中将通过监控器具采集方针系统在该次微辞实验中的系统性能数据集{timestamp, K1, K2, …, Kn}, 其中, timestamp为时候戳, K1, …, Kn为在该时候戳下的各项系统性能目的.图 4为一个样例的微辞实验数据集, 其中, 第1列为每一溜性能数据对应的Unix时候戳, 第2列出手的每一列暗示某一项系统性能目的(如第3列为cart处事的平均央求延时, 单元为s), 某一溜某一列的数据暗示该行第1列时候戳下拿获到的该列所对应的系统性能目的的本色值.

Fig. 4 A sample chaos experiment dataset 图 4 微辞实验数据集样例 3.2 因果关系图构建

基于在微辞实验中采集的系统性能数据集, 本文建议的韧性风险分析方法将当先通过因果搜索算法构建性能目的之间的因果关系图.因果关系图为由一系列暗示性能目的的节点和暗示性能目的之间因果关系的边组成, 因果关系图中整个的边仅暗示性能目的之间的平直因果关系, 不包含辗转因果关系.若某个性能目的X影响了另一个性能目的Y, 则用有向边X→Y暗示.要是算法能明确两个性能目的X, Y之间存在因果关系但弗成明确是X影响了Y如故Y影响了X, 则用无向边X—Y暗示.

本文中使用的因果搜索算法参考了Sprite和Glymour所建议的PC算法[73]的主要念念想, 最终, 算法将输出一张包含有向边和无向边的因果关系图.因果关系构建算法的具体经过如算法1所示, 其主要包含两个设施: 因果关系迷惑以及因果标的迷惑.在因果关系迷惑阶段, 算法当先构建以数据集内性能目的为节点的完全图; 随后, 关于淘气两个性能目的X, Y, 算法通过判断X和Y是否条目孤独来确定X和Y之间是否存在因果关系.若X和Y条目孤独, 确认X和Y之间不存在平直的因果关系, 则在完全图中删除对应的边; 终末得到初步的仅包含无向边的因果关系图.在因果标的迷惑阶段, 算法将先笔据d-分隔原则确定因果关系图中整个的X→Y←Z的结构, 即V-Structure; 随后, 笔据在V-Structure中还是确定的有向边和一些逻辑估量规定(算法1伪代码的第15行~第21行), 算法将进一步确定现存的因果关系图中部分剩余无向边的标的.举例, 在还是确定图中整个X→Y←Z结构的情况下, 若发现结构A—B←C, 则不错平直判断边A—B的标的为A←B.

算法1. 因果关系图构建算法.

输入: 微辞实验数据集D, 数据集D中的监控目的连结V.

输出: 因果关系图G.

1. //因果关系迷惑

2. 以V中的元素作为节点, 构建完全图G

3. n←V中元素的数目

4. for k from 0 to n:

5. for each X, Y为G中的两个相邻节点, 且邻接于X的节点数目大于k:

6. for each连结W⊂V\{Y}为邻接于X的节点连结telegram 反差, 且W的元素数目为k:

7. if X, Y条目孤独于W then:

8. 去除X与Y之间的边

9. 纪录W

10.

11. //因果标的迷惑

12. for each G中相邻的3个节点X—Y—Z:

13. if Y不存在于整个使得X于Z孤独的节点连结中:

14. 把G中X—Y—Z的标的修改为X→Y←Z

15. for each G中相邻的3个节点X, Y, Z:

16. if X→Y—Z:

17. 把Y—Z的标的修改为Y→Z

18. if X—Y and X→Z→Y:

19. 把X—Y的标的修改为X→Y

20. if X—Y and存在另一变量L, 使得X—Z→Y且X—L→Y:

21. 把X—Y的标的修改为X→Y

22. return G;

在确定两个性能目的X, Y之间是否存在因果关系的过程中, 基于d-分隔原则, 需要判断X和Y在其他性能目的为给定值的情况下是否条目孤独.由于微处事架构系统中通过监控器具获得的系统性能数据大部分为贯穿值, 为了判断贯穿数据的条目孤独性[74], 本文使用了如下方法.

建立零假设H0: 性能目的X, Y在给定条目C下的偏关系总共ρXY,C=0.其对应的备择假设H1为: X, Y在给定条目C下的偏关系总共ρXY,C≠0.通过F磨真金不怕火考据H0是否成立: 若H0成立, 则确认监控目的X, Y在给定条目C下条目孤独, 其本色好奇为X, Y之间莫得因果关系或者X, Y经由C产生了辗转的因果关系.零假设H0在F磨真金不怕火下的显耀性水平z(ρXY,C)的运筹帷幄公式如公式(1)所示.

$z({\rho _{XY, C}}) = \frac{{\sqrt {n - |C| - 3} }}{2} \cdot \log \left| {\frac{{1 + {\rho _{XY, C}}}}{{1 - {\rho _{XY, C}}}}} \right|$ (1)

其中, n为微辞实验数据汇注性能目的的数目, |C|为C中性能目的的数目.通过文献[75]中的论证可知, 欢喜措施正态分散.给定阈值p(本文中p=0.05), 若|z| < p, 则接受假设ρXY,C=0, 确认X, Y在给定条目C下孤独, 并删除因果关系图中对应的边X—Y.

3.3 因果关系边权重赋值

在第3.2节得到的性能目的之间的因果关系图中, 一个性能目的会存在多条指向该目的的因果关系链路.为了大要将多条因果关系链路排序, 优先输出可能性较高的因果关系链路, 本阶段为因果关系图中的每一条因果关系边赋予权重值, 作为因果关系链路的排序依据.由于韧性风险是基于微处事系统的处事左迁上所建议的, 且处事性能目的的飞腾和着落每每由其他系统性能目的的飞腾和着落引起, 本文将微辞实验数据汇注各性能目的的飞腾和着落变化作为因果关系边权重赋予的依据.要是在控制的时候段内两个性能目的同期发生了明显的变化, 则确认这两个性能目的很有可能是相互影响的.

模仿文献[76]中判断一个事件是否对时序数据产生影响的念念路, 为了检测某一性能目的的飞腾和着落, 本文建议的分析方法将该项性能目的的时候序列数据按照指定的数据量按序分散红若干个数据窗口, 对每两个相邻的窗口Γfront, 通过t磨真金不怕火(student t’s test) 运筹帷幄Γfront和Γrear之间的磨真金不怕火统计量tscore.tscore的运筹帷幄公式如公式(2)所示.

${t_{score}} = \frac{{{\mu _{{{\mathit{\Gamma }} ^{front}}}} - {\mu _{{{\mathit{\Gamma }} ^{rear}}}}}}{{\sqrt {\frac{{\sigma _{{{\mathit{\Gamma }} ^{front}}}^2 + \sigma _{{{\mathit{\Gamma }} ^{rear}}}^2}}{{n - 1}}} }}$ (2)

其中, n为数据窗口的大小, ${\mu _{{{\mathit{\Gamma }} ^{front}}}}, {\mu _{{{\mathit{\Gamma }} ^{rear}}}}, \sigma _{{{\mathit{\Gamma }} ^{front}}}^2, \sigma _{{{\mathit{\Gamma }} ^{rear}}}^2$分别为窗口Γfront和Γrear内性能数据的均值和方差.若运筹帷幄得到某两个窗口的tscore的完竣值大于某个特定阈值在摆脱度n-1时对应的磨真金不怕火统计量(如在阈值为0.05、窗口大小为20时, t磨真金不怕火对应的磨真金不怕火统计量为1.7291), 则确认性能目的在两个窗口之间性能发生了显耀的飞腾或着落变化.tscore为碰巧时, 性能目的显耀着落; tscore为负值时, 性能目的显耀飞腾.图 5展示了通过上述方法检测一个处事的性能目的变化的样例, 在性能数据上标注的绿色点暗示识别到的性能飞腾变化, 红色点暗示识别到的性能着落变化.

Fig. 5 Detected performance changes by student t's test 图 5 使用t磨真金不怕火检测到的性能数据变化

通过上述对性能变化检测的方法, 一个性能目的的时候数列数据不错调遣成图 6中的性能变化序列, 其中, 0暗示性能目的莫得显耀变化, 1暗示性能飞腾, -1暗示性能目的着落.

Fig. 6 Performance change series 图 6 性能变化序列

随后, 关于因果关系图中的每一条因果关系边, 以边上两个性能目的节点的性能变化序列作为输入, 运筹帷幄两个监控目的之间的皮尔森总共, 即可得到性能目的之间的在性能变化上的关联进程.图 7展示了一条因果关系边上的两个性能目的笔据性能飞腾着落的变化构建性能变化序列, 并以性能变化序列之间的关研究数为因果关系边赋予权重的整个这个词过程.

Fig. 7 Causality edge weight assignment 图 7 因果关系边权重赋值过程 3.4 韧性风险影响链路输出

基于在第3.2节中的因果关系图, 韧性风险影响链路将通过以下方法生成: 将不欢喜处事韧性方针的处事性能所对应的节点设为方针节点, 在因果关系图中寻找整个平直或辗转指向方针节点的性能节点, 终末构建出整个由这些节点组成, 并最终指向方针节点的因果关系链路.与现存的使用因果关系图的根因会诊的研究沟通, 本文以深度优先遍历的念念路收场了旅途构建算法, 并最终将整个的因果关系链路作为罢了输出.

由于在因果关系图中同期包含了有向边和无向边, 在因果关系链路构建的过程中, 需要对深度优先算法作念出相应的转换, 将无向边手脚两条标的相背的有向边处理.此外, 在因果关系图中进行旅途遍历, 每每会复返一条以上的因果关系链路.为了对这些因果关系链路进行排序, 以第3.3节中确立的因果关系边权重为依据, 本文建议的分析方法对因果关系链路的构建算法进行了如下改良: 当算法遍历到因果关系图中的某一个节点时, 算法将优先遍历与该节点相连的权重值较高的边.因此, 算法在终末输出韧性风险影响链路的过程中将以可能性从高到低的律例按序输出可能的因果关系链路, 图 8为一个基于边权重的因果关系链路排序的样例.

Fig. 8 Sort causality chains by weight of causality edges 图 8 笔据因果关系边的权重收场因果关系链路的排序

整个这个词因果关系链路的构建算法如算法2所示.算法将输出已排序的若干以韧性风险所影响的处事性能目的为最终节点的韧性风险影响链路, 运维东说念主员大要按照韧性风险影响链路中的性能目的对韧性风险所带来的影响进行进一步分析.

算法2. 因果关系链路构建算法.

输入: 因果关系图G, 肇始节点N.

输出: 因果关系链路连结path_strings/

1. function searchSource(G, N)

//在因果关系图G中寻找十分性能节点N的影响链路

2.   var search_result //图搜索罢了, 搜索的罢了为一个树结构

3.   search_result.node←N

  search_result.children←[·]

4.   _searchSources(G, N, search_result) //以N作为源节点出手链路搜索

5. //笔据输出罢了构建因果链路连结

6. path_strings←[·]; //待输出的链路连结

7.    path_strings.push(N.name);

  //将唯有N一个节点的链路作为启动输入的缓存链路

8.    _build_path_strings(search_result.children, path_strings[0]);

  //通过图搜索罢了构建韧性风险影响链路

9.    return path_strings;

10. function _searchSource(graph, node, search_result)

//子算法: 在graph中搜索影响节点node的节点, 并把罢了存在search_result中

11.    links=getLinks(graph, node)

  //获得graph中整个节点中包含node的边的连结links

12. if links.length < 1:

13. return;

  //node的邻接节点中莫得不息需要追想的节点, 罢手不息链路搜索

14.    sub_graph=graph.remove(links);

  //构建一张新的子图, 在递归中使用子图进行根因搜索, 以保证从两个标的王人能追想的边不会因为在之前的递归中还是遍历而不会被再次搜索.

15.   links=links.sort(links.weight) //笔据边的权重排序, 权重较高的边将优先输出

16. for link in links:

17. other_node←link中除node外的另一个端点;

18. var child_result //将link的另一个端点手眼下一个需要追想的节点

19. child_reuslt.node←other_node

20. child_result.children←[·]

21. search_result.children.push(child_result);

22. _searchSource(sub_graph, sub_node, search_result.children[sub_node]);

  //以递归的状貌不息追想链路

23. function _build_path_strings(node_children, cur_string)

  //子算法: 在缓存旅途cur_string后笔据children不息构建链路

24. if node_children.length < 1:

25. return; //已莫得后续节点, 罢手构建链路

26. path_strings.remove(cur_string) //在最终输出链路中删除缓存链路

27. for child in node_children:

28. new_string=child.name+“→”+cur_string

  //构建新的缓存链路, 由于节点到节点的追想过程具有标的性, 算法在链路分析罢了中把无向边手脚有向边输出

29. path_strings.push(new_string); //在最终输出中添加缓存链路

30.    _build_path_string(child.children, new_string);

//递归调用链路生成方法以输出整个可能的链路

4 案例研究以及罢了分析

为了考据本文建议的微处事韧性风险识别和分析方法的灵验性, 本文录取了由文献[77]所建议的微处事基线测试套件Sock-Shop(https://microservices-demo.github.io/)作为实验对象, 对本文建议的方法进行案例考据.案例研究中将考据以下研究问题.

(1) 本文建议的韧性风险识别方法是否大要自动地识别出方针系统的韧性风险?

(2) 本文建议的韧性风险分析方法是否大要灵验地分析出方针系统在发生韧性风险时因果的影响链路?

4.1 方针系统以及实验环境

图 9为Sock-Shop的系统架构图.整个这个词Sock-Shop系统由前端(front-end)、订单处事(order)、支付处事(payment)、用户处事(user)、商品细则处事(catalogue)、购物车处事(cart)以及邮寄处事(shipping)这几个微处事组成, 每一个微处事均不错孤独运行且领有孤独的数据库.为了保证微处事技能异构性[10]的性情, Sock-Shop中不同微处事的收场言语以及使用的数据库各不沟通.Sock-Shop中, 微处事之间的通讯以HTTP通讯为主, 并使用了RESTful的接口假想立场.

Fig. 9 Sock-Shop architecture 图 9 Sock-Shop系统架构

图 10为案例研究中Sock-Shop的部署环境图, 整个这个词部署环境将由一个抵制处事器和由一个Master节点以及3个Worker节点所构建的容器集群不停平台Kubernetes(https://kubernetes.io/)组成.Sock-Shop系统被部署在Kubernetes集群上, Sock-Shop中的每一个微处事均在一个或多个容器上部署.抵制处事器考究韧性风险识别方法的自动化收场.其中, Sock-Shop系统的自动部署和微辞实验的进行由部署在抵制处事器上的Jenkins(https://jenkins.io/)容器完成, 压力测试框架Locust(https://www.locust.io/)考究Sock-Shop应用压力场景的模拟, 微辞测试器具Chaos-Toolkit(https://chaostoolkit.org/)考究系统环境扰动的收场.部署环境的各个处事器配置沟通, 具体配置见表 1.部署环境中的容器均按默出嫁置部署, 并未对各容器的资源分拨情况进行相当确立, 因此, Worker节点上运行的各容器资源分拨形式均接收留器默许的按需分拨状貌.

Fig. 10 Sock-Shop system deployment environment 图 10 Sock-Shop的部署环境 Table 1 Server configuration of the deployment environment 表 1 部署环境的处事器配置

上述方针系统和实验环境欢喜了本文第2.1节中所建议的各项系统前提: 自动化部署组件Jenkins与Sock- Shop自身提供的Kubernetes部署配置文献欢喜了条目(1)的系统自动化构建才能; Sock-Shop系统已处于可发布运行的情状因此欢喜条目(2);Kubernetes自身集成的时序数据采集器具Prometheus使方针系统欢喜了条目(3).案例研究将当先按照条目(4)、条目(5)建议的假设下对方针系统进行韧性风险识别.

4.2 Sock-Shop的韧性风险识别

为了考据研究问题1, 本案例研究中将笔据本文第2节所建议的韧性风险识别方法寻找Sock-Shop系统中的韧性风险.

4.2.1 韧性风险识别

在Sock-Shop中, 整个的用户操作均为网页端的点击操作, 因此, Sock-Shop的系统处事均为事务性的HTTP处事.在本案例研究中, 处事平均响适时候(response time)以及响应到手率(success rate)被作为整个处事的基础性能目的.Sock-Shop的中枢处事的处事性能目的将笔据处事的业务存眷点竖立.表 2展示了在案例研究中针对Sock-Shop系统各处事所假想的处事性能目的.

先锋影音成人影院 Table 2 Service performance indicators of Sock-Shop 表 2 Sock-Shop的处事性能目的

案例研究中使用的部署环境是实验环境而非本色坐褥环境, 且Sock-Shop自身为开源系统并未对性能和容错方面有严格的假想.通过不雅察在实验环境中引入各式系统环境扰动后环境的处事左迁情况, 并参考ETSI措施中韧性测试的建议值[78], 对Sock-Shop中整个的系统处事的响适时候以及响应到手率这两项处事性能目的的基线值真的立也相对本色坐褥环境合乎放宽, 分别为5s以及90%.通过对方针系统的压力测试发现: 在莫得引入系统环境扰动的情况下, 方针系统每分钟能最多能接受约200个用户央求.因此, 以每分钟200个央求的系统峰值和Sock-Shop全体的业务经过为依据, 案例研究中假想了表 3中的系统压力场景, 并把在这些压力场景下采集到的系统处事性能数据作为系统性能基线.压力场景中, 对用户操作的模拟是通过编写剧本造访对应HTTP接口收场.用户活动模拟剧本会被压力测试器具Locust在每分钟并行地触发, 以收场系统环境压力的模拟.

艳母在线 Table 3 Workload scenarios of Sock-Shop 表 3 Sock-Shop的压力场景

在对表 2中的Sock-Shop各处事性能目的竖立韧性方针的过程中, 平均响适时候和响应到手率这两项通用处事性能目的的韧性方针竖立, 包含性能左迁进程以及左迁复原时候这两个维度.关于不同处事各自的处事性能目的, 处事韧性方针的维度录取将沟通到各个处事各自的业务性情.表 4为Sock-Shop各处事性能目的的具体处事韧性方针.为了分析微辞实验次数与识别的韧性风险数目之间的关系, 案例研究中, 对方针系统分别以微辞实验次数10次、20次、50次、100次进行韧性风险识别过程.沟通到每次微辞实验中Sock-Shop的自动构建、部署过程和自动就义过程, 每次微辞实验的实验最大时长被确立为30分钟.对Sock-Shop微辞实验中的系统压力场景的模拟将随即选定表 3中的一个压力场景.在微辞实验中引入的系统环境扰动所波及的系统资源以及系统资源对应的系统环境扰动事件见表 5.

Table 4 Service resilience goals of Sock-Shop 表 4 Sock-Shop各处事的韧性方针 Table 5 System environment disruptions events of different system resource types 表 5 各个系统资源类型的系统环境扰动事件

微辞实验过程中各个处事的处事性能数据将通过两个状貌采集: ①关于响适时候和响应到手率等通用的处事性能数据, 使用监控器具Prometheus(https://prometheus.io/)组件进行数据采集; ②关于各个处事中针对业务的处事性能数据, 讹诈系统压力模拟器具在压力模拟的同期采集各个央求的复返罢了, 对复返罢了进行统计得到实时的处事性能数据.在采集处事性能数据的同期, 系统其他各项系统资源的性能数据也将通过Heapster (https://github.com/kubernetes/heapster), Zabbix(https://www.zabbix.com/)等器具采集, 用于识别出韧性风险后对韧性风险与处事左迁的因果关系分析.

4.2.2 实验罢了分析

案例分析中, 对方针系统分别以微辞实验次数10次、20次、50次、100次进行了韧性风险识别.由于每次引入的系统环境扰动王人是随即生成的, 为了不雅察随即性对识别出的韧性风险数目的影响, 各微辞实验次数的韧性识别过程均实行了3次.表 6展示了不同微辞实验次数下所识别出的韧性风险数目.

Table 6 Number of identified resilience risks in different chaos experiments 表 6 不同微辞实验次数下识别的韧性风险数目

从表 6的考据罢了不错看出, 本文建议的微处事韧性需求识别方法大要识别出一定数目的方针微处事架构系统的韧性风险.固然在沟通微辞实验次数下识别到的韧性风险数目有一定各别, 然而低微辞实验次数识别到的韧性风险数目均低于高次数微辞实验识别到的数目, 确认识别过程中微辞实验的次数越多, 通过微辞实验发现的韧性风险越多.从沟通微辞实验次数的风险识别罢了比拟中不错看出: 系统扰动生成的随即性对识别出的韧性风险数目有着较大影响, 在微辞实验次数较少的情况下, 有着莫得识别出任何韧性风险的可能性.

由于微辞实验中的系统环境扰动是随即生成的, 为了考据韧性风险识别过程中重迭进行沟通微辞实验的可能性, 咱们对每一次识别过程中生成的系统环境扰动以及韧性风险进行了统计, 统计罢了见表 7.从表 7中不错看出: 固然在微辞实验次数较大的情况下出现了重迭的系统环境扰动, 重迭生成的系统环境扰动数目相对整个这个词识别过程中生成的系统环境扰动数目不错忽略不计.

Table 7 Number of duplicate system disruptions and resilience risks in different chaos experiments 表 7 微辞实验中重迭的系统环境扰动和韧性风险数目统计 4.3 Sock-Shop系统的韧性风险分析

限于著述篇幅, 本文将以一个本色的韧性风险为例, 展示对Sock Shop系统韧性风险的分析过程.图 11为一次微辞实验中订单处事每秒到手走动量的性能弧线, 在微辞实验中引入的系统环境扰动为对carts处事的容器的CPU占用率种植至100%.图 11中, 蓝色弧线为微辞实验中采集到的性能弧线, 红色弧线为通过Holt Winters算法以平素压力场景下的历史数据为输入得到的性能基线弧线.不错看出, 图 11中一段时候内订单处事的本色性能明显低于其性能基线, 确认订单处事由于环境扰动参加了处事左迁情状, 且通过运筹帷幄可得知该次处事左迁的性能亏本高于其性能亏本阈值(500个走动).因此, 本次微辞实验中引入的系统环境扰动被认定为韧性风险.

Fig. 11 A service degradation occurred in a chaos experiment 图 11 一次微辞实验中发生的处事左迁

在微辞实验的过程中, 通过Prometheus组件本色采集到的各处事的性能目的包括处事的每秒央求数目(qps, 其中包括到手的央求量qps(2xx)以及失败的央求量qps(4xx))以及处事央求延时这两项性能目的.在韧性风险识别阶段中的竖立处事性能目的(表 1)将通过以上目的换算得到.如,

$ 响应到手率=q{ps}(2xx)/({\rm{ qps }}(2xx) + qps(4xx))). $

除了采集处事性能的监控数据外, 同期会采集容器以及节点的性能数据, 具体采集的性能数据见表 8.

Table 8 Collected performance data in chaos experiments 表 8 微辞实验过程中采集的性能数据

在性能目的的因果关系图构建过程中, 需要保证每个时候戳下各性能目的均存在灵验值, 然而表 3中各项通过换算得到的处事性能目的并弗成保证这一丝(如在qps(2xx)和qps(4xx)均为0的情况下, 相应的到手率是无效值), 因此在韧性风险的分析过程中, 平直使用了本色采集的处事性能目的进行韧性风险分析, 构建韧性风险影响链路时的方针节点将使用与违抗处事韧性方针的性能目的平直关系的处事性能目的(如订单处事的每秒到手走动量与其每秒到手央求数平直关系).通过因果搜索算法得到各项性能目的之间的因果关系图如图 12所示(电子版文档中, 不错放大该图检察细节).其中, 蓝色节点为处事的性能目的, 红色节点为容器的性能目的, 绿色节点为kubernetes集群的责任节点的性能目的.

Fig. 12 Causality graph of performance indicators of all performance indicators 图 12 整个性能目的之间的因果关系图

图 13为图 12中整个处事每秒央求数目(qps)的因果关系图, 在与图 9的比拟后不错看出: 仅通过性能数据所构建的因果关系图基本与sock-shop的系统架构图一致, 况且大要反应出各微处事在业务场景上的先后关系(如浏览商品(catalogue处事)→添加购物车(carts处事)→用户下单(orders处事)).确认通过因果搜索算法生成的因果关系图在本色物理关系上具有一定进程的准确性.

Fig. 13 Causality relations among service QPS 图 13 处事QPS之间的因果关系

以图 12的因果关系图为输入, 运筹帷幄图中整个因果关系边的权重, 并以处事左迁的性能目的(每秒到手走动量)平直关系的处事性能目的(service/orders/qps(2xx))为尽头, 按照深度优先遍历的状貌寻找整个平直或辗转指向该节点的性能目的.最终得到的影响处事左迁的性能目的以及对应的因果关系边的权重如图 14所示.

Fig. 14 Performance indicators that influence the service degradation and corresponding causality edges 图 14 影响处事左迁的性能目的以及对应的因果关系边

将图 14中的因果链路笔据因果关系边的权重进行排序, 最终输出的韧性风险影响链路如图 15所示.图 15中标注为红色的性能目的(container/carts/CPU Usage)被微辞实验中引入的环境扰动平直产生影响的性能目的, 不错看出, 优先输出的韧性风险影响链路均掷中了引入的系统环境扰动.

Fig. 15 Resilience risk influence chain 图 15 韧性风险影响链路

通过不雅察图 15韧性风险影响链路中各性能目的的变化, 发现对cart容器进行CPU加压(container/cart/cpu)提高了cart处事的延时(service/cart/latency), 并减少了其他处事的央求量(service/处事/qps(200)), 因此减少了order容器的汇集央求传入量(container/orders/Network Input Packets)以及order容器内存中缓存的订单数目(container/orders/MEM Usage), 最终影响走动到手的订单数目(service/orders/qps(2xx)).图 16展示了上述性能目的在引入扰动时的具体性能弧线.从上述分析中不错看出, 案例研究中得到的因果关系链路一定进程上体现了从扰动到处事左迁的传播过程.

Fig. 16 Performance curves of different performance indicators when a disruption was injected 图 16 引入系统环境扰动时各性能目的的性能弧线 5 进一步分析与总结 5.1 实验罢了的进一步分析

为了进一步考据本文建议的韧性风险的分析方法是否大要灵验地分析出方针系统在发生韧性风险时因果的影响链路, 本文分析结案例研究中的屡次微辞实验中采集到的系统性能数据, 以评估韧性风险影响链路的准确度.本文中使用precision(查准率)和recall(查全率)作为评估韧性风险影响链路准确度的度量目的.由于本文建议的分析方法最终输出排序后的多条链路, precision和recall中TP的判断措施为输出的前k条链路是否掷中被引入的环境扰动, 其对应的precision和recall值分别记作precisionk和recallk.FP(false positive)暗示分析方法输出的前k条链路中莫得掷中环境扰动; FN(false negative)暗示分析方法输出前k条链路中莫得掷中环境扰动, 然而剩余的链路中掷中了环境扰动.为了便捷统计韧性风险影响链路是否掷中了被引入的环境扰动, 本文中仅分析了平直与系统性能关系的环境扰动所对应的微辞实验数据集(环境扰动包括: 将CPU讹诈率种植至100%(CPUBurnout)、将内存占用率辅导至100%(Mem overload)、磁盘IO禁止(disk I/O block)以及汇集传输延时(network Jam)).

● 通过因果关系搜索算法所构建的因果关系图是否准确?

在第4.3节的实验中, 已阐扬了通过因果关系算法构建的性能目的因果关系图与Sock-Shop的本色处事调用图基本一致.为模拟考据在处事数较多、调用关系较深情况下的因果搜索算法构建的因果关系图的准确性, 本文通过因果关系模拟器具tetrad()构建出包含不同数目节点和因果关系边的因果关系图, 并在假设的因果关系图上模拟精深数据.因果关系模拟算法将在模拟的数据中寻找变量之间的因果关系, 并将得到的因果关系与假设的因果关系进行比拟, 统计本色不存在的、存在但未识别的以及标的识别诞妄的因果关系边数, 以考据算法分析得到的因果关系的准确性.

Table 9 Accuracy of the causality search algorithm under different number of nodes and edges 表 9 不同节点和边数目下因果关系搜索算法的准确度

● 针对处事韧性假想的因果关系边权重赋值方法是否大要优化对韧性风险的分析过程?

本文中比拟了本文建议的因果关系边权重赋值方法和现存文献中使用的因果关系边权重赋值方法所得到的因果关系链路的准确度, 以考据本文建议的针对韧性风险的因果关系边权重赋值方法的灵验性, 被比拟的权重赋值方法有:

(1) 3σ检测: 通过3σ规定判断系统性能是否发生了十分, 并将系统性能的时候序列数据调遣成仅包含0和1的性能十分序列.随后, 以性能十分序列运筹帷幄性能目的之间的皮尔森系统作为因果关系边的权重.该方法为Microscope[64]中使用的方法.

(2) 阈值关联: 为了与CauseInfer[65]中对冲破系统性能目的的因果关系分析方法比拟, 在本案例研究中, 将为每一类型的系统性能目的竖立若干的阈值, 并笔据阈值将贯穿的性能目的序列调遣成冲破序列.随后, 一样使用皮尔森总共为因果关系边构建权重.

(3) 平直关联: 按照CloudRanger[63]中的方法, 平直使用两个性能目的数据的皮尔森总共作为因果关系边的权重.

各因果关系边权重赋值方法在不同类型的环境扰动下对最终输出的因果关系链的准确度的影响见表 10.从表 10中不错看出, 本文建议的针对系统性能变化的因果关系边权重的赋值方法在分析韧性风险上联系于其他权值赋予方法有更高的准确性.在4种引入的环境扰动中, 由于容器汇集关系的性能目的弧线与处事性能的弧线有较高的相似性, 识别汇集禁止的准确率联系于其他类型系统扰动更高.在表 10的实验罢了中, 基于3σ检测的韧性风险影响链路的准确度低于参考文献[64]中故障根因分析的准确度.这是因为基于3σ的十分检测方法更适用于寻找时候序列数据中的明显的离群点, 而在处事左迁发生的过程中, 系统性能会较万古候处于性能较低的情状, 无法被识别为十分.

Table 10 Accuracy of causality edge weight assignment methods under different environment disruptions 表 10 不同类型系统环境扰动下各因果关系边权重赋值方法的准确率

● 因果关系链路是否大要掷中注入的系统环境扰动?

本文中对方针系统的各个处事屡次注入了各式类型的系统环境扰动(为了保证各处事和各扰动类型的实验次数, 引入的环境扰动不一定为韧性风险), 并考据本文建议的分析方法输出的韧性风险影响链路的准确度.表 11为各个处事在不同环境扰动下的得到的影响链路分别在k=1和k=2情况下的precision和recall值.从表 11中不错看出: 通过本文建议的韧性风险分析方法关于识别案例研究中所注的种种型环境扰动均有较高的准确度, 且得到的韧性风险影响链路在大部分处事下大要保证80%以上的准确率, 仅对Shipping处事施加环境扰动时链路的准确率联系于其他处事较低.这是由于Shipping处事仅会被Order处事创建完用户订单后被调用, 且不会调用其他处事.故shipping处事的响适时候及到手率不会影响到其他处事, 较难产生明显的因果关系.

Table 11 Accuracy of the resilience risk analysis method under different services and disruptions 表 11 各处事在不同类型环境扰动下韧性风险分析方法的准确率

实验罢了中, 有几次环境扰动并莫得被准确地识别.通过对这几次实验的处事性能弧线及分析过程中得到的因果关系图的分析, 发现这几次微辞实验在引入环境扰动后并莫得产生明显的处事左迁, 酿成在因果关系图中引入扰动的性能目的节点的因果关系边权重小于其他性能目的节点的因果关系边权重, 故在构建的因果关系链路中排序较后莫得输出.莫得产生严严惩事左迁的系统扰动将不会被识别为韧性风险并进一步分析, 因此, 实验中根因定位失败的几次环境扰动不会影响本文建议的韧性风险识别和分析方法.

● 微辞实验数据汇注性能目的的数目以及数据条数是否会对韧性风险分析方法产生影响?

为了分析微辞实验数据汇注性能目的的数目及数据条数对韧性风险分析方法的影响, 实验均分别统计了在较少性能目的(20个)情况下和以50个性能目的为增量, 在50/100/150个性能目的情况下的系统资源虚耗, 并分别以25/50/250的梯度递加地统计了不同数据条数下韧性风险分析方法的系统资源虚耗.表 12为不同性能目的和数据条数下韧性风险分析方法对系统上的资源虚耗, 从表 12中不错看出: 本文建议的韧性风险分析方法大要在较短的时候内分析出微辞实验数据汇注的因果关系链, 且虚耗较少的CPU和内存资源.联系于数据条数, 微辞实验数据汇注的性能目的数目对分析所破耗时候有着更明显的影响.如安在保证算法准确度的同期缩小运筹帷幄时候, 将是本文的后续研究方针之一.

Table 12 System resource consumption of the resilience risk analysis method under different data length 表 12 不同数据量下韧性风险分析方法的系统资源虚耗

图 17为不同数据条数下, 韧性风险影响链路的Precision和Recall值(k=1).当微辞实验数据集的数据量较小时, 由于在因果关系图的构建过程中识别到的因果关系边数目变少, 导致了链路的准确度缩小; 而当数据集的数据条数达到一定数目(本案例中为200条数据)后, 链路的准确度能保抓在80%以上并处于一个相对褂讪的情状.由此可见, 本文建议的韧性风险分析方法仅需相对较少的数据条数即可保证算法的准确度.

Fig. 17 Influence of data length on resilience risk analysis accuracy 图 17 数据条数对韧性风险分析方法准确度的影响 5.2 总结

本文入辖下手于贬责微处事架构系统中韧性风险的度量、识别以及分析问题.基于MRMM模子, 并结合微辞工程的本质方法, 本文建议了针对微处事架构系统的韧性风险识别方法, 以识别出严重影响系统处事性能的韧性风险, 大幅地减少了韧性风险识别过程中的东说念主力与时候老本.对识别出的韧性风险, 本文建议了基于因果搜索算法的分析方法, 最终得到由系统性能目的组成的韧性风险影响链路以供运维东说念主员参考.终末, 本文在开源微处事系统Sock-Shop上的案例研究也阐扬了本文建议的韧性风险识别和分析方法大要在微处事架构系统中识别出潜在的韧性风险, 并得到具有一定准确性的韧性风险影响链路.

本文需要进一步开展关系研究责任包括以下几个方面.

(1) 微辞实验假想的优化.现在, 在微辞实验中引入系统环境扰动隧说念以随即的状貌生成.而在本文的案例研究中不错看出, 这种状貌生成的系统环境扰动是韧性风险的概率并不是很高.怎样讹诈前一次系统迭代中微辞实验的罢了以及系统本色运行过程中发现的韧性风险, 改良微辞实验中系统环境扰动的生成状貌以提高发现韧性风险的概率?怎样灵验地组合多种不同的系统环境扰动, 不雅察多种扰动对微处事架构系统的共同作用?均是本文后续研究中入辖下手贬责的问题.

(2) 韧性风险分析方法的优化.本文均分析得到的因果关系分析链路所以系统性能目的的飞腾着落变化作为分析基础.而在本色的系统处事左迁过程中, 十分事件、东说念主为操作等均会导致系统性能目的的变化.怎样灵验地将十分检测、系统日记挖掘等技能融入韧性风险分析过程中, 是本文在建议韧性风险分析方法之后的研究方针.此外, 现已有一些文献[79]使用系统挖掘器具(如sysdig), 在幸免相当开发的情况下拿获处事之间的调用关系telegram 反差, 如安在微处事架构系统中挖掘处事调用关系并讹诈其优化韧性风险分析方法的分析成果和准确度, 亦然本文待研究的问题之一.