在网络多媒体应用中,带宽的要求往往较高。比如视讯啊、远程协助啊这些功能,都需要有足够的带宽。比如你开发一套视频教学系统,或者视频会议系统,服务器带宽要租多少才够用,这是一个很关键的问题。可是,你知道该怎么算吗?
比如在即时通讯系统中,通常都是一对一的通讯,那么当大家互相打视频,开语音,或者远程协助的时候,对服务器的带宽要求有多高呢?比如在线教学系统中,老师要给学生广播麦克风语音、摄像头视频、远程桌面等,这种情况下有需要多少带宽呢?而对于视频会议,每个人都要把自己的语音视频广播给其他的每一个人,这个又要占用多少带宽呢?
也许你会算,或者不会算,不过没关系,按照我今天讲的,包学包会,妈妈以后再也不用担心你的学习!
一.两个背景知识
1.服务器带宽的单位是bits/s,而我们通常说的网速的单位是bytes/s,因此存在一个8的换算问题。
2.服务器带宽指上行和下行的总和。比如,服务器的带宽是1M,那么服务器上传和下载的速度加起来不会超过1M,而不可能上传达到1M,下载同时也达到1M。
二.1对1的情形
首先,我们从最简答的情况说起。假使2台机器互相视频。就拿OMCS举例来说,一路视频的带宽按照一般情况,算作20kB/s,那么服务器要租多少带宽才够用呢?
基于1对1是最简单的情形,解决好了,后面复杂的情形就容易解决了。所以我们先别绕进问题的细节里面,我们先来建立一个分析问题的模型,让问题的解决有法可依。
建立模型?听起来挺高深的,其实超简单。我们将问题生活化,场景化,拟人化。我们知道,带宽啊、服务器啊、网络啊这些,核心的关键词无非是通信。那么我们梦回学生时代,假设三个人坐一排,做左边的男生喜欢做右边的女生,上课要给她递小纸条,这时候就要劳烦中间的同学来帮忙。对,这个就是我们的第一个通信模型。中间的同学充当的就是服务器的角色,其任务就是消息中转。男生是一个客户机,向服务器上传数据——小纸条;女生是另一台客户机,从服务器下载数据——小纸条。假设一堂课内,他俩互相传了10次小纸条,那么请问作为服务器的中间的同学,他的带宽是多少?
传一次小纸条,对于服务器而言都要上行一份数据,同时下行一份数据,而之前我们说过,上行下行都是算在带宽里面的。所以传一次,服务器就有2张小纸条的数据量,10次就有20张小纸条的数据量,所以,一堂课下来,服务器的带宽是20张小纸条/每节课。
回到计算机世界来。就拿OMCS举例来说,通常视频所占的带宽是20kB/s。那么双方视频时,就是上行20kB/s,下行20kB/s,就是20 x 2 x 8 = 320kbit/s。
三.1对N的情形
1对N我们可以建立这样的模型:老师让班长印卷子,老师作为一个客户机通过班长这个服务器向其他同学发送广播消息——卷子。那么,我们知道,班长服务器要从老师那儿上行1份卷子,向50个同学下行50份卷子,那么就以一堂课作为时间单位,那么服务器的带宽就是51份卷子/每堂课。
我们会到计算机世界来说,比如在远程教学系统中,老师将自己的视频广播给N个学生,一路视频是20kB/s,那么服务器就是上行20kB/s,下行20NkB/s,总共160(N + 1)kbit/s。
四.N对1的情形
N对1的情形就简单了。我们知道,既然对于服务带宽而言,上行和下行都是要算进来的,那么我们可以认为上行、下行对于服务器带宽的计算而言是等效的。所以 N对1与之前的1对N是一样的。
当然我们也可以举个例子来说明一下。就是刚才发下去的卷子学生做完了,班长来收卷子。那么上行50份,下行1份,所以服务器的带宽就是51份卷子/每堂课。
五.N对N的情形
最后,N对N来如何处理呢?
其实N对N,就是N个1对N。比如现在考理综。理、化、生三科的老师都喊班长印发卷子。那么上行3份卷子,下行3X50 = 150份卷子,所以服务器的带宽就是153份卷子/每堂课。
回到计算机世界,视频会议就是N对N的情形。现在又N个人在开会,每个人都要把自己的视频广播给其他的每一个人,那么上行20NkB/s,下行20N(N -1)kB/s,总共就是160N×Nkbit/s。
七.总结
除开这些基本的类型,其他的更复杂的情况都是这些基本类型的复合或混合。除开N对N的情况之外,其他三种情况都可以以每一路的流量乘以N来计算服务器带宽。但是还是要具体问题具体分析,最根本的还是要依据上行下行的数据量来计算服务器带宽。
本文旨在通俗,如果想全面深入了解,请参考著名博主zhuweisky的博客《部署视频聊天系统之网络品质测试》本文也是在这篇文章的启发下写成的。