Page 12 - 《软件学报》2021年第5期
P. 12

1236                                     Journal of Software  软件学报 Vol.32, No.5,  May 2021

                    根据服务类型的不同,服务性能的关注重点也会不同.因此,每一个系统服务都需要确定其关键服务性能指
                 标.服务性能指标的选择可以参考现有 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)  韧性风险识别
                    在所有的混沌实验结束后,混沌实验中收集到的服务性能数据将与混沌实验前预设的服务性能基线数据
                 进行比较,判断系统环境扰动过程中系统服务是否发生了服务降级.若系统服务发生了服务降级,则根据
   7   8   9   10   11   12   13   14   15   16   17