作者:bbisonic 时间:2007-01-31 14:39:36 出处:CSDNBlog
|
现在的P2P流媒体主要有两种架构: 1.基于树的架构。这是由流媒体的多播演化而来的,也就是播放同一频道的节点组成一棵树,提供广播的源节点为这棵树的根。每个节点可以为下层几个节点提供数据。但这种架构仍然会对上层的结点造成太大的负担,而且在节点动态加入和退出的情况下树不易维护。另外还存在传输延迟问题,所以树的高度不能太大。 2.基于图(MESH)的架构。通过邻居发现寻找相关的节点。这种架构可以实现完全非中心化。 Peercast采用的是基于图的架构。所有Peercast节点都在同一网络中,而且一个Peercast可以同时转播多个频道。由于Peercast集合了客户端和服务器功能,所以一个Peercast可以同时是广播者、转播者和收听者。 Peercast网络架构可分为三层。 第一层是YP。 第二层是广播者。 第三层是转播者 P2P流媒体的运行模式 视/音频输入:这是频道的来源,可以是实时事件(电视),也可以是文件(MP3/WMV) Peercast:根据其完成的功能可分为下列几个模块: 节点的加入与退出: 当一个Peercast节点第一次加入Peercast网络时(点击yp.peercast.org中特定频道的PLAY按钮),例如访问地址是peercast://pls/EF49346D72FD05F234D3DA2C33FF3A9C?ip=61.213.94.129:2010 。它会先与广播这个电台的IP(61.213.94.129:2010)建立连接。由于这个广播者是不变的,所以至少会有一个特定的连接。如果广播者是满负荷的,那么这个节点可以通过这个广播者同其他转播同一电台的节点建立连接。
与本节点转播同一频道的节点(也就是邻居)的信息保存在ChanHitList中,其中ChanHitList是一份ChanHit的链表,每个ChanHit保存一个相关结点的信息。Hit的意思是你想收听的频道的广播者或转播者。 拥塞控制: 当output队列超过50%时进入拥塞控制模式。系统丢弃一些incoming包,并根据包类型和跳树来给outgoing包区分优先值。当output队列降到25%时,系统会关闭拥塞控制模式。 转播时间更久的节点比刚开始转播的节点拥有更高的优先权,这体现在TTL上。刚开始转播的节点广播的包的TTL值为1,而这个TTL值每5分钟会递增1。这样转播时间超过35分钟的结点会有着最高的TTL值7。 节点间的通信: 传输者的选择: 在建立初始连接之后,节点需要选择一个最佳的节点来传输频道数据。 比如说如果找到邻居转播者就不用继续往下找,然后从其中选取出最佳的节点作为传输对象,其他作为备用传输者。
流(stream):流在Peercast中是一个非常重要的概念。所谓流,就是字符串的集合。所以无论是包、视/音频数据都可以看做是一个流。 Peercast的缓冲机制是通过ChanPacketBuffer实现的,里面包含有多个ChanPacket,每个ChanPacket封装了实际的数据。 播放器的读取: Peercast会自动调用默认播放器,而播放器读取由Peercast创建的HTTP内容,如播放URL为http://localhost:7144/stream/65051E037A7A2A3433090065051E037A.ogg |
Peercast整体架构分析
最新推荐文章于 2015-10-09 19:51:00 发布