自适应网络内容传送系统的制作方法

文档序号:7738413阅读:326来源:国知局
专利名称:自适应网络内容传送系统的制作方法
技术领域
本发明总体上涉及媒体内容传送。
背景技术
本部分描述的方法是可以实行的方法,但并不必然是先前已经构思或实行的方法。因此,除非在此另有指示,本部分描述的方法不是针对本申请权利要求的现有技术,并且不因为包含在本部分中而将其视为现有技术。经过因特网的内容传送已经通过一些不同的方式实现。内容服务器已经用于直接向提出请求的客户端传送内容。随着内容服务器由于业务量需求而过载,人们采用了多个服务器之间的内容镜像。随着客户端的业务量增加超过镜像服务器的安装基础的容量,则增加镜像服务器。由于镜像对于内容提供商来说成本较高,在内容传送网(CDN)中对内容进行缓存变得流行起来。内容提供商的内容经过因特网在缓存服务器之间分布。缓存服务器在多个内容提供商之间共享,并且由CDN提供商运营。缓存服务器本质上是文件服务器,其向客户端系统提供不同类型的文件。


在附图中,本发明通过示例性而不是限定性的方式进行描述,图中相同的附图标记表示相同的元件,其中根据本发明的实施例,图1示出了通过网络与客户端系统、源服务器、同级MFD和中央管理站进行通信的媒体流导向器(MFD);根据本发明的实施例,图2示出了 MFD部件和数据流结构的示例;根据本发明的实施例,图3示出了动态确定内容部分的流行程度的示例;根据本发明的实施例,图4示出了代替传统的视频服务器位置的MFD部署;根据本发明的实施例,图5示出了向客户端系统传送内容的MFD网络;根据本发明的实施例,图6示出了可以在其上执行实施例的计算机系统;根据本发明的实施例,图7示出了 HPE和服务器端播放器之间工作流的流程图;根据本发明的实施例,图8a示出了磁盘管理器和策略模块、分析模块之间的交互;根据本发明的实施例,图8b示出了磁盘管理器和用于存储设备的字典之间的交互;根据本发明的实施例,图8c示出了磁盘管理器和反向框图之间的交互;根据本发明的实施例,图9示出了缓冲池和缓冲区管理器之间的交互;根据本发明的实施例,图IOa示出了媒体管理器、缓冲区管理器和媒体提供者之间的交互;根据本发明的实施例,图IOb示出了媒体管理器和分析模块之间的交互,用于确定热门的视频片段;根据本发明的实施例,图11示出了 MFD中的网络管理器的流程图;根据本发明的实施例,图12示出了树枝目录文件中的渐进下载的提示跟踪位置;根据本发明的实施例,图13示出了参数说明屏幕的图形用户界面的截屏;根据本发明的实施例,图14示出了实时字节传送监控图的图形用户界面的截屏; 以及根据本发明的实施例,图15是网络连接性能监控图的图形用户界面的截屏。
具体实施例方式本发明描述了自适应网络内容传送系统。在下文的描述中,出于解释的目的列出了多个具体的细节,以便提供对本发明透彻的理解。然而对本领域技术人员显而易见的是, 本发明可以在没有这些具体细节的情况下实施。在其他情况下,公知的结构和设备以框图形式示出,以免不必要地对本发明感到费解。在此,根据下列提纲描述实施例1. 0总体概述2. 0结构和功能概述3.0通过网络的自适应内容传送3.1媒体流导向器结构3. 2媒体流导向器布局
4. 0执行机制——硬件概述5. 0 示例6. 0扩展和选择1. 0总体概述本发明描述了用于自适应网络内容传送系统的方法。在其他实施例中,本发明包括被配置为执行上述方法的计算机设备和计算机可读介质。2. 0结构和功能概述本发明描述了自适应网络内容传送系统。参照图1,可能的实施例提供了媒体流导向器(media flow director) (MFD) 103。MFD是网络设备,其能够经由HTTP、FTP、流式传输或者其他协议,将视频内容(以及不同大小的其他类型的文件内容,例如媒体(音频、图片等)、游戏、软件、HTML、脚本等)通过网络104高效传送给多个客户端101a、101b、101η。 视频内容包括这些内容,例如长篇电影、情景喜剧、综艺节目、脱口秀、新闻、广告等。客户端设备101a、101b、101n可以是个人计算设备,例如台式或膝上型计算机、机顶盒、手持式计算设备、蜂窝电话、便携式媒体播放器、或者能够显示多媒体内容的任意其他便携式设备, 并且客户端设备经过任意合适的接口与网络104连接。MFD 103在内部将视频内容存储在多个存储设备(包括HDD、SSD、RAM、非易失性存储器等)中。MFD 103能够将视频传送给大量客户端,而为每个客户端保持高水平的观看体验。通过测量客户端最后一英里的比特率变化,MFD 103自动调整正在传送给客户端 101的视频的比特率。MFD为客户端提供没有缓冲停顿的流畅的视频观看。其使用自适应的比特率传送,保证了正在播放的视频向客户端的传送。MFD动态调整视频的比特率,以便匹配最后一英里的有效带宽并且适于为客户端改变网络状况。MFD能够动态测量到达客户端的最后一英里带宽,以动态调节比特率。客户端不需要与MFD通信的定制的视频内容播放器。MFD支持行业标准的视频播放器,例如Flash、Quicktime、SilverLight、Windows Media Player 等。MFD 103提供视频的存储和传送上的策略控制,该策略控制可以由客户和MFD供应商定义。MFD能够以多种方式经过网络104部署,包括位于边缘缓存(edge cache)位置或源服务器(origin server)位置。网络104可以由在通信系统的设备之间提供数据交换的任意介质或机构实现。网络104的示例包括但不限于,局域网(LAN)、广域网(WAN)、以太网、内联网、因特网,或者一个或多个地面、卫星或无线链接。MFD 103经过任意合适的通信接口(例如以太网或无线通信端口 )与网络104通信。可选择地或者除此之外,与网络104连接的任意数量的设备还可以经过通信链接彼此直接相连。例如当客户端101对没有存储在MFD 103的存储器中的URL内容进行请求时, MFD 103能够经由网络104或者经由本地网络从源服务器102请求内容,以获取URL内容。 此外,MFD 103能够经由网络104或者经由本地网络与另一MFD 105通信,以获取URL内容、 MFD内容信息、MFD状态等。中央管理站106可允许管理员为MFD管理(例如缓存器管理、带宽限制、内容流行度确定等)制定策略。中央管理站106还允许管理员对于将内容存储在MFD的多个存储设备中的何处以及如何将内容存储在MFD的多个存储设备中进行管理。中央管理站106可以经由本地网络或者经由网络104与MFD 103、105通信。管理员登录中央管理系统106并且选择管理员希望与其进行交互的一个MFD或一组MFD。管理员能够定义策略,并且由中央管理站106将策略发送给一个MFD或者推广到多个MFD。可选择地,MFD可以周期性地与中央管理站106通信,或者当中央管理站告知对于该MFD的更新可用时与中央管理站106通信。3.0通过网络的自适应内容传送3.1媒体流导向器结构图2示出了可能的实施例,其中示出了内容传送交换的结构,其被配置为MFD以传送视频内容。下面描述结构中的部件。输出协议引擎210输出协议引擎210处理来自客户端的请求。客户端向MFD发送请求(例如用于特定URL的HTTP获取请求)以形成与客户端的连接,输出协议引擎210将请求URL内容传给服务器端播放器201。服务器端播放器201服务器端播放器201主要负责对于每个视频流的特定视频逻辑的封装和实施。当向MFD发出用于视频流的请求时,此类实施可以在入站侧(inbound side)发生,而当特定视频流离开以用于传送时,此类实施可以在出站侧(outbound side)发生。服务器端播放器201解释从输出协议引擎210接收的URL,决定对所请求的视频内容使用多大的比特率,处理将要发送什么,以及从何处播放视频(从视频中的哪一帧开始播放)。服务器端播放器201是比特率感知的(bit rate aware),并且知道其正在尝试提供的视频内容的比特率。其能够使用从优化的网络堆栈211获取的信息,以找出对于客户端在最后一英里中的有效带宽。服务器端播放器201还能够核准请求。在可能的实施例中,使用作为查询字符串而嵌入URL的标记的散列键,以证明对请求进行了核准。服务器端播放器201提供有保证的比特率和服务质量(QoQ特性。如果客户端不得不进行缓冲,则意味着MFD已经在其传送率方面落后,而客户端已经经历了沉寂时期,在沉寂时期中没有用于播放或显示的内容。在一个可能的实施例中,服务器端播放器201计算已经向客户端发送了多少数据以及过去了多长时间。服务器端播放器201跟踪发送给每个客户端的数据量以及正在向每个客户端发送的视频内容的比特率。随着向每个客户端发送一定量的数据,服务器端播放器201记录发送的数据量以及最后的数据量发送之后过去的时间。可选择地,服务器端播放器201能够记录发送给客户端的数据总量以及在客户端会话期间过去的总时间。使用记录下来的信息,服务器端播放器201能够计算其是否已经在向特定客户端的传送方面落后。例如,如果服务器端播放器201已经以某一比特率向客户端发送了 30秒的数据,而在最后的数据传输之后已经过去了 31秒,则服务器端播放器 201知道其已经落后了。在另一可能的实施例中,服务器端播放器201计算还需要向客户端传送多少数据以及必须在其中传送该数据的时间窗口,以避免在客户端进行缓冲。该计算和前面的示例有些许不同。服务器端播放器201知道视频文件的大小,并由此能够计算仍然要向客户端发送的数据量。在给定比特率和视频文件的总大小的情况下,其还能够计算必须向客户端发送其余的数据量的时间。服务器端播放器201能够计算其需要为任务设定的最终期限, 其产生任务是为了向客户端传送视频文件的片段。MFD是基于任务的系统,其能够使用基于最终期限的调度。服务器端播放器201在任务中设定最终期限,其产生任务是为了避免客户端缓冲。在可能的实施例中,服务器端播放器201计算有保证的流率(assured flow rate) (AFR)值(在下文描述)。AFR是需要确保流畅的观看体验的传输率。服务器端播放器201 使用AFR值为任务设定最终期限,其产生任务是用于请求来自缓冲区管理器203的数据。服务器端播放器201计算AFR,而输出协议引擎210管理每个连接上的传输率(基于AFR)并且设定任务的最终期限,从而能够满足AFR。在上述示例中,服务器端播放器201尝试领先于AFR并且将会知道其已经落后,例如,如果服务器端播放器201已经发送了 30秒的数据, 而在最后的传输之后已经过去了 30秒,则服务器端播放器201立即知道其已经落后了。在可选择的实施例中,服务器端播放器201能够扫描媒体文件,以便为媒体文件设定AFR。服务器端播放器201知道某种质量或解析度的媒体文件需要某种传输率,以确保客户端不会发生停顿。服务器端播放器201还处理取消请求(以便决定将来做什么)、译码 (transcoding)和广告插入。与不知道视频文件格式或视频内容的典型的文件服务器相比, 服务器端播放器201是视频感知的(video aware)。当服务器端播放器201在视频开始后改变比特率时,服务器端播放器201已经知道相关帧存在于不同的比特率形式中的何处, 因此服务器端播放器201能够很容易地改变比特率,而客户端不必为新的比特率发送不同的偏移量(offset)。可能的实施例以定制的格式存储视频内容,该格式可以译码为其需要的任意比特率。这允许服务器端播放器201准确地知道相关帧在何处,用于为每个比特率进行译码。另一可能的实施例为特定的视频内容存储一些不同的比特率形式。服务器端播放器201为每个比特率形式存储索引表,因此服务器端播放器201能够对表进行快速查阅,以便找到用于新比特率的视频的相关帧。服务器端播放器201能够执行将广告插入视频流中。广告能够作为覆盖而放置在视频流中。这使得广告插入不依赖客户端播放器。内容能够动态产生,例如能够动态地完成对字幕语言的选择,以及能够动态地对合适的字幕进行覆盖。服务器端播放器201能够将广告拼接到视频中间(称为间隙型)。服务器端播放器201还能够利用另一信道覆盖视频的语音信道,以提供多语言支持,而不必存储不同版本的视频内容。在可能的实施例中,服务器端播放器201提供两个接口,它们都是由输入协议引擎209中的HTTP协议引擎(HPE)访问的接口 北向接口 在北向接口处,服务器端播放器201对HPE分析的每个输入请求进行检查,以验证该请求带有其定制的特定逻辑。一旦对请求进行了检查并且实施了必要的参数, 则该请求被发回HPE,从而其能够向缓冲区管理器203(以及此后的其他的提供者)提出关于内容的有效的请求。南向接口 在南向接口处,所有离开的数据被发送给服务器端播放器201,以便在传送之前进行检查。这是服务器端播放器201在内容发出以用于传送之前,能够实施任何限定的最后的位置。在该阶段,服务器端播放器201具有修改缓冲区管理器203所返回的数据缓冲的能力(如果在发送之前需要修改)。图7示出了 HPE和服务器端播放器201之间工作流的可能的实施例。执行以下步骤步骤1 在建立连接之后,用户请求经过优化的网络堆栈211到达HPE 701。步骤2 =HPE 701进行尽可能少的分析,以获得查询字符串和名称/值对(name/ value pairs)。步骤3 利用所述查询字符串,ΗΡΕ 701接着启动对服务器端播放器201的调用。步骤3a 服务器端播放器201使得与视频无关的文件(但是本质上是安全访问文件)等(例如客户端播放器请求的那些文件)通过。步骤4:对于每个新连接的每个首次调用,服务器端播放器201将查询字符串关于指向元文件的内部URL进行重映射。该元文件存储存在的类别(profile)数、它们的比特率、周期、以及视频的其他信息。步骤5 服务器端播放器201将重映射的URL返回HPE 701,并且还设定标记,该标记向HPE 701表明并不立即发送返回的元文件,而是发回服务器端播放器201以用于进一步处理。步骤6 =HPE 701产生任务,以便从缓存器取回元文件。HPE 701接收元文件并且将其返回服务器端播放器201。步骤6a 服务器端播放器201将元文件中的信息存储在套接字结构(socket structure)中以用于该连接。将元文件信息存储在缓存器中是取回的结果,以用于将来的快速查询。步骤7 —旦对套接字结构进行填充,服务器端播放器201即能够以翻译逻辑插件 704对原始URL进行重映射。翻译逻辑插件704(进行查找和比特率调整)使用存在于套接字连接中的服务器端播放器201结构中的信息,以便必要地翻译为不同的类别/程序块 (chunk) ο
步骤8 服务器端播放器201返回重映射的URL并且在HPE 701中重新设定标记, 以表明其可以立即取回和发送从缓存器检索的数据。步骤9 将查询字符串传给服务器端播放器201。服务器端播放器201检查套接字结构是否已经填充。步骤10 如果填充并且如果用于时间偏移量的名称/值对不是最少的(存在表示取消或查找的时间偏移量或字节偏移量),则服务器端播放器201调用翻译逻辑关于合适的URL进行重映射并且服务器端播放器201调用HPE 701,以便取回/传送数据。步骤11 如果查询字符串中的名称/值对是最少的(不存在表示取消或查找的时间偏移量或字节偏移量),则从步骤4进行重复。调度稈序202调度程序202使用调用程序设定的最终期限,以对任务的调度进行协调。可以存在无数任务,调度程序202在其中进行管理。其保持由最终期限协调的任务。调度程序202 对这些任务进行监控,以便发现是否有任何任务已经错过其最终期限。这向调度程序202 表明MFD已经落后。调度程序202向服务器端播放器201发送反馈,以向其表明传送率已经落后。调度程序202能够发送信息,例如任务ID以及任务错过最终期限的时间长短。在可能的实施例中,如果确定不能满足所请求任务的最终期限,调度程序202可以拒绝为新的连接接受任务。这是接纳控制(admission control)的一个部件,其确保MFD 资源不会过度使用并且现有的连接流畅地进行播放。相似地,执行任务的所有部件(例如缓冲区管理器、磁盘管理器和源管理器(origin manager))能够查看它们的内部资源承诺, 并且使得新连接的首个任务失效,以作为拒绝接受会话的方法。服务器端播放器201能够识别哪些任务与每个客户端相关。其能够计算(可以使用上述计算行为)在向客户端传送视频内容方面的延迟程度,并由此调节接下来的任务的最终期限。服务器端播放器201接着能够停止接受新的连接。在可能的实施例中,服务器端播放器201能够(可以基于策略设定)降低某些现有连接的比特率,以便接受附加的连接。这些方法允许服务器端播放器201动态测量其性能,并且由此,其不必设定客户端连接数量的静态上限。假定其处理很多不同的比特率,连接数量的静态上限并不代表MFD的真实性能,因此动态上限是更加有效的,并且允许MFD自身决定其是否能够处理更多或更少的连接。可能的实施例执行最终期限调度,其中每个任务状态可以具有多个最终期限队列。每个最终期限队列能够对应固定的周期,例如1/10毫秒的程序块。调度程序202可以使得具有最短的最终期限的队列出栈。任务处理程序在起始时刻向调度程序202预先登记。它们总是非分块的。分块处理程序是另一组线程并且在下文描述。在可能的实施例中,任何任务切换不涉及线程环境切换。分块任务放射到线程池中。无论何时存在待完成的任务,来自线程池的一个线程为该任务提供服务。这时,调度程序202已经对分块任务进行了切换。由此,没有其他的任务将被分块。调度程序以WRR(加权轮叫调度(Weighted Round Robin))方式检查相关的队列 (状态/最终期限队列)。其通过调用预先登记的任务处理程序而派遣任务。通过保持对
11已过去时间的跟踪并且使得相关队列出栈,调度程序202根据最终期限进行调度。最终期限调度并不是严格地实时的。最终期限是对调度程序202的一种推荐方式,即特定任务需要在另一任务之前进行调度。调度程序202支持不同类型的线程。这些线程是任务线程、I/O线程、事件线程和网络线程。这些列出的线程并不限定能够执行的线程的数量和类型。任务线程是用于任务执行的主引擎。调度程序202是启动程序。其基于优先级管理执行调度查看。当没有任务执行时,这些线程阻塞。I/O线程用于实现分块线程(例如磁盘管理器206中的磁盘I/O)。它们能够在读 /写调用上分块。事件线程是异步的并且关于任务状态改变对网络事件进行映射。网络线程实现用户空间网络堆栈并且通常不在读取上分块。专门的线程用于定标和AFR的定时器管理。可选择地,可以使用调度程序线程上的任务而执行网络活动。磁盘管理器206磁盘管理器206管理分散在多个磁盘驱动器上的对象,无论对象的大小、总数和类型。另外参照图8a,磁盘管理器206从策略模块801 (PM)和分析模块802(AM)获取关于对象布局的提示。媒体管理器204能够与PM 801交互,以帮助其决定如何将视频分配为片段,并且还确定视频的一部分何时被确定为热门(如下所述)。媒体管理器204还能够与 AM 802交互。基于媒体管理器204所提供的涉及对视频部分的点击的统计信息,AM 802确定哪些视频部分是热门的。存储在磁盘管理器206中的对象最有可能是与视频相关的,但也可以是任意对象。对象的磁盘布局尤其适于视频对象,因为它们是以连续方式进行观看的。对于小对象,磁盘管理器206执行特殊压缩,因此很多连续的小对象能够按照时序很靠近地压缩在一起。这在小对象是按照时序从大视频分块而形成的情况下效果很好。这种压缩允许磁盘管理器206优化磁盘驱动器的读取性能,因为读取小量数据花费的时间基本相当于读取 1-2MB的数据花费的时间。在另一实施例中,磁盘管理器206能够允许多种压缩对象的策略。除了基于时间的局域性(locality),其还能够基于名称结构或其他的定制方案中的局域性而支持压缩。另外参照图8c,磁盘管理器206能够使用反向框图(reverse block map) (RBM) 805,以便一致地读取大的数据块806(甚至是存在小对象的情况下)。将数据块的大小设定为特定大小(例如1MB、2MB等),这允许从磁盘驱动器的高效读取。对每个数据块, 磁盘驱动器206在RBM805中保持一列盘区(extent),其中每个盘区是对象的相接触的部分。在该示例中,RBM 805列出带有相关盘区807-812的数据块806。注意,对于较小的对象,多个小对象自身或者较小对象的一部分可以放入数据块,并且可以一起读入缓存器。当磁盘管理器206接收对于对象的特定部分的请求时,其将数据块定位在特定部分所处的位置。其接着将整个数据块读入缓冲区管理器203供给的缓存器813。使用RBM 805,磁盘管理器206能够向每个缓冲区分配正确的身份(UOL)(如下所述)。这允许缓冲区管理器203 随后消耗附加的数据,而无需进行附加的10。在实施例中,磁盘管理器206在RBM中为存储在MDF中的所有对象产生入口。当从源服务器加载对象时,磁盘管理器206可以在RBM中为对象产生入口。磁盘管理器206负责多种类型的磁盘控制器和磁盘驱动器,包括SATA、SAS、SSD和闪存。每种驱动器类型具有不同大小和性能特性。这样,磁盘管理器206将为每种驱动器类型改变数据布局,以允许磁盘空间的优化性能和利用。为了驱动器类型和控制器中的差异的自动调准,磁盘管理器206在启动时执行简单的带宽测试,因此其可以对其在开放的硬件环境中所处理的大量配置进行分类。管理员能够配置磁盘管理器206,以便将来自源服务器存储到硬盘驱动器上或缓存器中。在磁盘管理器206将内容存储到硬盘驱动器或缓存器上之前,管理员能够指明磁盘管理器206存储首次命中或者特定数量的命中的内容。这允许管理员灵活地将缓存的内容调节为任意已知的或预测的需求。可选择地,内部的分析能够驱动磁盘管理器206如何存储内容。管理员能够指示磁盘驱动器206将特定的新内容存储在硬盘驱动器上,例如,这是因为管理员知道对连续剧的新剧集存在需求。逐出策略由磁盘管理器206实施。内容可以从硬盘驱动器或缓存器中删除,以便基于管理员或客户定义的逐出策略为新内容留出空间。在可能的实施例中,能够在内部基于分析算法对逐出策略进行驱动,例如使用最近最少使用的(least recently used) (LRU) 算法或其衍生算法。客户能够在MFD中建立足够的存储容量,使得存储空间永远不会被客户的内容填满。客户可能希望使其内容处于硬盘驱动器最快的区域中并且以稀疏方式填充硬盘驱动器,以便实现该目标。于是,客户能够拥有一组带有以稀疏方式填充的硬盘驱动器的专门用于其最热门内容的MFD,并且具有另一组MFD,对其不那么流行的内容进行缓存。 管理员可以指明,MFD上的某些硬盘驱动器以稀疏方式填充最热门的内容,而MFD上的其他硬盘驱动器用于所有其他的内容。这允许客户为特定的MFD实现高效的存储方案。另外参照图8b,磁盘管理器206将每个设备视为独立的缓存器模块。与文件系统相似,每个设备上的元数据和数据包括单独且独立的存储。然而不像传统的文件系统,命名体系在所有模块间是共同的,其中给定的名称与逻辑设备(文件系统)绑定。例如,如果传统的文件系统安装在/a/b/c处,则在该目录下的所有对象将位于该文件系统中。相比之下,磁盘管理器 206 能够将 /a/b/c/one. gif ,/a/b/c/two. gif 和 /a/b/c/three. gif 存储在其管理的缓存设备803a、803b、803c的任意之中。在初始布局(以及用于负载均衡的重新定位)期间,磁盘管理器206基于其保持在每个设备基础上的使用统计(usage statistics) 而选择存储对象的设备。在查询(以便对STAT任务提供服务)期间,磁盘管理器206再次基于使用统计,确定哪些设备具有对象并且选择一个设备。这允许从不依赖对象名称的任意缓存模块对对象或对象的一部分进行放置并且提供服务。基于使用统计,磁盘驱动器 206能够通过放置对象(以及动态地将它们重新定位)而优化来自每个设备的带宽。在实施例中,磁盘管理器206在每个设备的读写吞吐量方面保持对每个设备业务量的跟踪。在初始放置和重新放置期间,其选择具有最少业务量的设备。在另一实施例中,其使用队列深度(未完成的请求数)和平均等待时间作为业务量的度量。灵活的布局结果引起缓存设备间的线性伸缩(linear scaling)。在实施例中,磁盘管理器206将用于每个缓存设备803a、803b、803c的字典8(Ma、 804b,804c缓存在RAM中。字典804a、804b、804c由存储在设备803a、803b、803c中的对象树和关于对象的少量元数据组成。这允许磁盘管理器206非常有效地回答STAT询问,而无需产生任何磁盘10。磁盘管理器206提供简单的故障恢复模型。单一缓存设备的失效仅引起包含在该缓存设备中的对象的丢失,而对其他缓存设备的性能没有影响。失效的缓存设备能够被更换(在线,对于支持热交换的硬件系统)并且重新配置为新的缓存模块。在实施例中,磁盘管理器206还能够在多个缓存设备中选择性地复制对象,以便获得更好的故障恢复和性能。在实施例中,关于视频的所有信息在每个设备中是独立的,从而设备可以在MFD 之间移动。随着时间的过去,磁盘管理器206询问分析模块802,以便在设备之间和/或向 SAS磁盘803的驱动器中的内磁道或外磁道自动移动整个电影或电影片段。磁盘管理器206 为媒体管理器204提供必要的数据,以将缓存体系中的对象在多个层之间升级(promote) 或降级(demote)。内容的初始布局可以依赖来自分析模块802和/或策略模块801的数据。磁盘管理器206选择优化读取性能的数据布局(甚至对于小对象)。磁盘管理器206能够避免影响多数文件系统性能的分段存储问题。在数据块中, 无论可配置的空间量何时空闲,均可以通过回收整个数据块而实现该目标。例如,如果2MB 的数据块填充了 64个每个为32KB的对象并且半数对象被删除(例如基于逐出),则磁盘管理器206能够使得整个程序块空闲。RBM由磁盘管理器206使用,以便在逻辑上删除或重新定位其余的对象。视频信息可以包括压缩/未压缩的视频数据、应用程序所需的视频属性(报头信息)和需要帮助内部操作的视频属性(缓存到期、缓存起始时间)。磁盘管理器206随着驱动器的去除和添加再次调节缓存内容。其还合理地处理来自物理媒体的运行时间误差。 SAS、SATA、SSD和闪存驱动器在相同的系统中一起得到支持。磁盘管理器206允许与多个驱动器的高度并行。可能的实施例允许带有媒体的缓存器的预先加载,可以在到达特定日期和/或时间之前提供该媒体。智能缓存当硬盘驱动器用作缓存器并且缓存几百、几千、甚至几万个视频时,硬盘驱动器通常不像缓存器那样运行良好,最终的结果是随机的输入/输出(IO)模式。MFD将关注的内容放置在硬盘驱动器的相同区域,因此MFD能够实现大量读取,以补偿带宽(例如低带宽连接),MFD能够一次读取30秒的视频并且将其存储在RAM或SSD的缓存器中(或者根据提供的连接数并且考虑这些连接的带宽,在硬盘驱动器上进行缓冲)。这允许在该缓存器之外对客户端提供服务,并且客户端在30秒之内不需要其下一 10。SSD用于访问更加频繁的内容,或者用于需要更小的随机10(其不能有效地从硬盘驱动器得到服务)的内容。流行度指数用于内容的各个部分,以确定是否有部分是热门的。对于视频,人们可能不会观看整个视频,而视频的某些部分可能比其他部分更加热门,因此对内容的最热门部分进行缓存。这允许MFD在其缓存方面更加智能。例如,MFD不必缓存整个视频流。MFD动态计算内容的各个部分的流行度。参照图3,视频的热门部分的边界随着MFD测量视频流的入口而动态确定。在可能的实施例中,服务器端播放器201使用逻辑分块方法,以动态确定视频的热门部分位于何处。例如,服务器端播放器201可以使用帧标识符,例如嵌入视频帧或存储器地址位置中的时间标签。帧标识符可以由服务器端播放器201使用为视频流产生的偏移量的表格而获取。偏移量的表格可以由系统在收到视频流时产生,或者由内容提供商产生,偏移量的表格在接收视频流时载入系统。可以为视频流的不同比特率存储多个表。
服务器端播放器201能够确定视频流包含的其观看最多的帧的部分或边界,并且将视频流的热门部分放入缓存器之一(硬盘驱动器、SSD或RAM)。在可能的实施例中,分析模块监控视频1,301、视频2,302、视频3,303和视频4,304。其发现客户端系统对视频的某些部分比该视频的其他部分或其他视频观看的次数更多。视频的这些部分305、306、307、 308存储在缓存器309中。缓存器309可以是任意缓存器,RAM缓存器、SSD缓存器或硬盘驱动器缓存器,或者是以上的任意组合。在可能的实施例中,服务器端播放器201支持所存储的视频流的实体程序块,其将视频流分割为小文件并且确定哪个文件是流行的。实体程序块将视频分割为客户端播放器可见的已命名的小程序块。基于时间的访问模式用于确定哪些视频倾向于一起观看,例如主题相关的新闻或内容相关的视频,而磁盘管理器206将视频的热门部分放在硬盘驱动器缓存器、SSD缓存器或RAM缓存器中的同一区域,因此增加了缓存命中次数并且允许更快的访问时间。RAM缓存器与缓冲区管理器203集成。其使用分析方法和/或策略以管理RAM缓存器和选择逐出候选者。随着服务器端播放器201发现每个热门的视频部分,缓冲区管理器203确定已经存储在缓存器中的哪些热门部分不再被确定为热门。缓冲区管理器203从缓存器中去除不再热门的部分,为新的热门部分留出空间。这由缓冲区管理器203基于源自访问模式的内部分析方法而完成。在实施例中,缓冲区管理器203将不处于活跃状态的缓冲区保持为由逐出指令协调。该指令考虑了一些因素,例如访问缓冲区的次数,访问的时间频率和使用率的增加/减少。缓冲区管理器203能够将主存储器(RAM)用作缓存器(对于高比特率视频)和 SSD存储器(对于低比特率视频)。这允许MFD更有效地使用主存储器。媒体管理器204管理缓存体系(例如SSD、硬盘、同级设备)。其评判分析方法和 /或策略,以确定何时将缓存器内容升级、降级或逐出。媒体管理器204将划分等级的缓存器管理初始化,缓存器管理包括缓存升级和降级的行为。对于缓存体系中每个元素的实现称为缓存提供者。提供者进行动态登记,并且基于其登记的特性(例如带宽、等待时间、容量等)集合到体系中。存在两类提供者属于系统本地缓存器的缓存提供者,其支持读写; 以及属于网络源的源提供者,其提供源内容并且是只读的。缓存迁移的单位可以包括逻辑块边界,或者在一些情况下能够纯粹源自设备级的数据块管理。例如在HDD中,流行的数据块(其可以包含多个视频的部分)能够升级到SSD或者HDD的外磁道。元数据描述了媒体在磁盘之间存在于何处。多数操作系统对关于文件的信息进行缓存。该信息称为索引节点。索引节点缓存器能够容纳很多索引节点,通常是百万的数量级。该缓存器将耗费MFD可以用来缓存媒体数据的宝贵的存储容量。MFD具有向其告知媒体数据的多个片段存储在磁盘原始分区中的何处的信息。该信息归入元数据类并且称为 “盘区”。容纳大的媒体对象的每个磁盘存储块能够具有单一盘区以用于该数据。当磁盘存储块容纳多个小对象时,每个小对象具有对其进行描述的单独的盘区。为了减少索引节点缓存空间(这在一些系统中是难于控制的),元数据(包括盘区)被压缩到称为树枝目录(container)的单一索引节点/文件中。每个树枝目录容纳一组公共对象的盘区。因为对象是公共的,所以MFD通常为这些对象读取元数据。在可能的实施例中,MFD产生动态的磁盘体系,其允许MFD确定MFD中磁盘的带宽。磁盘管理器206确定哪些驱动器是可能的缓存器目标。其进行简短测试,以便根据磁盘带宽将每个驱动器分类。这是因为相同类型的驱动器能够根据其前方的磁盘控制器而看到不同的性能值。通过运行磁盘测试,磁盘管理器206不需要辨别多种驱动器类型或者弄清每个磁盘控制器能够传送什么性能。驱动器/控制器的带宽组合将遵从厂商或管理员设定的类别。通常存在多种类别。在可能的实施例中,MFD产生磁盘缓存体系。缓存体系的每个等级均包含一组对象。访问次数多的对象是移动进入邻近的最高速体系的很好的候选者,因此能够降低所有对象的总的访问时间。当适宜移动对象时,能够使用带宽使用和空间使用确定从较低等级到较高等级的对象移动,从而确定何时适于移动对象。访问次数少的对象是移动进入邻近的最低速体系的很好的候选者,为较高访问次数的对象留出空间。MFD尝试将用于最高等级到最低等级的可用带宽最大化。例如定义3个等级A、B和C,A是最高速的缓存器。如果A 没有填满,则将B中访问最多的对象升级到A是可行的。这将为从C到B升级对象留出更多空间。如果B中的某些对象不如C中的对象访问频繁,则通过将B中访问最少的对象从 B移动到C中而使其降级并且将C的访问最多的对象升级到B中是可行的。该移动过程成为“升级”和“降级”。每个磁盘驱动器外部的10-15%能够传送好于整个驱动器的随机性能15-20%的性能。可能的实施例能够开拓出驱动器的外部并且将媒体对象最热门的部分迁移到该区域。缓冲区管理器203缓冲区管理器203提供MFD中的主要数据路径。MFD提供的所有内容经由缓冲区发送。缓冲区用于出站网络和缓存提供者以及外部网络和RAM缓存器之间的速度匹配(缓冲)。后者是缓存体系中的(隐含的)第一级。当请求的内容在缓存器中不可用时,缓冲区管理器203使用媒体管理器204的服务,以检索数据并且对其进行缓存用于之后的请求 (如果可能)。缓冲区管理器203从HPE产生的任务接收用于内容的请求。缓冲区管理器203取回内容。其在给定URL和偏移量(从此偏移量开始播放)的情况下将会提供该内容。缓冲区管理器203从媒体管理器204检索内容。缓冲区管理器204产生任务,以检索从所述偏移量开始的视频内容的一部分。媒体管理器204从硬盘驱动器或SSD检索内容。缓冲区管理器203能够检查所请求的内容是否与主存储器缓存器(RAM)中存储的任何内容匹配。RAM 缓存器由多个缓冲区组成。能够直接从缓存器获得缓存命中,而无需任何另外的复制。通过使用媒体管理器204填充新的缓冲区而获得缓存未命中,以将内容在存储器中定位。缓冲区管理器203将指向包含视频内容部分的缓冲区的指针指向输出协议引擎210,所述输出协议引擎210使得视频内容部分流向客户端。缓冲区管理器203高效管理大量存储器。其具有在提供相同内容的连接之间共享缓冲区的能力。缓冲区管理器203还具有源自MFD中的使用模式的高效的重复利用方案。缓冲区管理器203基于代价函数处理缓冲区逐出,基于使用计数和使用时期计算所述代价函数。较高的使用计数导致较高的代价,而使用时期作为代价的衰减函数,例如较旧的缓冲区具有较低的代价。逐出算法尝试准确地发现具有最低代价却又高效工作(恒定时间)的缓冲区。
能够被逐出的缓冲区(具有零参考计数)被插在LRU列表的尾部。这些列表由缓冲区的使用计数进行排序。每个LRU列表由时间标记(timestamp)进行高效排序。不在缓存器中的缓冲区(例如过期的、清除的)以零时间标记放在最低的LRU列表的头部。在逐出期间,为每个LRU列表的头部计算代价,并且最低代价的缓冲区被逐出。每个对象(URI)均具有属于属性的一部分的截止时间。在访问缓冲区缓存器时, 针对当前时间对截止时间进行检查。如果过期,则所有缓冲区和与对象有关的属性从缓存器中去除。当参考计数变为零时,将缓冲区放在LRU列表中。能够利用源服务器,在截止时间之前的时间窗口(能够由管理员或用户配置)中使得对象重新生效。参照图9,在可能的实施例中,缓冲区管理器203管理缓冲池904。可用于数据的存储器被静态划分为固定大小的页面的阵列。每个页面具有对应的缓冲区结构,以封装与缓冲区有关的元数据。缓冲区结构还可以从阵列静态分配。每个缓冲区能够经由缓冲区缓存器和自由列表而链接。元数据中的一些元素是 身份。缓冲区的身份。数据缓冲区具有由皿1^卬扎、偏移量和长度)组成的ID。 属性缓冲区具有只包含URI的ID。 参考计数。缓冲区的活跃用户数。 使用计数。缓冲区已经使用的次数。这是缓冲区“流行度”的基本度量。 时间标记。缓冲区放在LRU列表上的时间(即参考计数为零)。缓冲区管理器203管理缓冲区缓存器。为所有缓冲区保持使用UOL作为关键字的哈希表(hash map),这些缓冲区具有身份并且能够与其他连接共享。可能的实施例支持用于缓冲器的非缓存模式,由此,其具有身份,但是不可共享。与相同的对象(URI)有关的数据缓冲区以根源于对应的属性缓冲区中的列表链接在一起。这允许关于整个对象的操作的快速应用(例如缓存器过期和对象清除)。自由列表也由缓冲区管理器203保持。所有具有零参考计数的缓冲区(包括那些带有身份的)在该列表上。这允许缓冲区所需的高效逐出。该列表可以由多个列表(由缓冲区的使用计数进行排序)组成。每个获取任务将某些专用数据分配到缓存器请求专用数据905中,缓存器请求专用数据905保持其缓冲区列表以用于参考计数。缓存器请求专用数据905还链接到基本的媒体请求。缓存器请求处理器902管理缓存器请求专用数据905并且处理获取任务请求。媒体请求处理器903为发送给媒体管理器204的每个媒体获取任务捕获输入/输出参数。媒体请求对象链接到媒体请求表格906中,使得对于相同或联合存储(co-stored) 的对象的多个请求能够被同步。参照图10a,缓冲区管理器203和媒体管理器204(其管理缓存体系)之间的接口具有能够实现高性能缓存系统的独特特性。对提供数据的设备的选择通过使用STAT任务实现,STAT任务类似于占线请求系统(bidding system)进行工作。缓存体系中的每一层, 例如固态设备(SSD)管理器205、磁盘管理器206和源管理器207能够依次响应占线请求, 用于为请求提供服务。占线请求包括“块体尺寸(blocksize)”,其指示缓冲区管理器203 分配缓冲区的必需的组。缓冲区管理器203接着将获取请求向下发送给赢得占线请求的特定的缓存提供者。请求和响应在逻辑上解耦。缓存提供者填充提供内容的缓冲区并且为每个缓冲区设定合适的身份。这使得新的缓冲区被插入RAM缓存器中。在完成任务时,缓冲
17区管理器203再次查找RAM缓存器并且能够找到其查找的缓冲区。该模型允许提供者在同一请求中提供附加数据,相同对象的随后的部分或者其他相关对象。其还允许对象的多个部分由不同的提供者提供。命名和位置是正交的。例如,带有名称a/b/c/one.flv的视频对象能够在缓存体系中的任意提供者中存在(部分地或整体地)。媒体管理器204媒体管理器204基于视频的相对热门程度,对视频进行升级和降级。视频的热门程度是对该视频的点击次数、点击频率和该频率的上升或下降趋势的函数。媒体管理器204具有η个不同的源,SSD 205、硬盘206、源服务器207或同级设备 208。其接收缓冲区并且以所请求的内容的一部分填充缓冲区。媒体管理器204将填充的缓冲区发送给缓冲区管理器203。如果内容不在本地存储器中,媒体管理器204从源服务器、同级设备或客户端检索内容。下面是可能的实施例中与每个源有关的速度体系1.存储器(RAM) IOGbps2.闪存4Gbps3.固态设备(SSD) 1. 6Gbps4.磁盘(SAS) :550Mbps5.磁盘(SATA)-400Mbps6.其他设备7. NFS和其他文件缓存器8.源管理器参照图10b,媒体管理器204首先将新视频放在最低的存储器体系中。在定时器期限上,媒体管理器204检查分析/策略管理器1002,以用于最热门和最冷门的视频。分析/ 策略管理器1002向媒体管理器204提供所访问的最热门视频和/或视频的一部分。最热门的视频或视频的一部分升级到体系中邻近的存储器缓存器中,而最冷门的视频降级到等级中邻近的最低级中。这样能够将视频放置在缓存体系的最低等级中,并且如果其相对于其他视频的热门程度提高,则能够上浮到体系中的顶部。媒体管理器204使得视频从各自的缓存器中被驱逐。其使用驱逐定时器。当定时器启动时,媒体管理器204搜索每个缓存提供者205、206、207、1006,检查缓存器是否充满到某个阈值。如果特定的缓存器充满,媒体管理器204调用提供者的驱逐功能。提供者接着执行用于驱逐的具体算法。同级管理器207同级管理器207能够被配置为在缓存未命中时从同级MFD获取某个内容。假定 MFD在本地存储器(例如一个或多个硬盘驱动器以及一个或多个SSD)中具有有限的存储空间,则剧情可以存在于客户具有的比单一 MFD能够存储更多的视频内容的地方。客户的视频内容能够在多个安装在客户位置的同级MFD之间分布,或者在同级MFD通过网络(例如内联网、因特网、LAN或WAN)可相互访问的情况下,在彼此通信的多个同级MFD之间分布。管理员能够告知每个同级MFD其同级设备的IP地址,因此,同级MFD能够与其同级设备通信。如果MFD在本地连接,则它们能够通过任意类型的发现机制,自身发现它们的同级设备。同级MFD能够在它们之间通信并且让每个同级MFD知道其缓存的URL。这意味着在每个同级MFD从源服务器或另一同级MFD加载了内容之后,其告知其同级MFD中的每一个关于其提供服务的URL。这能够经由发送给每个同级MFD或向所有同级MFD广播的一个消息或一系列消息实现。如果用于特定URL的请求发送给引起缓存未命中的同级MFDJU 该MFD中的同级管理器能够请求来自对该特定URL进行缓存的同级MFD的URL内容。源管理器208源服务器可以将内容推向源管理器208或者源管理器208可以从源服务器拉取内容。源服务器可以通过将内容预先分级到源管理器208而将内容推向源服务器208。源服务器能够使用FTP或HTTP协议进入源管理器208并且指示源管理器208缓存某些URL,因为内容提供商知道该内容是热门的。作为客户端请求的结果,源管理器208从源服务器拉取内容,所述结果是所有本地的可用缓存(以及代理服务功能)均为命中。拉取内容还能够因为策略或命令驱动的操作而发生,以便独立于客户端请求取回内容。代理服务功能独立于缓存摄取(cache ingestion)。对此有一些原因(a)代理服务可能必须提供不适于缓存的反常对准的字节范围;(b)系统可能需要执行处理功能,例如在摄取期间分块和译码(这在代理服务中很难实时地实现);(c)用于两个功能的不同策略。输入协议引擎209除了使用例如HTTP、FTP或NFS协议与源服务器进行通信,输入协议引擎209与输出协议引擎210以相同方式工作。优化的网络堆栈211优化的网络堆栈211使用TCP堆栈中的往返时间(round trip time) (RTT)估计客户端最后一英里的比特率变化。RTT时间告知优化的网络堆栈211是否存在彻底拥塞。 RTT提供对于网络中到达客户端的可用带宽的估计。优化的网络堆栈211还使用适于时间敏感性应用程序(例如视频)的算法执行误差处理和拥塞控制。MFD能够响应于探测到的比特率变化而改变比特率,无需客户端知道。有保证的流率在可能的实施例中,对于允许进入系统用于数据传送的每个流,MFD具有确保某一等级的服务的能力。这称为有保证的流率。MFD为每个会话计算有保证的流率并且为会话设置最大的带宽。用于会话的带宽使用不应当小于有保证的流率,并且如果存在可用的带宽,应当尝试达到最大带宽。MFD执行流控制,以确保现有的会话达到所需的速率并且不大于最大值。这在网络套接字级别(network socket level)中实现。套接字级别管理数据发送率。会话带宽队列和服务器定时器用于计算流控制。通过确保如果服务器没有足够的资源以允许连接则不允许新的会话,MFD执行接纳控制和连接管理。4种度量方式可以用于MFD,以保持有保证的流率(AFR)· Σ所有连接的AFR彡设备接口端口带宽 会话AFR彡客户端会话带宽· Σ所有连接的AFR彡(磁盘+缓冲区)读取速度 最低质量视频的比特率彡会话AFR彡最高质量视频的比特率其中
-会话单一TCP连接。- Σ所有连接的AFR 所有接受的会话的AFR之和。-会话AFR用于一个单一会话的单独的AFR。-客户端会话带宽客户端会话的最大带宽。通常客户端会话的最大带宽是指由于WAN环境所限的最大的TCP吞吐量。对于DSL下载,典型的带宽是1,500Kbit/秒。-视频的比特率每个视频具有类别。不同的类别具有不同的质量。高质量视频要求较高的比特率。不是每个视频都具有用于所有比特率的类别。典型的视频类别比特率可以从 200Kbit/ 秒到 1,OOOKbit/ 秒。为确保MFD不会过度使用服务器资源从而能够保持用于现有会话的AFR,MFD拒绝新会话或者降低用于现有会话的类别(如果可能),以便基于策略设定而适应新会话。通过在服务器上发送繁忙的HTTP答复或者简单地关闭连接而将会话拒绝。MFD不会在提供数据期间关闭会话。其简单地降低会话的类别。例如,如果整体设备的网络带宽为每个网络接口端口限制为Kibit/秒,则Σ所有连接的AFR应当小于该带宽。当所有接受的会话的AFR之和等于Kibit/秒时,MFD能够停止接受新的会话。在可能的实施例中,通过考虑由数据包的再次传输、ACK包、TCP/IP报头、 其他用途(例如ARP、脱机的源管理器208等)所使用的网络开销,带宽能够为所有的AFR 计算降低为0. 8Gbit/秒,以便考虑更加切实可行的带宽限制。AFR比特率可以在最低质量视频的比特率和最高质量视频的比特率之间。如果 AFR <最低质量视频的比特率,则在客户端将会发生屏幕抖动。如果AFR >最高质量视频的比特率,则浪费带宽资源。服务器端播放器201不会关闭连续会话的获取请求,但是允许通过返回故障错误代码而关闭新的会话。在可能的实施例中,如果客户端正在经由拨入调制解调器获取访问,则AFR受限于这种较慢的最后一英里连接。网络驱动模块基于RTT计算探测客户端连接ISP的速度。 示例的公式可以是客户端会话带宽速度=1460比特/RTT(以秒为单位)。如上所述,视频内容存储在磁盘或RAM中。一旦MFD确定了 AFR,其需要确保磁盘 +缓冲区能够达到该速度。磁盘速度(作为一种性能)不容易测量,不像CPU和网络性能。 其显著依赖工作负荷。对于测量磁盘是否处于或接近最高性能的更实用的方式是查看队列深度和/或平均等待时间。调度程序202的最终期限错过计数器是指示系统中正在发生什么的很好的指示器。例如,在某种情形下,网络主管(Web master)希望产生VIP列表。通过用户界面管理控制台,网络主管可以制定策略,使得VIP列表接收高质量视频,这产生较高的AFR以用于会话。在另一示例中,网络主管能够设置平均视频质量。网络主管能够使用用户界面管理控制台设定平均的AFR。在可能的实施例中,MFD不会希望将较高质量的视频发送给不能播放高质量视频的客户端。例如,PC/膝上型电脑能够播放高质量视频,但是iPhone/g-phone/Palm等只具有小屏幕,并因此不能播放高质量视频。完全没有必要向这类设备发送过高质量的视频。参照图11,示出了数据流,用于优化的网络堆栈211中网络管理器的AFR部分的可能的实施例,在HPE将任务安排给调度程序202并且调度程序202返回数据块之后向外发送数据。如果计算的数据大小不能在一个定时器间隔(例如每秒一次)中发出,则意味着在网络管理器中发生AFR差错。如果调度程序202不在最终期限错过时间返回任务,则意味着磁盘管理器206中的AFR差错。网络管理器计算任务的最终期限。其接着以计算的最终期限安排任务1101。网络管理器接着计算在给定AFR和定时器间隔(用于套接字的传输周期)的情况下能够通过连接发送的最大比特数。这引起能够在一个定时器间隔中通过连接发送的最大的数据量 1102。网络管理器接着通过套接字发送数据1103。如果发送未完成1104,例如没有用于待发送数据的足够空间或者定时器间隔已经过去,则网络管理器尝试再次通过连接发送数据1107、1103。如果存在用于待发送/待接收数据的足够空间1104(例如客户端上的缓冲区水平足够、TCP水平足够、窗口大小足够、更多的数据将要发送等等),则网络管理器查看是否有更多的数据将要发送1105。如果更多的数据可用于发送,则网络管理器将套接字放回到定时器队列中,以等待下一定时器间隔发送更多的数据1108并且计算能够经过连接而发送的下一最大比特数1102。否则,网络管理器由定时器间隔终止并且获得待发送的下一数据块 1106。过程继续,直到所有来自调度程序202的数据块的所有数据已经被发送。在可能的实施例中,MFD执行以下内容,以便保持AFR 1.网络端口上请求的连接。如果该网络端口的总连接>最大的允许连接,则拒绝该连接。2.每个连接只能最多享有计算的会话带宽。在该示例中=Kibps/该网络端口上的总连接。3.由于最大会话带宽配置而进行的修改。a.如果配置最大的配置会话带宽并且计算的会话带宽>最大的会话带宽,则将计算的会话带宽设定为最大的配置会话带宽。b.否则不作改变。4.计算会话AFR。a.将会话AFR设定为配置的AFR,作为基本建议的AFR。b.调用服务器端播放器201用于调节AFR。如果服务器端播放器201返回错误信息,则关闭会话。5.由于平衡的AFR计算而进行的修改。a.如果计算的会话带宽> 1. 2XAFR,则将计算的会话带宽设定为1. 2XAFR0b.否则不作改变。6.由于AFR而进行的修改。a.如果计算的会话带宽< AFR,则将计算的会话带宽设定为AFR。b.否则不作改变。7.无论何时将向客户端发送数据,在每个epollout事件中或任务完成时实行计算的会话带宽。网络和HTTP管理器向服务器端播放器201提供3个参数,用于计算服务器端播放器201的AFR值。这3个参数是 URI。
客户端会话带宽(AFR的最高值)。 网络带宽的总的可用AFR。其中-总的可用AFR可以由网络模块微调。-总的可用AFR兴总的网络带宽-Σ现有会话的AFR。-总的可用AFR= min (总的网络带宽-Σ现有会话的AFR,配置的最大AFR)。在服务器端播放器201的AFR计算中,返回的AFR值可以小于客户端会话带宽和总的可用AFR。服务器端播放器201能够在HPE结束HTTP分析后被调用。HPE提供所有的 HTTP信息(例如URI等)和标记,以显示这是新会话或者带有相同连接的连续会话。服务器端播放器201不会关闭连续会话的获取请求,但是应当允许关闭新的会话。服务器端播放器201将AFR设定为URI请求中指明的值。如果服务器端播放器201不能将AFR设定为请求的值,其向HTTP引擎返回将会关闭连接的错误代码。调度程序202最终期限的错过能够用于测量运行期间的磁盘吞吐量。HPE以微秒为单位计算最终期限(使用最终期限=func(总的HTTP字节/AFR)),并且在向调度程序 202提交任务时向调度程序202发送最终期限。如果磁盘操作过载,则调度程序202丢弃一些新任务。选择的丢弃的任务应当属于新会话产生的第一任务。HPE能够设定标记,以告知调度程序202任务是否属于新会话。当存在很多磁盘最终期限错过时,调度程序202向网络管理器发送反馈,以减少服务器结构中最大的允许的连接。这减少了总的会话数量。在恢复磁盘操作并且已经忽视最终期限错过之后,调度程序202尝试恢复到服务器结构中最大的允许的连接设定。提示轨迹(Hint Tracks)参照图12,在可能的实施例中,渐进下载(progressive download)的提示轨迹 (PDH) 1206向MFD描述如何使用HTTP上的渐进下载提供位于文件1201中的媒体数据。只有一个树枝目录文件(container file) 1201需要位于MFD中。在该树枝目录文件1201中, 用户可以存储具有变化的比特率、空间分辨率的流1204、1205,或者可伸缩流。如同MP4的树枝目录文件,树枝目录文件1201还能够包含元数据1202。PDH-提示轨迹1206是视频文件树枝目录(该示例中的moov) 1203中更高级的元逻辑框(meta box),其向MFD描述对其可用的所有选择以支持PDH。在可能的实施例中,根据来自客户端的请求以适应变化的带宽状况、可用的客户端CPU资源,或者通过MFD调查网络以考虑网络等待时间,MFD侧的逻辑能够作出智能决策,即关于应当如何提供以及提供哪种类型的比特率、帧率或分辨率,以便最好地满足网络状况和客户端的要求。在可能的实施例中,MFD能够使用提示轨迹,以决定提供的最佳的比特率、帧率或分辨率并且接着将媒体数据的周期的相关部分封装为MP4的自我包含的数据块,以通过 HTTP传送。位于此类树枝目录中的媒体数据自身不需要以任何方式再次格式化。在可能的实施例中,可以产生多个预先定义的PDH提示轨迹,其覆盖多数常见的使用状况,以减少MFD端的负荷。在可能的实施例中,能够在服务器中使用媒体数据的单一流,安排为以预先定义的帧率(例如,以30fps的帧率,以B1Iibps的比特率编码的H. 264流)提供服务。在传送期间,根据网络状况,MFD能够选择丢弃较高的临时增强层(用于该临时增强层的信息能够由MP4中的分层逻辑框(layering box)容易地获得)。因此,PDH数据块的用于这些较低帧率部分(例如15fps、7. 5fps)的比特率将小于4吐 8,因此提供一种机制,以快速适应带宽起伏,而尽可能地不影响用户的回放质量体验。在可能的实施例中,附加的提示跟踪(或者更高级的逻辑框)能够用于描述多种可用的选择以支持快进快退。此类提示跟踪(或逻辑框)能够向MFD提供关于快进或倒回的速度信息等)和关于相对的帧偏移量和回放率(这将在回放期间帮助客户端播放器)的准确信息。在可能的实施例中,对提示跟踪的使用还可以扩展为支持MFD端的播放列表。这些提示跟踪能够提供信息,这些信息是关于广告或视频片段需要在何处插入以及它们的准确持续时间。提示跟踪还能够提供控制机制信息,例如,客户端播放器是否能够略过或者快进广告或视频片段。提示跟踪还可以包含广告服务器接触的信息,如果需要,用于广告或视频片段的动态替换。MFD 策略管理员能够为MFD制定策略以便对其进行操作。例如,管理员可能希望MFD服务尽可能多的客户端或提供HD内容,并且以服务大量客户端为代价,保持HD内容的质量。来自调度程序202的反馈信息(关于任务迟到了多长时间、迟到的任务数或者任何其他有用的衡量标准),能够发送给服务器端播放器201和/或输出协议引擎210。服务器端播放器201能够使用该信息,以调节其服务的客户端的数量,或者甚至是调节其向某些客户端传送的视频的质量,以决定传送等待时间。可能的是,在某些带宽处运行的某些客户端是足够灵活的,以便动态减少它们的带宽。输出协议引擎210能够使用来自调度程序202的信息,以拒绝任何新的客户端连接,直到调度程序202传送输出协议引擎210的统计数据,该统计数据显示MFD已经有效地赶上所需的传送效率。限定使用哪种准则以用于作出这种确定的参数由管理员定义。此类参数可以包括执行操作,基于正在受到延迟传送影响的客户端数量或者存在的等待时间量,例如错过最终期限的任务数。管理员可以配置源服务器,以告知MFD其应当与哪些内容服务器通信,以便在MFD 经历缓存未命中时检索内容。源服务器能够指示源管理器207使用特定协议从特定的内容服务器获取某些内容。源服务器还能够定义MFD上的策略,以告知源管理器207哪些内容是可缓存的,而哪些内容必须从源服务器获取,例如很少请求的内容。MFD 扩展在厂家,MFD还可以是带宽受限的。MFD可以设置为不超出某个峰值带宽或开放的会话数。这允许MFD供应商出售某种级别的服务。如果客户要求更高的峰值带宽或更多的开放的会话,则MFD供应商能够对客户的MFD的峰值带宽或开放会话的最大数量进行远程设置,用于一次性费用或连续费用。MFD还可以自动超出最大带宽或最大数量的开放会话, 并且向MFD供应商告知超出的量。MFD供应商则可以向客户收取超出部分的费用。这允许客户临时处理大量的活动突发而不必购买附加的MFD或MFD更新。负载均衡器交互
通常存在与同级MFD通信的负载均衡器。负载均衡器能够被配置为向某个同级 MFD发送客户端请求(当该请求是用于具体的URL时)。同级MFD之一能够发送哪个URL 对于每个同级MFD均是可用的表格。可选择地,每个同级MFD能够告知负载均衡器其提供哪些URL。负载均衡器能够集合来自同级MFD的所有信息,并且产生其自身的表格或数据库入口,以将客户端URL请求指向正确的同级MFD。负载均衡器可以使用基于URL和/或其他参数的散列方案(hashing scheme),以确定MFD指向要求的URL。这允许URL内容在同级 MFD之间分布。监控和统计用户界面管理员或其他人员能够查看MFD存储的统计数据(由服务器端播放器201记录该数据)并且能够经由文本或图形表示看到MFD如何运行。媒体管理器204还记录缓存命中数和未命中数,以及什么内容是最流行的(热门内容)或最不流行的。媒体管理器204还能够记录源服务器(其已经从该源服务器请求内容)和这些请求进行的次数。用户界面允许管理员观察图形或文字表示的内容性能数据。用户界面能够展示用于指定时期的或实时记录的信息。图形用户界面允许MFD使用其能够收集的关于磁盘使用和内容访问的统计信息, 以显示图像图表,如实地表示以下任何内容 柱状数据,显示每个磁盘最近的数据检索次数。 磁盘访问计数器。 每个磁盘的视频数。 自由空间的量。 请求的视频数。·每个磁盘请求的视频数。 每个磁盘最近的吞吐量。 缓冲缓存器中的命中/未命中。 多种缓冲操作。 错误(来自媒体管理器统计数据、媒体请求等)。 存储的视频数。 每个缓存器的视频数。 产生的视频数。 删除的视频数。 媒体提供者的数量。 关于媒体提供者的元数据。 每个缓存级(存储器、SSDJIta )提供的带宽和原始源(HTTP、NFS等)。 每个缓存设备(每个SSD或磁盘单元)提供的带宽。缓存逻辑设计为,当工作负荷类别相对于内容发生改变时,加载设备间的级别。·每个接口端口提供的带宽和连接。 每个协议(HTTP、RTSP等)提供的带宽和连接。在可能的实施例中,用户可以配置与MFD的性能特征有关的参数。例如服务器端播放器和媒体管理器的部件记录性能统计数据,这些统计数据由图形用户界面使用,以向用户显示统计数据和图形。图13示出了可能的实施例中的用户界面屏幕,其中用户能够指明参数,例如AFR 1304或每个会话的最大比特率1305。用户还能够指明命名空间1301及其URI 1302,以及用于命名空间的HTTP源服务器的主机名称1303。参照图14,在可能的实施例中,图形用户界面屏幕1400可以显示从缓存器、源服务器传送的比特总数1401,以及随时间传送给客户端的比特总数1402的实时图像。图形用户界面1400允许用户看到MFD在其向客户端传送内容时的实际性能1403。用户能够在 MFD中定制策略以调节缓存存储器,例如,处理用户总是希望可用的某些热门内容。图形用户界面1400立即向用户显示其所作的改变已经出现在MFD上的效果。图15示出了图形用户界面的截屏1500,显示了 MFD的连接上的性能特征1501。3. 2媒体流导向器布局图4示出了使用MFD 401代替现有的视频服务器402的可能的实施例。现有的视频服务器实现方案通常是一组文件服务器403,对来自一个源服务器或一组源服务器404 的内容进行缓存。来自源服务器404的内容在很多视频服务器403之间进行镜像。用户经由客户端访问门户服务器405上的网页以搜索视频内容。用户经由网页上的链接从网页选择视频。将URL发送给DNS服务器,DNS服务器将URL解析为负载均衡器负责的IP地址。 将解析的IP地址传给客户端,客户端使用IP地址进行视频请求。一组边缘路由器407中的路由器将请求发送给分布式交换机406中的负载均衡器。负载均衡器接收请求并且将URL 请求发送给视频服务器集群402中的服务器。URL请求可以向视频服务器告知客户端期望请求的视频的比特率。视频服务器是文件服务器,除了其必须向客户端传送某个比特率的视频以外,其不知道其传送的文件的特性。通常,名称和内容对于视频服务器是不透明的。 每个比特率的视频通常是命名的文件。视频服务器使得视频文件流向客户端并且尝试将视频传送给客户端,从而客户端的视频缓冲区不会变空。客户端必须对接收的视频进行缓冲,以便覆盖来自视频服务器的视频流中的延迟。客户端的缓冲区旨在为用户提供连续的观看体验。假定视频服务器向很多客户端提供大量视频,服务器在带宽之外运行所产生的或者客户端的网络延迟所产生的传送延迟是经常性的,并且客户端缓冲区变空。因此,用户看到视频流停止播放,直到缓冲区开始再次填充,或者对于小的视频文件,直到整个视频已经在视频开始播放之前加载到缓冲区中。在可能的实施例中,一个MFD具有达到10(ibpS以上吞吐量的能力,使得单一 MFD 代替10个或更多的视频服务器。两个MFD 401能够代替一组20个视频服务器。MFD 401 与源服务器402通信,以便在MFD接收用于URL内容(MFD没有存储的内容)的请求或者在 MFD接受来自源服务器的新视频内容时,获取视频内容。MFD是视频服务器的直接替换,而门户服务器405、边缘路由器407和分布式交换机406的基础结构仍然是相同的。图5示出了 MFD在边缘和/或起始位置的布局。在该示例中,虚线是用于传统实现方式的数据路径。MFD可以安装在内容拥有者的位置501、⑶N 502、506、内容聚合器的位置504或者ISP处。MFD可以安装在任意组合的位置处,从而向客户端508更快更可靠地传送内容。例如,当两个MFD安装在ISP 507处,这两个MFD在ISP网络中的某处进行部署。 这可以是在集群的同一数据中心中,或者在同一 ISP接入网的不同数据中心中。MFD能够彼此通信以便更加高效地传送内容,因为如果MFD能够从同一网络中检索内容,则会比从不同的和/或多个不同的网络,或者从源位置获取内容更加高效。如果大的内容聚合器504部署全MFD(all-MFD)的专用传送网络,则内容聚合器更加有效,因为MFD能够使用专用协议,以便更加有效地进行缓存未命中处理、预先分级、数据收集等。当获得全MFD的执行方案时,由于MFD的经由最有效路由检索内容的能力,效率将会显著增加。注意,术语“视频内容”已经用于通篇的实施例描述。术语“视频内容”可以在通篇描述的实施例中由任何媒体类型代替,因为MFD适于传送任意类型的内容文件,例如媒体(音频、图片等)、游戏、软件、HTML、脚本等。4. 0执行机制——硬件概述图6是示出了可以在其上实现本发明的实施例的计算机系统600的框图。计算机系统600包括总线602或用于传递信息的其他通信机构,以及与总线602连接的用于处理信息的处理器604。计算机系统600还包括主存储器606,例如随机存取存储器(RAM)或其他动态存储设备,主存储器606与总线602连接,用于存储信息和将由处理器604执行的指令。主存储器606还可以用于存储在将由处理器604执行的指令执行过程中的临时变量或其他中间信息。计算机系统600进一步包括与总线602连接的用于为处理器604存储静态信息和指令的只读存储器(ROM) 608或其他静态存储设备。提供存储设备610(例如磁盘或光盘)并且存储设备610与总线602连接,用于存储信息和指令。计算机系统600可以经由总线602与显示器612(例如阴极射线管(CRT))连接, 用于向计算机用户显示信息。包括字母数字键和其他键的输入设备614与总线602连接, 用于与处理器604传递信息和命令选择。另一类型的用户输入设备是光标控制器616,例如鼠标、跟踪球或光标方向键,用于向处理器604传送方向信息和命令选择并且用于控制光标在显示器612上的移动。该输入设备通常在两个轴,第一轴(例如χ)和第二轴(例如 y)上具有两个自由度,这允许设备在平面内指定位置。本发明涉及计算机系统600的使用,用于执行在此描述的技术。根据本发明的一个实施例,计算机系统600响应于处理器604执行包含在主存储器606中的一个或多个指令的一个或多个序列,执行这些技术。这样的指令可以从另一计算机可读介质(例如存储设备610)读入主存储器606。包含在主存储器606中的指令的序列的执行使得处理器604 执行在此描述的处理步骤。在可选择的实施例中,硬连线电路可以用于代替软件指令或者与软件指令一起使用,以实现本发明。由此,本发明的实施例不限于硬件电路和软件的任意特定的结合。在此使用的术语“计算机可读介质”指代参与提供数据的任意介质,这些数据使得机器以特定方式操作。在使用计算机系统600实施的实施例中,包括多种计算机可读介质, 例如向处理器604提供指令用于执行。这样的介质可以采用很多形式,包括但不限于存储介质和传输介质。存储介质包括非易失性介质和易失性介质。非易失性介质包括,例如光盘或磁盘,例如存储设备610。易失性介质包括动态存储器,例如主存储器606。传输介质包括同轴电缆、铜线和光纤,包括包含总线602的线。传输介质还可以采取声波或光波形式, 例如那些在声波和红外数据通信中产生的声波或光波。所有这些介质必须是有形的,以使介质承载的指令能够被将指令读入机器的物理机制探测。计算机可读介质的常见形式包括,例如软盘(floppy disk)、可折叠磁盘 (flexible disk)、硬盘、磁带或任意其他磁介质、⑶-ROM、任意其他光学介质、穿孔卡片、纸带、任意其他带有孔的形式的物理介质、RAM、PROM、EPR0M、闪存EPROM或任意其他存储芯片或卡带、或者计算机可以读取的任意其他介质。计算机可读介质的多种形式可以用于将一个或多个指令中的一个或多个序列传送到处理器604用于执行。例如,指令最初可以装载在远程计算机的磁盘上。远程计算机可以将指令加载到其动态存储器中,并且使用调制解调器通过电话线发送指令。计算机系统600的本地调制解调器可以接收电话线上的数据,并且使用红外发射器将数据转换为红外信号。红外探测器可以接收红外信号中承载的数据,并且适当的电路可以将数据放置在总线602上。总线602将数据传送到主存储器606,处理器604从主存储器606重新获取指令并且执行指令。在处理器604执行之前或之后,主存储器606接收的指令可以可选地存储在存储设备610上。计算机系统600还包括与总线602连接的通信接口 618。通信接口 618提供与网络链接620连接的双向数据通信,网络链接620与本地网络622连接。例如,通信接口 618 可以是综合业务数字网(ISDN)卡或调制解调器,以向对应类型的电话线提供数据通信连接。作为另一示例,通信接口 618可以是局域网(LAN)卡,以向兼容的LAN提供数据通信连接。也可以实施无线链接。在任意这样的实施中,通信接口 618发送并且接收电、电磁或光信号,这些信号承载代表多种信息类型的数字数据流。网络链接620通常通过一个或多个网络向其他数据设备提供数据通信。例如,网络链接620可以通过本地网络622,向主机6 或由因特网服务提供商(ISP)6^操作的数据设备提供连接。ISP 6 接着通过全球范围的包交换数据通信网(现在通常称为“因特网” 628)提供数据通信服务。本地网络622和因特网拟8均使用承载数字数据流的电、电磁或光信号。计算机系统600可以通过网络、网络链接620和通信接口 618发送消息并且接收数据(包括程序代码)。在因特网的例子中,服务器630可以通过因特网628、ISP 626、本地网络622和通信接口 618传输用于应用程序的请求代码。接收的代码可以在其被接收时由处理器604执行,并且/或者存储在存储设备610 或其他非易失性存储器中用于以后执行。5. 0 示仿Ij在实施例中,装置包括媒体传送请求接收器,所述媒体传送请求接收器从客户端系统接收对于媒体内容的请求;流率子系统,所述流率子系统计算对于每个出站的媒体流的最大带宽和目标流率;传送子系统,对于每个出站的媒体流,所述传送子系统将所请求的媒体内容的至少一部分传送给客户端系统;媒体传送调度子系统,所述媒体传送调度子系统确定所述传送子系统何时传送所请求的媒体内容的至少一部分,所述媒体调度子系统动态调节对于每个出站的媒体流的流率,以便满足对于每个出站的媒体流的目标流率,如果接受了附加的媒体内容请求,则当所述媒体传送调度子系统探测到没有获得对于媒体流的目标流率时,所述媒体传送调度子系统指示媒体传送请求子系统拒绝到来的媒体请求。在实施例中,装置进一步包括,其中所述媒体传送调度子系统指示所述传送子系统传送较低质量的媒体内容的至少一部分,以便满足对于特定媒体流的目标流率。在实施例中,装置进一步包括,其中所述媒体传送调度子系统指示所述传送子系统传送较高质量的媒体内容的至少一部分,以便满足对于特定媒体流的目标流率。
在实施例中,装置进一步包括,其中当已经错过对于媒体流的下一部分媒体内容的传送的最终期限时,所述媒体传送调度子系统探测到尚未满足对于媒体流的目标流率。在实施例中,装置进一步包括多个存储设备,所述多个存储设备的至少一部分具有不同的性能特征;媒体缓存子系统,至少基于对于与媒体内容相关的媒体流的目标流率和特定的存储设备的性能特征,所述媒体缓存子系统将媒体内容的至少一部分存储在特定的存储设备中,所述媒体缓存子系统指示所述传送子系统从所述特定的存储设备传送媒体内容的存储部分。在实施例中,装置进一步包括,其中所述流率子系统至少使用与媒体流相关的客户端系统的测量的带宽速度,确定对于媒体流的目标流率。在实施例中,装置进一步包括,其中所述流率子系统至少使用与媒体流相关的客户端系统的带宽速度的动态测量,动态确定对于媒体流的目标流率。在实施例中,方法包括以下步骤,或者载有指令的一个或多个序列的计算机可读存储介质,其中由一个或多个处理器对指令的一个或多个序列进行执行,使得所述一个或多个处理器执行以下步骤从客户端系统接收对于媒体内容的请求;计算对于每个出站的媒体流的最大带宽和目标流率;对于每个出站的媒体流,将所请求的媒体内容的至少一部分传送给客户端系统;确定传送步骤何时传送所请求的媒体内容的至少一部分;动态调节对于每个出站的媒体流的流率,以便满足对于每个出站的媒体流的目标流率;如果接受了附加的媒体内容请求,则当探测到没有获得对于媒体流的目标流率时,拒绝到来的媒体请求。在实施例中,方法或计算机可读存储介质进一步包括,其中传送步骤传送较低质量的媒体内容的至少一部分,以便满足对于特定媒体流的目标流率。在实施例中,方法或计算机可读存储介质进一步包括,其中传送步骤传送较高质量的媒体内容的至少一部分,以便满足对于特定媒体流的目标流率。在实施例中,方法或计算机可读存储介质进一步包括,当已经错过对于媒体流的下一部分媒体内容的传送的最终期限时,探测到尚未满足对于媒体流的目标流率。在实施例中,方法或计算机可读存储介质进一步包括,至少基于对于与媒体内容相关的媒体流的目标流率和特定的存储设备的性能特征,将媒体内容的至少一部分存储在多个存储设备中的特定的存储设备中,所述多个存储设备的至少一部分具有不同的性能特征;其中传送步骤从所述特定的存储设备传送媒体内容的存储部分。在实施例中,方法或计算机可读存储介质进一步包括,至少使用与媒体流相关的客户端系统的测量的带宽速度,确定对于媒体流的目标流率。在实施例中,方法或计算机可读存储介质进一步包括,至少使用与媒体流相关的客户端系统的带宽速度的动态测量,动态确定对于媒体流的目标流率。在实施例中,装置包括多个存储设备,所述多个存储设备的至少一部分具有不同的性能特征;媒体缓存子系统,至少基于特定的存储设备的性能特征,所述媒体缓存子系统将媒体内容的至少一部分存储在特定的存储设备中,基于所述多个存储设备中的每个存储设备的带宽,所述媒体缓存子系统以划分等级的方式将所述多个存储设备排序;存储优化子系统,通过基于存储设备的使用测量而动态地将存储在每个存储设备上的媒体内容部分进行重新定位,所述存储优化子系统对来自所述多个存储设备的每个存储设备的带宽进行优化。在实施例中,装置进一步包括,其中附加地基于对于与媒体内容相关的媒体流的目标流率,所述媒体缓存子系统将媒体内容的至少一部分存储在特定的存储设备中。在实施例中,装置进一步包括,其中基于媒体内容的一部分的流行度提高,所述存储优化子系统将媒体内容的该部分从第一存储设备重新定位到第二存储设备,所述第二存储设备具有比所述第一存储设备更好的性能特征。在实施例中,装置进一步包括,其中基于媒体内容的一部分的流行度降低,所述存储优化子系统将媒体内容的该部分从第一存储设备重新定位到第二存储设备,所述第二存储设备具有比所述第一存储设备更差的性能特征。在实施例中,装置进一步包括,其中当媒体内容的多个部分适合所述特定的存储设备上特定大小的存储块时,所述媒体缓存子系统存储媒体内容的多个部分,所述媒体内容的多个部分包括特定的存储设备中的媒体内容的至少一部分。在实施例中,方法包括以下步骤,或者载有指令的一个或多个序列的计算机可读存储介质,其中由一个或多个处理器对指令的一个或多个序列进行执行,使得所述一个或多个处理器执行以下步骤至少基于特定的存储设备的性能特征,将媒体内容的至少一部分存储在多个存储设备中的特定的存储设备中,所述多个存储设备的至少一部分具有不同的性能特征;基于所述多个存储设备中的每个存储设备的带宽,以划分等级的方式将所述多个存储设备排序;通过基于存储设备的使用测量而动态地将存储在每个存储设备上的媒体内容部分进行重新定位,对来自所述多个存储设备的每个存储设备的带宽进行优化。在实施例中,方法或计算机可读存储介质进一步包括,其中附加地基于对于与媒体内容相关的媒体流的目标流率,存储步骤将媒体内容的至少一部分存储在特定的存储设备中。在实施例中,方法或计算机可读存储介质进一步包括,基于媒体内容的一部分的流行度提高,将媒体内容的该部分从第一存储设备重新定位到第二存储设备,所述第二存储设备具有比所述第一存储设备更好的性能特征。在实施例中,方法或计算机可读存储介质进一步包括,基于媒体内容的一部分的流行度降低,将媒体内容的该部分从第一存储设备重新定位到第二存储设备,所述第二存储设备具有比所述第一存储设备更差的性能特征。在实施例中,方法或计算机可读存储介质进一步包括,当媒体内容的多个部分适合所述特定的存储设备上特定大小的存储块时,存储媒体内容的多个部分,所述媒体内容的多个部分包括特定的存储设备中的媒体内容的至少一部分。6. 0扩展和选择在前述说明书中,已经参照多个具体细节(这些具体细节可以随着实现方式而改变)描述了本发明的实施例。由此,说明书和附图被视为示例性的而不起限制作用。
权利要求
1.一种用于经过网络同时向多个客户端系统分配媒体的装置,包括媒体传送请求接收器,所述媒体传送请求接收器从客户端系统接收对于媒体内容的请求;流率子系统,所述流率子系统计算对于每个出站的媒体流的最大带宽和目标流率; 传送子系统,对于每个出站的媒体流,所述传送子系统将所请求的媒体内容的至少一部分传送给客户端系统;媒体传送调度子系统,所述媒体传送调度子系统确定所述传送子系统何时传送所请求的媒体内容的至少一部分,所述媒体调度子系统动态调节对于每个出站的媒体流的流率, 以便满足对于每个出站的媒体流的目标流率,如果接受了附加的媒体内容请求,则当所述媒体传送调度子系统探测到没有获得对于媒体流的目标流率时,所述媒体传送调度子系统指示媒体传送请求子系统拒绝到来的媒体请求。
2.根据权利要求1所述的装置,其中所述媒体传送调度子系统指示所述传送子系统传送较低质量的媒体内容的至少一部分,以便满足对于特定媒体流的目标流率。
3.根据权利要求1所述的装置,其中所述媒体传送调度子系统指示所述传送子系统传送较高质量的媒体内容的至少一部分,以便满足对于特定媒体流的目标流率。
4.根据权利要求1所述的装置,其中当已经错过对于媒体流的下一部分媒体内容的传送的最终期限时,所述媒体传送调度子系统探测到尚未满足对于媒体流的目标流率。
5.根据权利要求1所述的装置,进一步包括多个存储设备,所述多个存储设备的至少一部分具有不同的性能特征; 媒体缓存子系统,至少基于对于与媒体内容相关的媒体流的目标流率和特定的存储设备的性能特征,所述媒体缓存子系统将媒体内容的至少一部分存储在特定的存储设备中, 所述媒体缓存子系统指示所述传送子系统从所述特定的存储设备传送媒体内容的存储部分。
6.根据权利要求1所述的装置,其中所述流率子系统至少使用与媒体流相关的客户端系统的测量的带宽速度,确定对于媒体流的目标流率。
7.根据权利要求1所述的装置,其中所述流率子系统至少使用与媒体流相关的客户端系统的带宽速度的动态测量,动态确定对于媒体流的目标流率。
8.一种用于经过网络同时向多个客户端系统分配媒体的方法,包括 从客户端系统接收对于媒体内容的请求;计算对于每个出站的媒体流的最大带宽和目标流率;对于每个出站的媒体流,将所请求的媒体内容的至少一部分传送给客户端系统; 确定传送步骤何时传送所请求的媒体内容的至少一部分;动态调节对于每个出站的媒体流的流率,以便满足对于每个出站的媒体流的目标流率;如果接受了附加的媒体内容请求,则当探测到没有获得对于媒体流的目标流率时,拒绝到来的媒体请求。
9.根据权利要求8所述的方法,其中传送步骤传送较低质量的媒体内容的至少一部分,以便满足对于特定媒体流的目标流率。
10.根据权利要求8所述的方法,其中传送步骤传送较高质量的媒体内容的至少一部分,以便满足对于特定媒体流的目标流率。
11.根据权利要求8所述的方法,进一步包括当已经错过对于媒体流的下一部分媒体内容的传送的最终期限时,探测到尚未满足对于媒体流的目标流率。
12.根据权利要求8所述的方法,进一步包括至少基于对于与媒体内容相关的媒体流的目标流率和特定的存储设备的性能特征,将媒体内容的至少一部分存储在多个存储设备中的特定的存储设备中,所述多个存储设备的至少一部分具有不同的性能特征;其中传送步骤从所述特定的存储设备传送媒体内容的存储部分。
13.根据权利要求8所述的方法,进一步包括至少使用与媒体流相关的客户端系统的测量的带宽速度,确定对于媒体流的目标流率。
14.根据权利要求8所述的方法,进一步包括至少使用与媒体流相关的客户端系统的带宽速度的动态测量,动态确定对于媒体流的目标流率。
15.一种载有指令的一个或多个序列、用于经过网络同时向多个客户端系统分配媒体的计算机可读存储介质,其中由一个或多个处理器对指令的一个或多个序列进行执行,使得所述一个或多个处理器执行以下步骤从客户端系统接收对于媒体内容的请求; 计算对于每个出站的媒体流的最大带宽和目标流率;对于每个出站的媒体流,将所请求的媒体内容的至少一部分传送给客户端系统; 确定传送步骤何时传送所请求的媒体内容的至少一部分;动态调节对于每个出站的媒体流的流率,以便满足对于每个出站的媒体流的目标流率;如果接受了附加的媒体内容请求,则当探测到没有获得对于媒体流的目标流率时,拒绝到来的媒体请求。
16.根据权利要求15所述的计算机可读存储介质,其中传送步骤传送较低质量的媒体内容的至少一部分,以便满足对于特定媒体流的目标流率。
17.根据权利要求15所述的计算机可读存储介质,其中传送步骤传送较高质量的媒体内容的至少一部分,以便满足对于特定媒体流的目标流率。
18.根据权利要求15所述的计算机可读存储介质,进一步包括当已经错过对于媒体流的下一部分媒体内容的传送的最终期限时,探测到尚未满足对于媒体流的目标流率。
19.根据权利要求15所述的计算机可读存储介质,进一步包括至少基于对于与媒体内容相关的媒体流的目标流率和特定的存储设备的性能特征,将媒体内容的至少一部分存储在多个存储设备中的特定的存储设备中,所述多个存储设备的至少一部分具有不同的性能特征;其中传送步骤从所述特定的存储设备传送媒体内容的存储部分。
20.根据权利要求15所述的计算机可读存储介质,进一步包括至少使用与媒体流相关的客户端系统的测量的带宽速度,确定对于媒体流的目标流率。
21.根据权利要求15所述的计算机可读存储介质,进一步包括至少使用与媒体流相关的客户端系统的带宽速度的动态测量,动态确定对于媒体流的目标流率。
22.一种用于经过网络同时向多个客户端系统分配媒体的装置,包括多个存储设备,所述多个存储设备的至少一部分具有不同的性能特征;媒体缓存子系统,至少基于特定的存储设备的性能特征,所述媒体缓存子系统将媒体内容的至少一部分存储在特定的存储设备中,基于所述多个存储设备中的每个存储设备的带宽,所述媒体缓存子系统以划分等级的方式将所述多个存储设备排序;存储优化子系统,通过基于存储设备的使用测量而动态地将存储在每个存储设备上的媒体内容部分进行重新定位,所述存储优化子系统对来自所述多个存储设备的每个存储设备的带宽进行优化。
23.根据权利要求22所述的装置,其中附加地基于对于与媒体内容相关的媒体流的目标流率,所述媒体缓存子系统将媒体内容的至少一部分存储在特定的存储设备中。
24.根据权利要求22所述的装置,其中基于媒体内容的一部分的流行度提高,所述存储优化子系统将媒体内容的该部分从第一存储设备重新定位到第二存储设备,所述第二存储设备具有比所述第一存储设备更好的性能特征。
25.根据权利要求22所述的装置,其中基于媒体内容的一部分的流行度降低,所述存储优化子系统将媒体内容的该部分从第一存储设备重新定位到第二存储设备,所述第二存储设备具有比所述第一存储设备更差的性能特征。
26.根据权利要求22所述的装置,其中当媒体内容的多个部分适合所述特定的存储设备上特定大小的存储块时,所述媒体缓存子系统存储媒体内容的多个部分,所述媒体内容的多个部分包括特定的存储设备中的媒体内容的至少一部分。
27.一种用于经过网络同时向多个客户端系统分配媒体的方法,包括至少基于特定的存储设备的性能特征,将媒体内容的至少一部分存储在多个存储设备中的特定的存储设备中,所述多个存储设备的至少一部分具有不同的性能特征;基于所述多个存储设备中的每个存储设备的带宽,以划分等级的方式将所述多个存储设备排序;通过基于存储设备的使用测量而动态地将存储在每个存储设备上的媒体内容部分进行重新定位,对来自所述多个存储设备的每个存储设备的带宽进行优化。
28.根据权利要求27所述的方法,其中附加地基于对于与媒体内容相关的媒体流的目标流率,存储步骤将媒体内容的至少一部分存储在特定的存储设备中。
29.根据权利要求27所述的方法,进一步包括基于媒体内容的一部分的流行度提高,将媒体内容的该部分从第一存储设备重新定位到第二存储设备,所述第二存储设备具有比所述第一存储设备更好的性能特征。
30.根据权利要求27所述的方法,进一步包括基于媒体内容的一部分的流行度降低,将媒体内容的该部分从第一存储设备重新定位到第二存储设备,所述第二存储设备具有比所述第一存储设备更差的性能特征。
31.根据权利要求27所述的方法,进一步包括当媒体内容的多个部分适合所述特定的存储设备上特定大小的存储块时,存储媒体内容的多个部分,所述媒体内容的多个部分包括特定的存储设备中的媒体内容的至少一部分。
32.—种载有指令的一个或多个序列、用于经过网络同时向多个客户端系统分配媒体的计算机可读存储介质,其中由一个或多个处理器对指令的一个或多个序列进行执行,使得所述一个或多个处理器执行以下步骤至少基于特定的存储设备的性能特征,将媒体内容的至少一部分存储在多个存储设备中的特定的存储设备中,所述多个存储设备的至少一部分具有不同的性能特征;基于所述多个存储设备中的每个存储设备的带宽,以划分等级的方式将所述多个存储设备排序;通过基于存储设备的使用测量而动态地将存储在每个存储设备上的媒体内容部分进行重新定位,对来自所述多个存储设备的每个存储设备的带宽进行优化。
33.根据权利要求32所述的计算机可读存储介质,其中附加地基于对于与媒体内容相关的媒体流的目标流率,存储步骤将媒体内容的至少一部分存储在特定的存储设备中。
34.根据权利要求32所述的方法,进一步包括基于媒体内容的一部分的流行度提高,将媒体内容的该部分从第一存储设备重新定位到第二存储设备,所述第二存储设备具有比所述第一存储设备更好的性能特征。
35.根据权利要求32所述的计算机可读存储介质,进一步包括基于媒体内容的一部分的流行度降低,将媒体内容的该部分从第一存储设备重新定位到第二存储设备,所述第二存储设备具有比所述第一存储设备更差的性能特征。
36.根据权利要求32所述的计算机可读存储介质,进一步包括当媒体内容的多个部分适合所述特定的存储设备上特定大小的存储块时,存储媒体内容的多个部分,所述媒体内容的多个部分包括特定的存储设备中的媒体内容的至少一部分。
全文摘要
本发明描述了将媒体内容存储在多个存储设备中的方法和装置,至少一部分存储设备具有不同的性能特征。系统能够将媒体传送给大量客户端,而为每个客户端保持高水平的观看体验,这是通过使用客户端最后一英里的比特率变化,自动调整正在传送给客户端的媒体的比特率而实现的。该系统向客户端提供没有缓冲停顿的流畅的视频观看。客户端不需要与系统通信的定制的视频内容播放器。
文档编号H04L12/26GK102282804SQ200980154744
公开日2011年12月14日 申请日期2009年11月24日 优先权日2008年11月24日
发明者库马尔·纳拉亚南, 普拉巴卡·孙达拉坚, 穆罕默德·祖贝尔·维沙阮, 维克拉姆·文卡塔拉格哈凡, 贾斯珀·科利, 迈克尔·西元, 马克思·何 申请人:瞻博网络公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1