Calendar
Placard
Category
Latest Entries
Latest Comments
Last Messages
User Login
Links
Information
Search
Other


Welcome to my blog!
  p2p流媒体的要素探讨 
 

        有一段时间没有上来了,忙得一塌糊涂,呵呵。今天想说一下比较纯技术的东西,就是p2p流媒体系统的主要要素有哪些,他们之间有什么关系,如何相互作用的。

    我和我的同事们在系统设计和调试的大量工作中,总结出了一些东西,我感觉还是比较准确的。对于p2p流媒体系统而言,主要有3个基本要素,就是能力、数据和时间。

       拿直播应用为例,所谓能力,指的就是节点的CPU处理能力、内存大小、上行可用带宽、下行可用带宽、上下行链路质量(延时和丢包)等等;所谓数据,就是指你的Buffer里面存储的数据多少,如果按照分片来说就是具体的BufferMap的情况;所谓时间,就是指你的缓冲时间的长度,你和源的延时状况,你的播放指针的位置,你对某些数据需求的急迫性等等。

       大家知道,其实p2p流媒体系统的性能就取决于这三个要素是否能够协调的配合在一起。但是,这三个要素之间往往又是矛盾的,这些矛盾决定了性能会有一个理想的上限值。下面举几个例子来看看。

       比如说到时间,当然大家都希望系统的延时越小越好,比如说我看到的东西只比电视信号滞后几秒钟,但是这里就会和其它要素发生矛盾。p2p网络的实质就是如何让数据在节点之间有效地传播开来,或者说蔓延开来。既然是传播,那就是需要时间的,如果延时很小,也就是意味着数据的有效存活时间很短。在这么短的时间内,你如果想要这个数据传播的很广,其实是很困难的,会受到节点能力的限制,比如说上行带宽就是这么多,没有办法。所以最后数据请求都会堆积到超级节点去,超级节点也无法承受。所以说,你的系统的规模容量能力和你的延时是有很强的依赖关系的。你无论采用什么算法去分发数据和管理邻居朋友,都会存在一个和延时相关的容量上限值。

       再比如说到能力,如果要想这个系统支持更多的用户,就必须充分的发掘每一个节点的能力,尤其是计算能力和上行能力。但是这里又有矛盾的地方:网络节点的能力是千差万别的,当然我们要发挥强能力节点的作用,但是如果没有把握好一个度,过分使用了强节点的能力,必然导致数据的集中;因为只有数据集中到强节点,才能更好地利用强节点的能力。但是数据的集中又会反过来引起网络的失衡,导致健壮性变差,分发的及时性也会产生问题。比较典型的情况是在NAT后面的内网节点较多的情况,以及ADSL节点居多的情况下,这个矛盾会显得尤为突出。

       还有就是数据和能力、延时的矛盾。理论上说,每个节点保存的数据越多,很显然对整个网络的贡献就越大。但是保存的数据太多,本身的处理能力可能顾不过来,反而是个累赘。程序实现上光是扫描和检索缓冲区就已经负担不过来了,这样也就没有什么意义;另外,如果你的上行带宽就是那么多,你拿再多数据,单位时间能提供的流量也是有限的,没有什么作用;再者,缓存数据越多意味着延时也就越大,这就有一个用户接受度的问题了。

       总结下来,一个好的p2p流媒体系统,一定是在三个要素上配合协调的很好的系统,而不是哪个要素发挥到最强的系统。

[ 阅读全文 | 回复(1) | 引用通告 | 编辑

  Post  by  gary 发表于 2006-9-14 17:25:00

发表评论:

    大名:
    密码: (游客无须输入密码)
    主页:
    标题:
Powered by Oblog.