论文部分内容阅读
随着Internet技术的不断发展和普及,以及宽带基础设施建设的推进,流媒体直播系统已经被广泛应用于各个方面。由于传统的直播技术大都采用了C/S架构,对中心服务器以及骨干网络带宽形成了非常大的压力,而CDN技术在内容管理、全局负载均衡等方面具有优势,同时P2P技术在资源利用率以及可扩展性上也很好。因此将两者优点结合起来,使基于P2P和CDN的流媒体直播系统具有高可靠性、高可扩展性等特点,这样可以更好地服务用户。本文首先对现有的流媒体、CDN以及P2P的相关技术进行调研和分析,然后提出了基于P2P和CDN的流媒体分发系统PPSCDN(Peer-to-Peer Streaming ContentDelivery Network)。系统总体上采用CDN架构,将网络按照位置策略划分为多个边缘域,域之间采用DHT进行全局内容索引,边缘域内利用基于Mesh架构的P2P网络为用户提供直播服务。最后结合自己在项目中的实际工作,本文详细描述了系统中直播切片服务器LPS的设计与实现。LPS的主要工作包括以下:1.结合其它子系统设计并实现PPSCDN的关键业务流程,如智能发布机制、负载均衡以及系统容灾等。2.针对接入多路直播流的需求,设计并实现基于多进程、非阻塞I/O和Epoll事件驱动模型的高性能网络服务器,服务器由主控进程和直播进程组成。主控进程完成进程管理等功能,直播进程完成直播流接入以及用户数据分发等功能,两者采用基于Unix域套接字的高效IPC模型。3.支持标准RTP/RTSP协议数据源接入,设计并实现高效的协议解析器。解析器按照协议栈对消息进行解析,获取负载媒体数据之后封包为直播P2P数据包。4.高效的数据缓存及分发。设计并实现了基于循环队列与内存池的数据缓冲区,进行数据缓存和淘汰等,同时基于Epoll完成高效的数据分发以及速度控制等。5.基于贡献度的节点选择策略。服务器作为P2P直播源,会选择上传能力较好的优质节点作为自己的孩子节点,高效的分发数据,并且淘汰不合格节点。本文详细描述了直播服务器的框架设计,然后设计并实现了高效的数据分发以及节点选择策略等功能,最后通过测试验证了服务器具备低CPU使用率,高网络吞吐量,可以为高并发用户提供提供较好的直播服务。