基于滑动窗口的性能指标衡量算法

本文介绍了基于滑动窗口的性能指标衡量算法,通过数据采集和衰减算法,平滑地比较系统性能变化。在分布式系统中,利用滑动窗口对历史数据进行分片,结合衰减因子计算性能阈值,以更科学地判断系统是否出现性能下降。
摘要由CSDN通过智能技术生成

前言


在复杂的分布式系统中,存在着各种性能指标,比如系统请求数,请求响应时间等等。这些指标在一定程度上可以反映出系统运行的快慢程度。但是这里我们如何做到更加准确的判断,而不是说只要出现异常指标,就认定系统有问题,显然这是不合理的。今天,笔者来为大家讲述基于滑动窗口的性能比较算法。如何收集,利用历史数据,来进行当前性能指标的比较。

基于滑动窗口的数据采集


当我们说系统出现“变慢”现象的时候,这个其实是和“过去的时间”作对比,所以我们感觉到它有点慢。同样的,我们要想更加科学地比较这其中的性能差异,就需要用到历史数据。

对于历史数据而言,因为时间是连续的,所以我们要对时间做分片,也就是说,是一段,一段的。这一段的周期可以是10分钟,或半小时等等。在这里,我们用更加专业的词语描述,就叫窗口。每个窗口对应一定的时间区间,随着时间向前滑动。对于每个窗口内,都会有对应时间区间内的性能统计指标数据,比如说我们有该窗口内的总请求数,以及总耗时,这个时候我们可以求出这个窗口的平均响应时间。

那么有了这些窗口数据,我们如何去使用这些数据呢?一个重要的原则是保证数据指标的平滑性。简单地说,我们不能简单暴力地直接使用上个窗口的数据,然后规定出一个规则,比如超出上个指标多少多少倍以上,当前系统就认定为“慢”的。

一种更平滑的做法是,在当前窗口即将结束时,获取到上个窗口的数据,乘上衰减因子,再叠加当前窗口的即时数据,然后把这2个数据的和作为新的“上个窗口”的指标数据。等这个时间窗口过去了,这个衡量阈值就是刚刚过去的窗口的指标平均值。

图示过程如下:
在这里插入图片描述

通过以上步骤算出的上个窗口的性能数据,就可以拿来与当前数据进行比较,如果数值超过前面的阈值数据,就表明,系统变得异常了。

基于滑动窗口的衰减算法


下面是基于滑动窗口的衰减算法(以系统响应时间为衡量指标),大家可以对照上面笔者阐述的过程。

  /**
   * 在当前窗口的尾声阶段,做窗口的滑动
   * @param enableDecay
   */
  void updateAverageResponseTime(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
掌握数据结构和算法,可称为算法工程师!这是成为架构师的基础,有Google算法大神亲授。我保证你可以写出时空复杂度都很优的架构。有人专门答疑哟!你想要成为架构工程师吗?立即点击报名按钮吧!北上广容不下肉身,三四线放不下灵魂,程序员里没有穷人,有一种土豪叫 算法工程师。程序 = 数据结构 + 算法程序是为了解决实际问题而存在的。然而为了解决问题,必定会使用到某些数据结构以及设计一个解决这种数据结构的算法。如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功。编程实战算法,不是念PPT,我们讲的就是实战与代码实现与企业应用。程序 = 数据结构 + 算法           ——图灵奖得主,计算机科学家N.Wirth(沃斯)作为程序员,我们做机器学习也好,做python开发也好,java开发也好。有一种对所有程序员无一例外的刚需 —— 算法与数据结构日常增删改查 + 粘贴复制 + 搜索引擎可以实现很多东西。同样,这样也是没有任何竞争力的。我们只可以粘贴复制相似度极高的功能,稍复杂的逻辑没有任何办法。语言有很多,开发框架更是日新月异3个月不学就落后我们可以学习很多语言,很多框架,但招聘不会考你用5种语言10种框架实现同一个功能。真正让程序员有区分度,企业招聘万年不变的重点 —— 算法与数据结构。算法代表程序员水平的珠穆朗玛。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值