写点什么

还记得概率课本中的二项分布吗?在我们的网络判障中发挥了大作用!

  • 2019-09-10
  • 本文字数:2037 字

    阅读完需:约 7 分钟

还记得概率课本中的二项分布吗?在我们的网络判障中发挥了大作用!

在之前的系列文章《百度网络监控实战:NetRadar横空出世》中,我们介绍了百度内网质量监测平台 NetRadar 的原理和架构,其中,判障算法是内网监测系统的重要一环,今天我们将详细介绍在 NetRadar 中实际使用的一种判障算法——基于二项分布的网络判障算法。

业务场景

我们的内网监测系统 NetRadar 实时对百度内网连通性进行探测并根据探测数据判断是否存在网络故障。以探测机房 A 到机房 B 的连通性为例,如下图所示,首先从机房 A 和 B 中选择 n 个服务器对,机房 A 中的服务器去探测机房 B 中的服务器,每次探测有成功/失败两种结果。在每个探测周期内,我们会收到 n 个探测数据,其中 m 个数据探测成功,(n-m)个数据探测失败。



理论上,在网络状态正常的情况下,m/n=100%。但实际中,由于服务器自身问题(发起探测的服务器负载过高、被探测的服务器重启等)以及一些偶然因素,少量的探测失败是不可避免的,所以需要设定一个判断网络是否故障的阈值。

阈值设定

在实际设定阈值的过程中,我们遇到两个问题:


  • 单服务器故障导致产生探测数据的噪声


如前面所述,当服务器 a 探测服务器 b 时,如果服务器 b 自身故障(负载过高或者遇到机器重装、重启等)或遇到其他偶然因素,探测也可能失败,但并不能说明此时存在网络问题,这种情况我们称为数据噪声。


虽然单台服务器故障的概率不高,但在大量服务器参与的网络探测中,服务器故障产生数据噪声几乎是常态。


  • 不同探测任务样本数差距大,受噪声影响,小样本的探测任务更难进行准确判障


由于网络结构的多样性,不同探测任务的样本数差距很大。例如在机房 A 到机房 B 的探测中,样本数与机房内服务器数量相关,如果 A 机房内服务器数量少,则探测样本也少。实际中,不同任务的样本数变化范围从几十到几千。


对样本量大的探测任务,数据噪声对判障结果影响不大,但小样本的探测任务却非常容易受噪声影响。


例如某探测任务有 100 个样本,某个周期收到 60 条成功数据,40 条失败数据,成功率只有 60%,显然,此刻的网络存在故障。但如果另一个探测任务只有 5 个样本,在某个周期收到 3 个成功样本,2 个失败样本,成功率同样为 60%,但我们很难判断这 2 条数据是探测数据噪声还是真的存在网络问题,所以不能直接使用固定的阈值判断网络故障。


另外,如之前的文章《百度网络监控实战:NetRadar 横空出世》所述,NetRadar 的探测任务数量很大,判障算法要求是通用的、低开销的、高鲁棒性的。因此,也不能针对具体的探测任务训练专门的阈值,这样会给系统的后期维护增加很大成本。

基于二项分布的网络判障算法

在本文描述的网络判障场景中,每个探测任务每周期收到相互独立的 n 个成功/失败样本,其中在网络正常的情况下每次探测以一定的概率 p 返回成功,这正符合概率统计中二项分布的定义。

1 二项分布

首先,简单回顾一下概率统计中的二项分布。


二项分布是 n 个独立的伯努利试验中成功次数的离散概率分布,其中每次试验成功的概率为 p。


如果随机变量 X 服从二项分布,那么在 n 次试验中,恰好得到 m 次成功的概率为:



其中,



累积分布函数可以表示为:


2 二项分布在判障中的应用

回到我们的场景中,对于一个探测任务来说,在一个周期内收到 n 个样本,其中 m 个成功样本,同时,根据历史数据可以确定在网络正常的情况下,一次探测成功的概率为 p(由于服务器本身的问题和其他客观原因,在网络正常的情况下也有可能得到探测失败的样本,p 值就是描述在网络正常的情况下探测成功的概率)。一个周期内的样本相互独立。很显然探测样本 X 服从参数为 n 和 p 的二项分布。


当一个周期内收到的 n 个样本中包含 m 个成功样本,如何判断此时网络是正常还是异常呢?我们实际上是通过判断 m 是否太小了来确定是否有网络故障。也就是,可以通过计算累积分布函数 Fm 判断:




不过根据中心极限定理,我们知道:


二项分布当 n 足够大时,



近似服从期望为 0,方差为 1 的正态分布,即标准正态分布。


以此为依据,计算 Z-score:



根据对历史数据的标注和训练可以得到 z 的阈值,使用阈值进行网络判障。

3 实际效果

实际运行中的一组网络正常和异常时成功率和 Z-score 分别如下图所示,可以看到,如果在成功率上设置阈值,很难找到一个较好区分网络正常和异常的阈值,但使用二项分布则可以很容易确定区分正常与异常的阈值。




算法的扩展和应用:本文介绍的基于二项分布的判障算法,应用场景并不仅限于网络监控,实际上这个算法可以应用于所有的成功率检测,只需针对固定场景确定参数 p 和阈值。

总结

本文从网络监测中遇到的实际问题出发,介绍了基于二项分布的判障算法,在内网监测系统中有效地解决了不同探测任务样本数差异大且可能存在数据噪声等实际问题,尤其在小样本的判障中表现优异。


若您想进一步了解内网监测问题,欢迎给我们留言!


作者介绍:


运小希,百度云高级研发工程师,负责百度内网质量监测平台的系统和策略研发,在网络监控、异常检测等方向有广泛实践经验。


本文转载自公众号 AIOps 智能运维(ID:AI_Ops)。


原文链接:


https://mp.weixin.qq.com/s/16FJQAOJ75g24yYmBaiKUQ


2019-09-10 15:441613

评论

发布
暂无评论
发现更多内容

前端开发CSS实用的技巧有哪些

小魏写代码

Navicat Premium 15 :专为简化数据库的管理及降低系统管理成本而设计

Rose

支付宝花呗分期如何接入

盐焗代码虾

支付宝 经验分享 花呗分期

网站被攻击有什么办法?

德迅云安全杨德俊

华为微信红包封面新春献礼,龙年送福更添彩

最新动态

影响2024年Web3赛道的三大事件

TechubNews

别人还在集五福,星河社区开发者已经奖品拿到手软了!

飞桨PaddlePaddle

百度 百度飞桨 飞桨星河社区

solidity案例详解(二)众筹合约

BSN研习社

区块链 Solidity

说说开放签电子签章开源的这一年

开放签开源电子签章

开源 电子合同 年终总结 电子签名 电子签章

当我们一起走过 2023|Apache Doris 年度时刻盘点

SelectDB

TitanIDE v2.8.0正式发布,模板市场来袭!

行云创新

ide CloudIDE 代码编辑器 云端IDE 云端IDE+大模型

完蛋!我把AI喂吐了!

有道技术团队

人工智能 大模型 QAnything

【视频】互联网Java工程师面试突击训练(三季)

Geek_bbbdb0

Java 面试

AE脚本-真实三维立体文字标题排版空间翻转组合动画 TypeMonkey3D

Rose

HarmonyOS SDK 助力新浪新闻打造精致易用的新闻应用

HarmonyOS开发者

HarmonyOS

EMQX Enterprise 5.3 发布:审计日志、Dashboard 访问权限控制与 SSO 一站登录

EMQ映云科技

小艺上线新春限定版!丰富玩法一起“花式”迎龙年

最新动态

关键帧缓入缓出曲线调节控制操作AE脚本 Kease for mac

Rose

【视频】小甲鱼零基础入门学习Python(全96集)

Geek_bbbdb0

Python

AI创业创新的三个误区及应对之道

算AI

人工智能 创业 AI 创新

Flink 2.0 状态存算分离改造实践

Apache Flink

敏捷产品是双轨开发而非双轨制

ShineScrum捷行

国内第一个开源免费电子签章系统发布了

开放签开源电子签章

开源 电子签章 开放签

揭秘海外云手机的诸多优势

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机

聊聊在不确定环境下的个人成长

Phoenix

1 月 Web3 游戏行业概览:市场实现空前增长

Footprint Analytics

区块链游戏 gamefi

PS插件-模拟真实投影拖尾阴影工具 Shadowify v1.0.1

Rose

技术标准|隐语技术标准的 What & Why & How

隐语SecretFlow

技术标准 隐私计算 数据要素流通

鸿蒙星河版启航!系统级原生智能实现应用「零成本」AI化

新消费日报

AE脚本-智能快速图层对齐工具 Align Pro

Rose

跨境电商新风潮:充分发挥海外云手机的威力

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机

还记得概率课本中的二项分布吗?在我们的网络判障中发挥了大作用!_文化 & 方法_运小希_InfoQ精选文章