一种提高直播时移电视并发能力的实现方法与流程

文档序号:12279751阅读:941来源:国知局

本发明涉及时移电视并发技术,尤其涉及一种提高直播时移电视并发能力的实现方法。



背景技术:

随着双向IP直播时移电视的流行,其收视用户量越来越大,提高单台视频推流服务器的并发能力的工作显得格外重要。

在视频推流服务器中,限制推流并发的瓶颈通常是网络带宽和磁盘I/O。当前网络设备通常会采用多个千兆网卡绑定,或是直接引入万兆网卡,网络带宽早已不再是瓶颈。而磁盘I/O设备的随机读写速度,通常会明显低于网络带宽,从而成为限制视频推流服务器并发能力的根本瓶颈。即使是使用昂贵的直通SSD硬盘阵列组成的存储,其读取速度也难以超过万兆网卡的速度。更何况在直播时移电视推流服务器中,存储还会时刻不断地写入直播视频切片文件(视频流),推流服务器的存储在不断大量写入数据的同时,还要进行随机读取,其实际读取能力大打折扣。因此,对于直播时移视频服务器而言,改进其存储的随机读写速度或方式,才是提高推流服务器并发的有效途径。



技术实现要素:

为提高双向直播时移电视的并发能力,以及降低推流服务器的硬件成本,本发明提供了一种使用内存分区系统进行缓存热点内容,来降低硬盘读写频率,从而降低服务器对硬盘高性能的需求,并且带来服务器并发能力提高的方法。

降低磁盘读取压力的有效办法就是尽可能地利用内存来做缓存,本发明从此出发点着手,提出了一种提高直播时移电视并发能力的实现方法,通过一种简单易实现的方法,来完成视频内容在内存上的缓存。

直播时移电视的视频推流服务器,除了要考虑收视用户在请求视频内容时的数据读取压力,还要考虑直播视频源向推流服务器的实时写入压力。假设直播流由100个频道组成,平均每个频道为5Mbps码率(因可能会包含多种码率的自适应码率,以及高清电视内容,此处按较高的码率情况来估算),将会对服务器存储形成500Mbps,也就是62.5MB/s的写入压力。如果是使用传统的SATA存储,仅仅是文件写入就占用了巨大的开销。

对于上述100路频道,每频道5Mbps的例子,目前按中端配置的推流服务器16G内存考虑,可以保存约4.3分钟(16000MB÷62.5MB/s÷60秒/分钟=8.5分钟)的时移电视内容。4.3分钟的时移显然不能满足时移电视的普遍需求,现代时移电视通常要满足30分钟~4小时的时移需求。按照最大的4小时来计算,大约需要900GB的存储来保存这些电视内容(4小时×3600秒/小时×62.5MB/s=900000MB)。这些内容可以使用读写性能较高的SSD或SAS硬盘组成Raid来实现。也可以使用成本较低的SATA硬盘组成容量更大的存储空间,以便保存更多的频道、更久的时移内容、或是更高的视频码率。

为了提高内存存储分区的利用率,还需要分析频道节目的热度,来动态调整每个频道在内存分区中保留的时长。例如,比较热门的央视和卫视频道,应该在内存分区中保留更长的时移电视时长,而冷门的频道应尽可能少的占用内存空间,甚至冷门的频道不需要在内存中保留,而是直接保存到硬盘中。

对于内容热度的分配,可以通过收视统计系统提供的频道热门分析结果来做简单的预设调整。也可以在推流服务器中增加动态分析调度程序,来决定各个视频片段的热门程度以及在内存中保留的生命周期。

本发明的技术方案是:

一种提高直播时移电视并发能力的实现方法,

包括,内存分区系统、文件同步软件、文件过期管理和文件请求热度分析;其中,

首先将内存划分为直播和短时时移内存分区,将存储划分为长时时移硬盘分区;

在完成内存和硬盘的分区划分后,直播时移视频服务器将与直播中心服务器进行对接,实时地从直播源服务器拉取或由直播源服务器推送直播内容,并保存到直播用的内存分区中;

这里使用文件同步软件,将内存分区的文件实时同步到硬盘分区中;而文件删除可使用通过定时任务和脚本,当磁盘容量超过特定阀值时,将早期已过期的切片视频文件批量删除。

在内存中缓存文件的过程是,视频源文件首先存放到内存中,然后从内存中转存到硬盘中,同时将内存中热门的片段长时间保留,冷门的片段短时间保留。其过程会尽可能地减少硬盘读取的次数和可能性。

在同步时,只做增量同步,不做删除同步。文件同步软件包括Windows的SyncToy或FreeFileSync,以及Linux的Inotify+Rsync。

该方法会根据文件访问热度,选择性地将文件保留在内存中作缓存;

被缓存到内存里的视频片段是基于时间倒序保存的;

在内存中保留较多的热门文件片段,同时会降低冷门文件片段在内存中缓存的数量;

附图说明

图1是直播推流服务器部署结构和用户播放请求整体示意图。

具体实施方式

下面对本发明的内容进行更加详细的阐述:

假设推流服务器的硬件配置为32GB内存、1TB存储(仅用于保存时移节目)、万兆网卡。首先将内存中的16GB划分为直播和短时时移内存分区,将存储1TB划分为长时时移硬盘分区。常见的内存分区软件例如Windows的RamDisk,以及Linux的TmpFS均能创建内存分区系统。

在完成内存和硬盘的分区划分后,直播时移视频服务器将与直播中心服务器进行对接,实时地从直播源服务器拉取(或由直播源服务器推送)直播内容,并保存到直播用的内存分区中。按照前文估算的5Mbps码率计算,在100个直播频道的情况下,推流服务器的内存分区可以保存4.3分钟的直播和时移内容。对于超过4.3分钟的时移内容,则需要保存到硬盘分区中。

这里使用文件同步程序,将内存分区的文件实时同步到硬盘分区中。在同步时,应注意只做增量同步,不做删除同步。文件同步软件例如Windows的SyncToy或FreeFileSync,以及Linux的Inotify+Rsync。而文件删除可使用通过定时任务和脚本,当磁盘容量超过一定阀值时(比如90%),将早期已过期的切片视频文件批量删除。

在直播时移视频切片文件点播下载方面,建议使用Nginx作为HTTP服务器。使用Nginx分别发布内存分区的直播/短时时移的视频切片文件,和硬盘分区的长时时移视频切片文件,作为两个HTTP服务。将所有用户的直播和时移请求,全都默认导向直播/短时时移的发布端口,如果用户请求的是直播内容,或是短时间内的时移,服务器将直接从内存分区中读取文件,不占用磁盘I/O。当用户请求了时间较早的时移内容时,在内存分区中无法找到早期的文件,因此会触发404错误条件,从而会将用户的请求重定向到硬盘分区的时移内容。以下是Nginx对直播和时移的具体配置方法示例。

简而言之,以前文的100频道5Mbps码率的内容来说,对于用户的直播和4.3分钟以内的时移请求,服务器在为用户提供HTTP下载时,不会影响磁盘I/O速度。仅当用户请求比4.3分钟更早的内容时,才会从磁盘读取文件。

在直播时移视频切片文件分布方面,热门的频道及其视频切片应尽可能多地存放在内容分区中,而冷门频道及其切片不应占用过多的内存。根据频道热度动态调整不同频道在内存分区的时移长度,可以进一步提高内存分区的利用率,并降低磁盘读取的压力。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1