主题:【原创】我们学过的数理化——如何计算带宽需求 -- 代码ABC
我们搞一个视频点播站,三个月后期望能做到平均有100用户在线,每个用户需要300k BPS的带宽。请问我们网站的带宽需求是多少?
这类问题我们经常被问到,许多人都会简单地做一下乘法然后交卷——我们需要100x300k=30M的带宽。太简单了,这是个小学生都会计算,然而大部分只使用小学生知识做规划的设计人员最后都会被市场部的人骂得狗血淋头。因为平均在线用户数量达到的时候有近一半的用户投诉视频卡得无法忍受。
哪里出了问题呢?
如果我们学过的概率知识没全部忘记的话,我们立刻会想到当平均在线用户是100的时候,大部分时候在线用户数会超过100。不过到底会超多少就需要我们把课本重新翻出来仔细看看了。
这个问题其实是一个简单的概率分布问题,我们需要知道每种在线用户数量出现的概率,然后定一个合理的指标,确保大部分情况下我们的带宽可以满足要求。在我们的概率论课本中有两种概率分布可以帮忙,一个是正态分布,另一个是泊松分布。一般来说特定时间内在线用户数满足两种分布中的一种。
个人喜欢使用泊松分布。自然界许多随机事件符合泊松分布,比如呼叫中心同一时间接到的呼叫次数,银行窗口排队的人数等等,和我们的需求十分吻合。另一个好处是这种分布函数只依赖于一个参数,即随机变量的平均值。在我们这个例子里随机变量就是在线用户数,平均值已经给出,所以我们可以很方便地计算出在线用户小于等于某个数值时的概率。这个公式在Excel里面就有了,在Excel的公式向导中的统计类中找出Poisson,在平均值处输入100,在累计处输入True,然后在X处输入一个值,你就能得到平均值为100时,在线用户数小于或等于X的概率。你会发现在线用户小于或等于100的概率其实只有52.7%,当我们把X调整为120的时候概率才增加到97.7%,所以如果你期望用户投诉概率小于3%的话带宽需求必须是120x300K = 36M。
接下来的问题是,我们怎么确定在线用户的数量符合这个分布。两个方法:一是建立模型然后计算,另一个方法是进行实地测量。在这里我们一般会选择第二种方法,因为准确的模型很不好建立。然而验证实际情况是否符合泊松分布同样需要用到我们概率论的知识。某些情况下会非常复杂,具体到这个情况的话我一般需要简单判断一下方差是否和平均值相同即可,因为经验告诉我不是泊松分布就是正态分布。
正态分布的分析方法和泊松相同,不过正态分布计算还需要一个标准差的参数,这个参数在这个例子必须实地测量。也就是必须在运营一段时间之后才能得到。
我知道很多网管在处理这些问题大多是先用小学知识预估,然后再实际工作中不断地分析日志调整。整个过程从来不需要用到超过小学的知识,这些网管一般也活得挺好。然而,如果你能运用上这些知识,你很可能变成一个可以预知未来的巫师。你也将从一个普通的网管升级成为架构师。
“学而时习之,不亦乐乎”
信然!
……
……
厄哦,谁把仓井空的AV放上来了!
抱歉,这次堵塞无法用概率解释!
就是用户不能用某些软件制造虚假点击率,这个是数学模型无法预料到的。
送花成功,可取消。有效送花赞扬。感谢:作者获得通宝一枚。
参数变化,作者,声望:1;铢钱:16。你,乐善:1;铢钱:-1。本帖花:
我印象中概率课本中的例题和作业大多极具实用性。
真正做规划的时候,基本上都会流出一些余量。所以现实中出现文中例子的情况很少。而且如果你煞有介事地用概率论进行分析,八成会被人当成13拍死。
送花成功,可取消。有效送花赞扬。
参数变化,作者,声望:1;铢钱:0。你,乐善:1;铢钱:-1。本帖花:1
简单易懂,送花得宝!
送花成功,可取消。有效送花赞扬。感谢:作者获得通宝一枚。
胖尾现象表明某些看似不可能的事情发生的几率远大于人们通常的设想。因此在相关的设计的时候要加以考虑。设为3%的投诉率,还是过高。
所以我也提示了某种特别场合下概率完全无用(仓MM的AV),这些通常在规划时做为风险或特例处理,或者在运营时用一些应急措施来补救。概率只是一种手段而已。