一种快速响应用户请求的流媒体系统和方法_2

文档序号:9618689阅读:来源:国知局
的存储热度密度,从而直接增加了热点分片的命中率,也提升了服务的响应速度及服务质量。
[0022]高速缓存服务器上的内容根据其相应热度来进行更新。例如,具有其热度已经低于阈值的内容或具有最低热度的内容可被淘汰,来为新内容腾出存储空间。这一更新可以周期性地进行,也可以在接收到来自云存储的新内容时进行,或者按这两种方式的任何组合来进行。
[0023]区域推流服务器群节点在接收到所调度的用户请求后,还通过负载平衡以公平公正的模式来将用户分派到该服务器群中的某个负荷较轻的高速缓存服务器之上,来进行更好更快速的服务。例如,在接收到所调度的用户请求后,将其分配给任何未过载的高速缓存服务器。优选地,分配给其中负载较小或最小的服务器。另外,高速缓存服务器还可将用户调度到未过载且现有用户较多的服务器,从而使得使用尽可能少的高速缓存服务器来对用户进行服务,而其他没有对任何用户进行服务的高速缓存服务器则处于休眠状态以节省电力;在所有运转的服务器都已达到预定负载的情况下,则自动唤醒休眠的服务器之一来对新用户请求进行服务,如此既保证了服务质量又节省了电力。
[0024]用户终端1和2用于发出请求,并作为响应,接收相应的流媒体内容。用户终端可以是能接收和播放流媒体内容的任何计算设备,包括个人计算机、便携式媒体播放器、智能手机、平板计算机等等。
[0025]在传统的多核多线程共用模型中,由于CPU的多核多线程时间片切换及捆绑使用模式下,导致当压力在一定负荷并且涌入大量用户请求时,会产生相互干扰,使原有的播放用户产生卡顿,影响服务质量,并且会导致用户请求响应变慢。为了使单台高速缓存服务器能够有效的发挥高性能服务器自身的最大优势,并且能够稳定地提供服务,本发明还对高速缓存服务器的架构做了改进,譬如CPU的利用、内存磁盘的分级分片缓存等等。图2示出了经改进的高速缓存服务器的体系结构示意图。下面将参考图2来详细描述高速缓存服务器的各个改进方面。注意,本领域技术人员可以理解,这些方面并非必须要全部实现。例如,在单核CPU中,针对多核CPU的改进就无需实现;或者可根据需要选择性地实现以下各方面中的任何一个或多个或全部。
[0026]CPU:
[0027]在图2所示的体系结构中,针对于不同用户的服务进行了有效隔离,从而避免相互干扰,且提升了用户请求的快速稳定性。例如,如图所示,CPU被划分成两段(上段和下段):上段所包括的各个核主要是用于进行用户服务,即基于核来隔离用户以及进行网络推流,而下段所包括的各个核则用来控制本地磁盘的读取(其中包含分级分片等行为)。CPU的上段与下段之间采用0S内核间拷贝(消息触发及数据拷贝)进行通讯,以提升整体CPU的性能。在上段中,每个CPU的核都会以独占模式托管一定比例的用户,使核与核之间尽量避免过多的交互,从而避免线程切换与作用力的相互干扰。在下段中,各个核负责磁盘读取。如此,高速缓存的服务器的各个核相对独立地运行,彼此干扰减少,隔离了不同的用户。
[0028]存储:
[0029]在高速缓存服务器的磁盘使用上,本发明考虑了大磁盘空间的缓存高性能体现,所以在整个磁盘层次上体现了多级存储。本发明在多级存储中统计不同性能级别磁盘上的热度搬迀和淘汰,既能支持大存储的缓存空间的同时,又能保障较热点文件的快速服务。例如,各内容按其热度高低依次被置于内存、高性能磁盘SSD以及中间性能SAS盘等各个级别的存储中,从而在充分利用多级存储的效率的情况下改进了高速缓存服务器的响应时间。
[0030]此外,每个级别的存储中,在文件以文件分片形态存在的基础上,本发明进而以大块(big chunk+fallocate)的模式将视频片储存在本地磁盘上,以保证传统磁盘上每个块也能够以一种相对连续性的存储在磁盘上,从而增加了磁盘顺序性来让读的能力发挥更大的吞吐和减少磁盘臂摆动的频率,并且让淘汰删除分片的性能更高更快,降低对其他在线用户的影响。在本文中,所述的文件片一般比文件块大,一般在几十MB左右,而大块则相对较小,一般为几十KB,大块在物理磁盘里是连续存储的。但是因为操作系统是预先分配块的,且是固定的,所以大块越大则会越浪费磁盘空间;然而,如果块比较小,则会在磁盘里产生很多随机存储片,这些随机片会对读造成很大的性能损耗。为此,本发明通过fallocate来使得能够分配比较大的文件片,且这些文件片是由N个大块(N多1)组成,从而使得尽量让这些大块之间也保持在磁盘连续存储来保证磁盘性能。这样,通过使用大块模式,本发明将文件片分成N个连续的大块,从而能够在节省磁盘空间的情况下保证磁盘的存储顺序性,从而保证了读取操作的顺序性,让程序的性能有大幅度的提升。
[0031]由于每个文件片最终会以独立的文件形态存储在磁盘文件系统之上,故而内核提供的文件预读机制(即,单文件预读)已经无法满足我们需求,本发明系统设计了一个新的文件预读机制一一分片读取及预读。由于分片文件是连续的,本发明将各分片文件之间的这一连续性存储起来。当一个分片文件即将读取结束时,通过获取分片文件之间的这一连续性信息,本发明能自动打开并预读该分片文件的后续一个分片文件,从而提升访问文件分片时的相应速度。这样,本发明根据流媒体文件编码的特性和用户行为习惯,能够做到跨文件的预读,从而有效地克服网络及磁盘性能的突发抖动,提高本发明系统的响应时间。
[0032]网络接口:
[0033]传统网卡接收和发送都依赖中断模式,由于高性能吞吐上动辄lOGbps的吞吐,会产生大量的中断,从而消耗大量的CPU。为此,在本发明的系统里采取了无中断模型,以轮询的模式让网卡进行收发数据来降低用户并发在线量所导致的大量中断所产生的CPU消耗。本发明还可以在中断和轮询模式之间切换。例如,在大量并发用户时采用轮询,而在少量并发时依然采用中断,从而节省在少量并发用户时的轮询空转所消耗的CPU。例如,本发明可在并发数低于预定阈值时采用中断模式,否则就采用轮询模式。
[0034]索引:
[0035]用户的响应除了正常播放以外,还体现在快进、快退、跳转等VCR操作,大量的VCR操作在视频文件中寻找关键帧会耗费大量磁盘和CPU性能。为此,本发明针对每部视频都建立了相关的索引及倍速文件。本发明按照常用倍速生用快进快退文件,倍速快进快退时顺序读此文件即可,比如2倍速、4倍速、8倍速、1/2倍速、1/4倍速、1/8倍速等等,而不需要每次都从原始文件中抽帧。每次用户跳转到指定点播放时,本发明的系统就会对索引里的关键帧进行定位,然后跳转到相应的视频文件的对应部分之中,来避免在一个视频文件里大量的递归查询的过程。针对快进快退操作,本发明系统直接从索引里找到相关倍速文件,并对倍速文件进行顺序播放,这样就省去了每次快进/快退时在原始视频文件里进行大量递归查询关键帧播放来达到倍速播放的效果,从而有效地降低磁盘及CPU的耗损,提高了对用户请求的响应速度。
[0036]图3示出了根据本发明的实施例的对客户请求进行服务的方法的流程图。
[0037]在步骤1,客户请求视频服务。所述请求包括该客户的IP、所请求内容的标识等信息。全局负载调度基于所述请求来确定就近区域推流服务器群节点。例如,将该客户请求中所包括的IP地址与区域推流服务器群节点的各IP进行比较,以确定就近区域推流服务器群节点。就近区域推流服务器群节点确定是否能对该请求进行服务。例如,就近区域推流服务器群节点是否包括所请求的内容,或者是否压力过大。如果就近区域推流服务器群节点包括所请求的内容且压力并不过大,则能够对该请求进行服务。响应于确定就近区域推流服务器群节点能对该请求进行服务,将客户调度到就近区域推流服务器群节点,以对该客户请求进行响应。在此,区域推
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1