CDN架构下流媒体代理缓存策略的研究
2010-11-05余红梅樊自普
余红梅,樊自普
(重庆邮电大学 通信与信息系统 NGN应用技术研究所)
0 引言
随着计算机网络和流媒体技术的发展,基于C/S模式的流媒体点播系统的瓶颈和弊端日益显现,越来越不适应大规模应用的需求。一方面,VoD主要是处理多媒体数据,而多媒体数据通常具有占用磁盘空间大、传输带宽高且处理时占用处理器资源较大的特点;另一方面服务器的I/O能力和带宽有限,只能提供有限的连接数。目前采用的解决方案主要包括IP多播、多媒体代理服务器、流媒体服务器集群等。但是,这些方案不是技术上难以应用就是成本太高,而且系统规模的扩展性问题也只是得到了部分解决。再者,现在的VoD大都支持VCR操作,但以往的研究大都回避这个问题。
1 CDN架构的特点
CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。
CDN视频分发的优势特点如下:
(a)CDN的节目存储和分发系统采用层次化结构,中心存储系统可存储所有节目,在边缘服务器存储热门节目,降低源服务器的服务压力;
(b)通过“全局调度、本地负载均衡”策略实现内容全局分发调度与就近服务;支持在省中心与各地市、各地市之间实现灵活的、策略化异地负载均衡,在全局范围内实现最优的资源共享;
(c)支持多级CDN层次结构,多级CDN之间的数据完全同步并保持一致性;支持地域之间设置隶属关系,使地域流媒体服务器(缓存服务器)具有多层分布式结构的特点,实现地市之间的异地负载分摊,进一步对骨干网的流量进行优化管理;
(d)CDN采用应用层路由技术,路由选择完全实时、定位准确,可避免出现错误重定位与多次重定向的问题,大大提升系统响应速度,改善用户的娱乐体验。
以上特点充分说明了采用CDN能够更好的将流媒体视频内容发布到接近用户的边缘,降低骨干网带宽等, 本文提出的基于CDN的代理缓存系统架构如下:
基于CDN的流媒体体系的网络结构由3个层次组成,由上到下分别为服务器、代理服务器(备用代理服务器)、客户端。模型既能够体现传统C/S模式的集中管理优势,代理服务器的具体特征,也突出和利用了P2P模式的资源共享等特点。图1描述了网络逻辑结构图表示的是CDN源服务器、代理服务器和P2P网络。
源服务器:处于网络体系的最顶层,由提供流媒体内容源的服务器组成,负责提供原始流媒体文件。并负责将流媒体文件分段及组播给代理服务器。
代理服务器:处于网络体系的中间层,用于接收来自源服务器的内容并缓存,并为终端P2P网络节点提供服务,代理服务器间可以互相调度,文件资源共享。
备用代理服务器:与代理服务器互联,用于接收来自其他代理服务器替换掉的内容及代理服务器失效后的内容存储。
客户端: 从代理服务器或源服务器获取流媒体资源。
上述节点都具备:(1)网络接口:负责基于G-ossip协议的节点通信和数据传输;(2)邻居管理:维护邻居列表,发现所需的数据源;(3)缓存调度:和其他节点共享数据,提供对本地数据播放的支持;(4)客户端的播放器。在这些功能中,缓存是VoD系统应用的核心问题。合理高效的缓存机制对整个系统有着重要影响[5]。
2 传统的基于CDN架构流媒体缓存策略的研究
以往的研究中提出了两种流媒体存储策略:即复制和分块。复制主要是将点播率较高的视频文件复制到全部或部分节点上,使多个节点可以共同承担文件的负载。虽然负载均衡的效率很高,但是却牺牲了大量的存储空间。分块则是将影片分成若干块,将这些分块分配到所有的节点中,让节点分担同一部影片的负载,以往的一些研究中提出了将文件分块然后将视频文件按固定大小的块分割到多个磁盘上,这与本文的分块代理缓存的思想有点相似,不足之处在于:文中提出n个用户可以同时访问同一文件的不同部分,却不能支持n个用户同时访问同一文件。文献[1]介绍一种缓存写入的高效的缓存写入分段方法.文献[2]提出了分段首尾配对放置方法,降低了由于内热度不同对存储策略带来的不良影响,文献[3]也是根据计算视频文件的热度对视频文件进行分块存储。
以上这些已有的研究中都没有考虑将几种缓存方法及代理间的相互协作的机制相结合.
本文的分发技术采用了两种主流的内容分发技术:PULL和PUSH,源服务器到边缘代理节点间采用PUSH,将流媒体内容有源服务器主动分发到各边缘节点代理服务器,分发策略可以采用智能分发或预定义的内容分发规则。而用户与代理服务器间采用PULL,当用户请求的内容在本地的代理节点上不存在(未命中)时,代理节点启动PULL方法从其他代理节点上或内容源实时获取内容。文章结合前缀缓存与后缀分段缓存,及集群代理缓存的策略,提出了新的分块代理缓存机制,并给出了详细的存储与分发策略。
3 基于前缀缓存+后缀分段缓存的流媒体代理缓存
前缀缓存结合后缀分段缓存的基本服务过程如图2所示。
图2 前缀缓存+后缀分段缓存示意图
图3 代理缓存策略流程图
代理服务器缓存步骤如下:
(1) 当有新的流媒体文件(设为P)上传到源服务器时,源服务器自动为流媒体分配前缀大小设为P0,并根据代理服务器数量将后缀均匀分段,段的数量等于代理服务器数量的n倍(n为整数),每段大小设为b。源服务器主动将均匀分段的后缀平均分配到各个代理服务器上(如:bi对应代理服务器i,bj对应代理服务器j…),源服务器将此分配索引表及前缀组播给每个代理服务器。
(2)当客户第一次请求文件P时,可以立即从客户端所在的代理服务器i获得文件P的前缀部分并开始播放。在播放的同时,代理服务器i可在自己的分配索引表中查找后缀的第一个片段所在的代理服务器的地址假设为j。如果i = j,则客户可以直接获得此片段并播放。如果i != j,则代理服务器i预先分配一个大小为b的缓存空间,用于存放从代理服务器j请求的片段并传给客户,当数据传送完毕代理服务器i立即释放此缓存空间,重新分配大小为b的缓存空间为第二个片段做好准备,然后查找第二个片段所在的代理服务器地址并进行下载,以此类推,直到客户请求结束。
(3)当客户进行VCR操作时,代理服务器i直接在自己的分配表上查找客户请求片段所在的代理服务器地址,并为其分配缓存空间,用于存放从代理服务器j请求的片段,并传给客户端,当数据传送完毕代理服务器i立即释放此缓存空间,重新分配空间为下一个片段做好准备…以此类推,直到客户请求结束。
(4)随着源文件的增多,代理服务器上存储的文件数目也随之增大,然而代理服务器的缓存资源是有限的,对于已缓存内容的替代是不可避免的。这就考虑到文件流行度的问题,本文采用的替代方法:按文件的流行度即文件的点播率进行末尾淘汰,而这里被替换掉的文件全部缓存到备用代理服务器中,当客户请求到此片段时,代理服务器中的文件分配索引表中又查找不到,则直接到备用代理服务器中请求资源,查找备用代理服务器的文件分配索引表,如果此文件片段存在,则到替换掉的文件区中请求下载,如果文件片段不存在,直接通知客户端,客户端直接从源服务器下载资源进行播放同时将此文件片段发送给备用代理服务器进行缓存,并实时更新文件分配索引表。这样同样避免了增加骨干网络带宽资源的浪费。
(5)只有当代理服务器j瘫痪时,代理服务器i根据分配表找不到对应的代理服务器时,才需要到源服务器请求资源。这样下次用户再次访问到该片段时也不需要访问源服务器。
4 结果分析
(1)首先,每个代理服务器都有该文件的前缀及分配索引表和文件片段bi,所有代理服务器的文件片段加到一起就是一个源文件,这样就大大减少了文件的副本数,节约了缓存空间。
(2)其次,大部分的网络调度都集中在代理服务器之间,很大程度上减少了骨干网络带宽消耗,同时也节约了代理服务器的缓存资源。
(3)所有代理服务器都缓存有文件的前缀,这样就很好的降低或消除了客户端的启动延迟。
(4)备用代理服务器的存在,有效避免了由于代理服务器单点失效造成骨干网带宽资源浪费带来的问题。
5 总结
本文在参考已有的流媒体代理缓存理论基础上,讨论了CDN架构下的缓存机制,采用前缀缓存+后缀分段缓存并分发到各个代理服务器上,在各个代理服务器间进行合理有效的文件调度策略,理论上很大程度上减少了骨干网络带宽消耗,很好的支持了客户的VCR操作。而备用服务器的存在也降低了由于代理服务器失效造成的其他代理服务器负载的加重甚至负载不平衡的现象。
[1] 马杰,樊建平.具有高缓存写入效率的流媒体分段缓存方法[J].计算机学报,2007.
[2] 王飞,奚宏,生杨坚.集群式VoD系统中文件分块存储策略[J]. 计算机工程,2008.
[3] 徐锦,朱明,郑烩,姜建平.媒体分发网络存储策略优化[J]. 计算机工程,2009.
[4] 郑凯,一种P2P VOD 系统的缓存部署及调度机制[J].华南师范大学学报,2009.
[5] 黄晓涛,郑涛. P2P流媒体点播的缓存机制研究[J].计算机工程与科学,2008.