使用缓存的高效媒体传送的系统和方法

文档序号:7914868阅读:194来源:国知局
专利名称:使用缓存的高效媒体传送的系统和方法
技术领域
本发明涉及媒体文件的传送,更具地说,本发明涉及使用缓存的高效媒体文件传送的系统和方法,其中包括比较电子文件。
背景技术
包括所谓用户原创内容(UGC)的媒体文件可以在众多类型的终端中创建,这些终端包括移动电话等用户设备。所述媒体文件还能驻留在网络服务器上,并且可将UGC上载到此类服务器。可以在因特网上的WWW. youtube, com中找到存储UGC的网络服务器的一个示例。可从使用诸如移动电话或个人计算机之类的最终用户设备从世界上几乎任何地方访问此内容。访问包含此类内容的流行网站可能产生大量网络和服务器流量。因此,需要开发高效地传输或降低服务器流量的方法和系统。

发明内容
本发明的目标是提供用于使用缓存的远程媒体文件高效传输的系统和方法。本发明的另一目标是提供系统和方法,其用于比较电子文件,包括判定电子文件的存在。根据本发明的一方面,提供了一种缓存服务模块,判定缓存中媒体文件的存在,所述媒体文件是远程媒体源中存储的远程媒体文件的副本,并且所述缓存服务模块包括文件分析模块,包括上面存储由处理器执行以实现以下步骤的计算机可读指令的计算机可读存储介质(i)从远程媒体源获取远程媒体文件的文件大小,以及相对于所述远程媒体文件的开头的各个偏移处的M (M>=2)个字节范围,每个字节范围短于所述远程媒体文件的文件大小;(ii)将M个范围内的字节串接成一个字节串;(iii)使用所述字节串产生所述媒体文件的签名;以及(iv)判定缓存中所述媒体文件的存在,包括使用所述媒体文件的签名询问缓存。所述缓存服务模块进一步包括配置表,包括上面存储计算机可读指令的计算机可读存储介质,用于存储M的值,以及分别定义要获取的用于每个范围的字节数的预定参数。所述配置表进一步包括用于计算作为所述远程媒体文件的文件大小的函数的各个偏移的预定参数。在上述缓存服务模块中,优选地满足以下一个或多个条件字节范围不重叠;所有字节范围的总和小于所述远程媒体文件的文件大小;所有字节范围的总和显著小于所述远程媒体文件的文件大小;或者所述偏移之一等于零。在本发明的一个实施例中,所述配置表进一步包括用于所述媒体文件的预定阈值;并且所述缓存服务模块进一步包括用于记录媒体客户端设备对所述媒体文件的媒体请求的请求日志模块;用于将所述请求日志中存储的对所述媒体文件的请求数与所述预定阈值进行比较的比较器;以及用于在缓存中没有所述媒体文件和超过所述预定阈值的情况下将所述媒体文件发送到缓存的缓存接口模块。有利地,用于产生签名的所述计算机可读指令包括用于将所述字节串散列为媒体密钥的计算机可读指令,所述媒体密钥是所述媒体文件的签名。根据本发明的另一方面,提供了一种用于缓存媒体文件的系统,包括(a)缓存,其包括计算机可读存储介质,用于存储媒体文件,所述媒体文件是远程媒体源中存储的远程媒体文件的副本; (b)宽带优化服务器,包括处理器和上面存储计算机可读指令的计算机可读存储介质,用于从媒体客户端设备接收对所述媒体文件的请求;以及(C)缓存服务器,其中包括处理器和上面存储由所述处理器执行的计算机可读指令的计算机可读存储介质,所述缓存服务器具有缓存服务器模块,判定缓存中媒体文件的存在,所述缓存服务模块包括用于执行以下步骤的文件分析模块(i)从远程媒体源获取远程媒体文件的文件大小,以及相对于所述远程媒体文件的开头的各个偏移处的M (M>=2)个字节范围,每个字节范围短于所述远程媒体文件的文件大小;(ii)将M个范围内的字节串接成一个字节串;(iii)使用所述字节串产生所述媒体文件的签名;(iv)判定缓存中所述媒体文件的存在,包括使用所述媒体文件的签名询问缓存;以及(V)如果缓存中没有所述媒体文件,则从所述远程媒体源获取完整的媒体文件并将所述媒体文件和签名一起存储在缓存中。所述系统进一步包括用于与所述远程媒体源通信的网络接口模块。所述系统进一步包括用于从缓存检索所述媒体文件并通过带宽优化服务器将所述媒体文件转发到所述媒体客户端设备的缓存接口模块。所述带宽优化服务器包括用于产生所述媒体文件的改编(adapted)版本以使所述改编版本与所述媒体客户端设备的媒体结构匹配的媒体转码器(transcoder) (TRX)模块。有利地,来自所述媒体客户端设备的请求包括有关所述媒体客户端设备的媒体结构的信息。在上述系统中,所述缓存服务模块进一步包括配置表,包括上面存储计算机可读指令的计算机可读存储介质,用于存储M的值,以及分别定义要获取的用于每个范围的字节数的预定参数。所述配置表进一步包括用于根据所述远程媒体文件的文件大小计算各个偏移的预定参数。在上述本发明的实施例的系统中,优选地满足以下至少一项字节范围不重叠;所有字节范围的总和小于所述远程媒体文件的文件大小;所有字节范围的总和显著小于所述远程媒体文件的文件大小;或者所述偏移之一等于零。在上述系统中,所述配置表进一步包括用于所述媒体文件的预定阈值;并且所述缓存服务模块进一步包括用于记录所述媒体客户端设备对所述媒体文件的媒体请求的请求日志模块;用于将所述请求日志中存储的对所述媒体文件的请求数与所述预定阈值进行比较的比较器;以及用于在缓存中没有所述媒体文件和超过所述预定阈值的情况下将所述媒体文件发送到缓存的缓存接口模块。在上述系统中,所述文件分析模块被配置为通过将所述字节串散列为媒体密钥来判定所述媒体文件的签名,所述媒体密钥是所述媒体文件的签名。根据本发明的又一方面,提供了一种用于缓存媒体文件的方法,所述媒体文件是远程媒体源中存储的远程媒体文件的副本,所述方法包括(a)从远程媒体源获取远程媒体文件的文件大小,以及相对于所述远程媒体文件的开头的各个偏移处的M (M>=2)个字节范围,每个字节范围短于所述远程媒体文件的文件 大小;(b)将M个范围内的字节串接成一个字节串;(c)使用所述字节串产生所述媒体文件的签名;以及(d)判定缓存中所述媒体文件的存在,包括使用所述媒体文件的签名询问缓存;以及(e)如果缓存中没有所述媒体文件,则从所述远程媒体源获取完整的媒体文件并将所述媒体文件和签名一起存储在缓存中。所述方法进一步包括产生所述媒体文件的改编版本以使所述改编版本与请求所述媒体文件的所述媒体客户端设备的媒体结构匹配。上述方法进一步包括从缓存检索所述媒体文件并将所述媒体文件转发到所述媒体客户端设备。在上述方法中,所述获取步骤包括从所述配置表中获取M的值,以及分别定义要从所述配置表获取的用于每个范围的字节数的预定参数。所述获取步骤进一步包括从所述配置表获取用于根据所述远程媒体文件的文件大小计算各个偏移的预定参数。在上述本发明的实施例的方法中,优选地满足以下至少一项字节范围不重叠;所有字节范围的总和小于所述远程媒体文件的文件大小;所有字节范围的总和显著小于所述远程媒体文件的文件大小;或者所述偏移之一等于零。在上述方法中,步骤(e)包括将所述请求日志中存储的对所述媒体文件的请求数与所述配置表中存储的预定阈值进行比较;以及如果超过所述预定阈值,则将所述媒体文件和所述签名一起存储在缓存中。所述方法进一步包括(f)产生所述媒体文件的改编版本以使所述改编版本与请求所述媒体文件的所述媒体客户端设备的媒体结构匹配;(g)将所述请求日志中存储的对所述媒体文件的请求数与所述配置表中存储的所述预定阈值进行比较;以及(h)如果超过所述预定阈值,则将所述改编的媒体文件和所述签名一起存储在缓存中。步骤(f)进一步包括(i)在所述请求日志中记录请求媒体客户端设备的类型;(j)将所述请求日志中存储的来自所述请求媒体客户端设备的请求数与所述配置表中存储的所述预定阈值进行比较;(j)如果超过所述预定阈值,则产生所述媒体文件的改编版本。在上述方法中,所述改编版本是转速率(trans-rated)版本或转码版本。在上述方法中,步骤(C)包括将所述字节串散列为媒体密钥,所述媒体密钥是所述媒体文件的签名。 因此,已经提供使用缓存的高效媒体文件传送的改进系统和方法。


现在将通过参考附图并作为示例来描述本发明的实施例,在所述附图中图I是根据本发明的实施例的媒体传送系统100的方块图,其中包括带宽优化器106 ;图2是图I中的带宽优化器106的简单扩展的方块图;图3是示出在图I中的媒体传送系统100的组件中执行的功能的功能图300 ;图4是图3中的功能模块314 “处理优化请求”的扩展;图5是示出图3中的功能模块314 “处理优化请求”的功能的流程图500 ;以及图6示出显示图5中的步骤502 “取来远程媒体的部分”、504 “将所述部分串接成字节串‘S’ ”以及506 “产生签名”的示例性细节的流程图600。
具体实施例方式本发明的实施例旨在提供媒体传送系统和方法,所述系统和方法通过提供高效的缓存装置来降低需要通过网络(包括因特网)传送的流量,所述缓存装置可部署在希望从远程服务器下载媒体内容的最终用户的附近。图I是根据本发明的实施例的媒体传送系统100的方块图。媒体传送系统100包括媒体客户端设备102 ;超文本传输协议(HTTP)代理104 ;包括带宽优化(BWO)服务器计算机108、缓存服务器计算机110和缓存存储器112的带宽优化器106 ;以及通过因特网116与缓存服务器110相连的媒体源114。媒体源114 一般可以位于远端,并且还可以被称为远程媒体源114。BffO服务器108是由计算机硬件和软件组成的设备,例如,具有处理器和计算机可读存储介质(例如,计算机存储器、DVD、CD-R0M或其他存储介质)的通用或专用计算机,所述计算机可读存储介质上面存储由所述处理器执行以执行与BWO服务器108的操作相关的功能的计算机可读指令。缓存服务器110是由计算机硬件和软件组成的设备,例如,具有处理器和计算机可读存储介质(例如,计算机存储器、DVD、CD-R0M或其他存储介质)的通用或专用计算机,所述计算机可读存储介质上面存储由所述处理器执行以执行与缓存服务器110的操作相关的功能的计算机可读指令。
尽管图I中仅示出一个媒体客户端设备102,但是将理解,媒体传送系统100可以包含多个因特网使能的媒体客户端设备并为这些设备提供服务,每个所述媒体客户端设备在逻辑上等同于媒体客户端102。术语“媒体客户端”旨在成为表示任何类型的因特网使能的客户端设备的通用术语,客户端设备例如为个人计算机(PC)、个人数字助理(PDA)、智能电话和移动电话,这些设备中的任何一种都能接收媒体文件。类似地,因特网116可以提供对大量媒体源114的访问,所述媒体源例如为专用或公共内容服务器计算机,包括用户原创内容(UGC)服务器,尽管图I中仅示出一个远程媒体源 114。媒体客户端设备102通过以下方式间接地连接到媒体源114 :位于媒体客户端102和HTTP代理104之间的链路120 ;HTTP代理104本身;位于HTTP代理104和BWO服务器108之间的链路122 ;与缓存服务器110通信的BWO服务器108本身;缓存服务器110本身;以及位于缓存服务器110和媒体源114之间的链路118。带宽优化器106的目的是通过在与缓存服务器110相连的缓存112中缓存媒体文件,节省链路118上的带宽使用量,链路118可能很长并且使用成本很高。 带宽优化器106提供的进一步的功能是控制链路120 (和链路122—样可具有带宽限制)上传输的媒体的速率以及匹配媒体客户端102的能力。优选地,带宽优化器106可选地根据媒体客户端102的设备特性改编媒体文件。如果不需要带宽优化或改编,则HTTP代理104可以通过链路124直接访问因特网116,绕过带宽优化器106。图2是带宽优化器106的简单扩展的方块图,带宽优化器106包括BWO服务器108,BffO服务器108包括内含统一资源定位器(URL)重写器模块206和URL转发器模块208的BffO网关204 ;媒体缓冲器模块210 ;以及媒体转码器(TRX)模块212。带宽优化器106进一步包括与缓存服务器110相连的缓存112,缓存服务器110包括缓存服务模块214。缓存服务模块214包括上面存储计算机可读指令的计算机可读介质,所述计算机可读指令由处理器执行以执行从媒体源114获取媒体文件、与缓存112通信以用于存储和检索所述媒体文件、从BWO服务器108接收媒体请求、以及将从缓存112检索的媒体文件传输到BWO服务器108的处理任务。BWO服务器108和缓存服务器110均在包括计算机可读存储介质(例如,一个或多个存储器单元(MEM))和一个或多个中央处理单元(CPU)的计算机硬件中实现,模块206-214是软件模块,具有在计算机可读介质(例如,各个MEM)中存储并在各个CPU中执行的计算机可读指令。BWO服务器108和缓存服务器110的功能及软件模块包括存储在各个计算机可读存储介质中并在各个CPU中执行的计算机可读指令。不失一般性地,BWO服务器108和缓存服务器110可以实现为不同的计算机,或者实现为一个计算机。缓存112是硬件组件,其在传统上可以通过硬盘或其他存储器技术(包括高速缓冲存储器组件的层次结构和用于存储文件及其关联文件密钥的任何传统数据库软件)便利地实现。缓存服务模块214是软件模块,具有存储在缓存服务器110的计算机可读存储介质(例如,计算机存储器、DVD、CD-ROM或其他存储介质)上的计算机可读指令。缓存服务模块214适合与媒体源114和BWO服务器108进行通信以接收和发送媒体文件以及将这些媒体文件存储在缓存112中及从缓存112检索这些媒体文件。缓存服务模块214进一步配备有用于配置可编程预定参数以控制缓存的配置表216和其中记录媒体请求细节的请求日志模块218。此外,缓存服务模块214包括用于收集远程媒体文件的选定部分(字节范围)和产生所述远程媒体文件的文件签名的文件分析模块220,所述文件签名也称为媒体密钥222。缓存服务模块214进一步包括用于将请求日志模块218中记录的对于给定媒体文件的请求数与配置表216中存储的缓存阈值进行比较的比较器224。缓存服务模块214还包括用于与缓存112进行通信的缓存接口模块226,以及用于与媒体源114进行通信的网络接口模块(NW I/F) 228。为了提供媒体传送系统100的上下文,首先一般地描述示例性系统操作。当媒体客户端102 (图I)请求媒体源114中的远程媒体文件时,它通过链路120将请求(包括指向媒体源114的目标URL)发送到HTTP代理104。HTTP代理104在评估目标URL之后,传统上会直接通过链路124获取远程媒体文件。但是,如果在HTTP代理104中指示远程媒体需要优化,则HTTP代理104会将目标URL发送到BWO服务器108中的URL重写器模块206,所述重写器模块会将还可以是符号或组URL的目标URL重写为带宽优化URL(BffO URL)。所述BWO URL包括带宽优化器106的地址以及参数形式的、媒体源114的实际 URL以及媒体源114上被请求的远程媒体文件的完整路径。所述BWO URL通过HTTP代理104返回到媒体客户端102,所述媒体客户端然后可使用所述BWO URL重新构造请求并重新发送请求。如图I中所述,HTTP代理104和带宽优化器106 —般是两个通过链路122链接的不同的子系统,从而允许这两个子系统位于不同的物理位置,或者由不同的商业实体管理。在适当的时候,HTTP代理104的功能还可以包括在BWO服务器108中,这样可导致一些简化。所述BWO URL从媒体客户端102发送到HTTP代理104,然后所述BWO URL由此通过BWO服务器108的URL转发器模块208转发到缓存服务模块214。缓存服务模块214通过下面描述的发明方法判定缓存112中是否已经存在远程媒体文件的副本。如果存在,则缓存服务模块214通过BWO服务器108的媒体缓冲器模块210、链路122以及HTTP代理104将缓存的远程媒体文件发送到媒体客户端102。所述远程媒体文件或其缓存副本可能需要进行改编以满足媒体客户端102的要求,这种情况下将调用媒体TRX模块212以提供必要的改编功能。所述远程媒体文件的改编版本可能已经位于缓存中,这种情况下将绕过媒体TRX模块212。所述改编版本可以是转码版本以匹配媒体客户端102的特定设备类型的媒体结构,或者它可能只是转速率版本,其中仅将媒体重新编码以便降低比特率,而不更改媒体结构。用于转码的媒体结构可以从来自媒体客户端102的请求中包括的信息推断出,例如通过配置表216中包括的列出媒体结构与常用设备类型的表推断出。针对改编和转速率版本的请求可以记录在请求日志218中,该日志不仅包括有关请求的目标媒体文件的信息,还包括有关请求媒体客户端的设备类型的信息。配置表216中存储的阈值可用于判定何时应响应于请求产生转速率或转码版本。转速率版本可以在有关请求设备类型的媒体结构的完整信息不可用,而只知道对设备的比特率限制时产生。所述转码版本可以仅在超过有关特定设备对特定媒体文件的请求的阈值时产生。例如在转码版本中,媒体的帧率或X和Y维已更改为适应接收设备(媒体客户端102)。2008 年 6 月 3 日提交的、Stephane Coulombe 的、标题为 “System And Method ForQuality-Aware Selection of Parameters In Transcoding of Digital Images,,(用于数字图像转码中的质量感知的参数选择的系统和方法)的、序号为12/164,836的美国专利申请描述了一种实际的媒体文件转码方式,该申请的全部内容在此引用作为参考。图3是示出作为媒体客户端102的媒体请求的结果在媒体传送系统100中执行的功能的示例性序列的功能图300。所述功能通过指示一般情况下执行序列的箭头相连。媒体传送系统100的组件名称沿着图表顶部以斜体列出,并由垂直的虚线隔开。所述序列从媒体客户端102中的功能302“客户端产生请求”开始。在功能304“处理初始请求”中,在HTTP代理104中接收并处理包括初始目标URL的请求。决定应该优化该请求之后,HTTP代理104将请求转发到BWO服务器108,在此在功能306 “重定向初始请求”中,由URL重写器模块206重写其初始目标URL。这里初始目标 URL被转换为BWO URL。指示“REDIRECT”的返回码“303”和BWO URL然后一起返回到HTTP代理104,在此BffO URL和返回码“303”可以在协议功能308 “返回303、URL”中重新打包成一协议数据单元并发送回媒体客户端102。HTTP代理104和BWO服务器108之间的流量可包括BWO服务器108中的URL重写,如图3所示。替代地,来自媒体客户端102的初始请求还可以由HTTP代理104透明地代理(S卩,BWO URL替换)到BWO服务器108,而不涉及BWO服务器108的URL重写器模块206。媒体客户端102发送包含目标为因特网中的媒体文件的目标URL的初始请求(客户端产生请求)。HTTP代理104被提供规则以判定应该将哪个域URL发送到URL重写器模块206或直接和透明地转发到BWO服务器108。HTTP代理104代理功能还可以包括不在本发明的范围之内的其他功能。与媒体客户端102进行的通信将通常借助HTTP,但是HTTP代理104和BWO服务器108之间的通信还可以基于因特网内容修改协议(ICAP),这是一个基于HTTP的轻量型协议,其被设计用于代理/服务器交互并且在因特网工程任务组(IETFMA推荐评价(RFC) 3507中定义。因此,BWO服务器108可以实现用于处理直接转发的请求或如图3所示在功能306(重定向初始请求)中产生BWO URL的ICAP服务器。在BWO服务器108中,分析ICAP封装的初始请求,其包括初始目标URL。还可以解释如已发布URL或组URL之类的初始目标URL以检索可提供被请求媒体的服务或设备的实际URL。所述实际URL被转换为BW0URL,并且HTTP重定向命令被返回到HTTP代理104,该代理使用协议功能308 (返回303、URL)将BWOURL返回到媒体客户端102。在此简单描述的使用ICAP的方法只是HTTP代理104和BWO服务器108之间通信的一个示例,还可以使用其他方法,例如简单透明代理。在重请求功能310 “转发新的URL”中,媒体客户端102识别重定向命令并继续使用BWO URL将“优化”请求发送到BWO服务器108,所述优化请求包括作为参数的指向媒体源114上的媒体文件的实际URL。图4示出显示媒体客户端102、HTTP代理104和BWO服务器108之间的示例性交互400的步骤的概要流程图,包括以下步骤402 “客户端发送初始请求”;
404 “代理接收初始请求”;406 “分析请求”;408 “是否需要优化? ” ;410 “对初始请求应用规则集”;412 “将初始 URL 更改为 BWO URL” ;414 “将代码303和BTO URL发送到客户端”;
416 “客户端发送BWO请求”;418 “代理接收BTO请求”;420 “将BWO请求传递到缓存服务器”;422 “将请求转发到因特网目的地”。在步骤402 “客户端发送初始请求”中,客户端102将对媒体文件的初始请求发送到HTTP代理104。在步骤404 “代理接收初始请求”中,HTTP代理104从媒体客户端102接收初始请求。在步骤406 “分析请求”中,HTTP代理104分析请求中包含的URL以判定媒体源114的正确URL以及到被请求远程媒体文件的路径。在步骤408 “是否需要优化? ”中,HTTP代理104判定请求的URL是否指向可能需要优化的媒体文件。如果不需要优化(步骤408的结果为“否”),则执行进行到步骤422 “将请求转发到因特网目的地”,否则(步骤408的结果为“是”),执行进行到步骤410 “对初始请求应用规则集”。步骤408“是否需要优化? ”过滤其他类型流量的请求,包括不能由BWO优化器106优化的请求,并且此类请求在步骤422 “将请求转发到因特网目的地”中通过链路124 (图I)直接转发到被请求因特网目的地,从而绕过BWO优化器106。在步骤410“对初始请求应用规则集”中,对初始请求的URL应用已配置的规则集。此过程会产生前面描述的BWO URL。在步骤412 “将初始URL更改为BWO URL”中,产生重定向消息,其中初始目标URL由BWO URL替代。如图3所示,步骤410和412优选地在BWO服务器108的功能306(重定向初始请求)中执行。替代地,功能306还可以位于HTTP代理104中。在步骤414 “将代码303和BWO URL发送到客户端”中,将包括URL重定向码303和BWO URL的重定向消息发送到媒体客户端102。在步骤416“客户端发送BWO请求”中,媒体客户端102使用BWOURL替代初始请求的URL以产生修改请求,也就是带宽优化(BWO)请求,并将BWO请求发送到HTTP代理104。在步骤418 “代理接收BWO请求”中,HTTP代理104接收BWO请求并将其直接传递到BWO服务器108。在步骤420 “将BWO请求传递到缓存服务器”中,BffO服务器108将BWO请求直接传递到缓存服务器110,在此执行实际的优化(请参阅下面的图5)。例如,下面是一个简单的流程
-媒体客户端102将HTTPGET请求发送到URLhttp://lscache6.youtube.com/videoplayback (步骤 402);-HTTP代理104接收请求并对请求URL应用已配置的规则集(步骤410);-应注意,用于Youtub e视频请求的规则集可以表示为以下形式的正则表达式“* youtube, com/videoplayback*”,此表达式与请求 URL 匹配;-HTTP代理104将HTTP 303重定向响应发送到媒体客户端102 (步骤414),其中Location (位置)头指向带宽优化器(BW0服务器108),后跟包括初始URL的参数,例如http://optmizer. vatrix. com/ url=ls6ache. youtube. com%2Fvideoplayback.在功能方面,BffO服务器108的URL转发器208在功能312 “传递”中接收优化和重定向的请求并将其传递到缓存服务器110的缓存服务模块214以便在功能模块314 “处 理优化请求”中进行处理。图3示出其他功能模块316 “返回部分媒体”;318“返回完整媒体”;320 “将媒体发送到缓存”;322 “播放缓存媒体”;324 “缓冲媒体”;326 “改编媒体”;以及328 “客户端使用媒体”。参考下面的图5更全面地描述功能模块314 “处理优化请求”之后,这些其他功能
将更容易理解。图5是示出功能模块314 “处理优化请求”的功能的流程图500,其示出在存在被请求媒体的缓存版本的情况下获取此版本的高级步骤,以及否则获取远程文件并缓存它的高级步骤,包括以下步骤502 “取来远程媒体的部分”;504 “将所述部分串接成字节串‘S’ ” ;506 “产生签名”;508 “媒体是否位于缓存中? ” ;510 “取来完整媒体文件”;512 “改编版本是否位于缓存中? ”514“选择版本”;516 “是否对媒体进行缓存? ” ;518“缓存媒体”;520 “改编媒体”;522 “是否对改编媒体进行缓存”;以及524 “缓存改编版本”。在步骤502 “取来远程媒体的部分”中,缓存服务模块214接收BWO请求(标签A)并与媒体源114进行通信(标签“B”)以获取在BWO请求中标识的远程媒体文件的选定部分。所述选定部分由媒体源114的功能316 “返回部分媒体”(图3)从远程媒体文件提取并被发送到功能模块314 “处理优化请求”以便在步骤504 “将所述部分串接成字节串‘S’”中接收并处理。步骤502 “取来远程媒体的部分”的检索过程可以使用一系列包括Range (范围)头的HTTP GET请求,这样允许HTTP客户端(即,缓存服务器110)判定远程文件的大小(内容长度CL),然后从HTTP服务器(媒体源114)请求特定字节范围。响应中将只包含被请求的字节并且包括指示远程媒体文件总长度的Content-Length (内容长度)头。可以将步骤502 “取来远程媒体的部分”概括为以下简单流程-发送针对位于媒体文件开头的初始字节范围的第一请求;-检索字节并处理响应头以获取Content-Length头;-根据配置和内容长度“CL”判定要请求的后续字节范围;-执行后续字节范围请求,直到检索到选定文件部分的所有所要求字节。图6示出显示步骤502 “取来远程媒体的部分”、504 “将所述部分串接成字节串‘S’ ”以及506 “产生签名”的示例性细节的流程图600,其包括以下步骤602 发送第一请求”;604 分析响应获取内容长度”;606 判定‘M’个后续请求的范围和偏移”;608:“设置 ‘i’ =1 ;以 NO 个字节加载 ‘S,”;610 发送下一请求(范围Ri)”;612 将接收的Ni个字节串接到‘S,” ;614 :“‘i’ 是否小于 ‘M’”;616 递增 ‘i’”;以及618 媒体密钥=散列(‘S,) ”。在步骤602 发送第一请求”中(从标签(A)进入,请参阅图3和5),将第一 HTTPGET请求发送到媒体源114,请求内容长度(整个远程媒体文件的大小),以便可择性地请求从远程媒体文件的开头的包含NO个字节的第一范围,S卩,范围=0至N0-1。NO的值可以固定,也可以从配置表216获取。第一和后续GET请求标记为(B),也请参阅图3和5。在步骤604 分析响应获取内容长度”中,接收和分析对第一 HTTPGET请求的响应(部分响应消息)。这包括指示文件大小的内容长度和NO个字节的第一范围(如果请求的话)。这个和后续响应消息标记为(C),也请参阅图3和5。在步骤606 判定‘M’个后续请求的范围‘Ri’”中,根据已配置的预定参数判定后续请求及其字节范围的数量。用于判定范围数量、每个范围的大小和用于判定远程文件内每个范围位置的规则的预定参数优选地在配置表216中指定。例如,除了在偏移0处的NO个字节的第一范围(第一请求的,步骤602)之外,可以指定后续范围的预定数量“M”,每个后续范围的长度为“Ni”个字节,并且从文件中的预定偏移处开始。替代地,第一字节范围和(后续)“M”个字节范围可以组合为一个范围数“M”,也就是说,“M”将包括包含偏移0处的第一范围的所有范围。单独定义NO个字节的第一范围是因为需要第一请求(步骤602)以至少获取内容长度,但是也可以可选地同时获取从文件开头的字节范围(请参阅下面的解释)。所述偏移可以被指定为远程媒体文件的内容长度(CL)的比例“Fi”(i=l至M)。因此,后续范围的位置可以计算为Ri=[CL*Fi...CL*Fi+Ni-l]。也可以使用判定后续请求的文件位置的其他方法,例如可以根据实际内容长度动态地定义更小或更大数量的后续请求。为各个后续请求选择的大小可以是变化的,即,在后续范围中的可变字节数“Ni”中定义,或者可以指定针对每个范围的固定的字节数“N”。应该理解,在本发明的范围内,可以容易构想用于判定范围的其他规则。所述字节范围实际构成来自完整远程媒体文件的字节的离散样本。为了显著降低到远程媒体源114的网络流量,所有“M”个范围内的字节数“Ni”加上第一范围内的NO个字节的总和优选地小于完整远程媒体文件整体包含的字节数,并且进一步优选地显著小于,例如小于1%。然而,当远程媒体文件很短时,可能出现选定范围实际重叠的情况,但是通常远程媒体文件的大小要比所有选定范围内的字节数大得多,偏移因素确保了所述范围在整个文件长度上展开,优选地不会发生重叠。下面是配置表216中存储的一组已配置参数的非常简单的示例N0=256,M=3, N (固定)=1024,对于i=l至3,Fi=l/4、l/2和3/4。使用此配置,任何长度至少为4096字节的媒体文件都会产生四个代表性范围,总计256+3*1024=3328个字节,对于后续串接(步骤612)和散列(步骤618)没有任何重叠。使用相同的参数,大小为IMB的典型媒体文件会产生一组范围,总字节数为媒体文件大小的0. 33%,即,与下载完整文件相比,网络流量减少300倍。尽管提供了“M”个范围、它们各自的长度“Ni”(i=0至M)以及比例“Fi”指示的它们在远程媒体文件内的位置,但是应该理解,这些值可通过配置表216编程并且可以选择其他值。在步骤608 设置‘i’ =1 ;以NO个字节加载‘S’”中,以在对第一请求的响应中接收的可选的NO个字节加载字节串‘S’,并将下标变量“i”设为I。步骤610至616构成用于发送“M”个后续请求和处理响应的循环。此处使用循环构造允许容易地动态或通过配置修改“M”。在步骤610 发送下一请求(范围Ri)”中,将HTTP GET请求发送到媒体源114,请求包括Ni个字节的范围Ri。在步骤612 将接收的Ni个字节串接到‘S’”中,在来自媒体源114的响应中接收的Ni个字节与串“S”串接。在步骤614 :“‘i’是否小于‘M’”中,将下标变量“i”与先前判定的后续请求数“M”进行比较。如果已接收全部“M”个后续范围(步骤614的结果为“否”),则退出循环并接着执行步骤618 媒体密钥=散列(‘S’)”,否则继续此循环并执行下一步骤616 递增‘i’”,其中递增下标变量“i”,并且在步骤610 “发送下一请求(范围Ri)”中重新进入循环。在步骤618 媒体密钥=散列(‘S’)”中,将现在包括所有“M”个范围中的累积字节以及第一请求中的NO个字节的字节串“S”散列为媒体密钥222。仅从一些段中获取散列文件签名(媒体密钥)(即,从媒体文件的已定义的字节范围或子范围获取,而非由完整文件导出签名)的解释如下。BffO URL标识远程媒体文件。两个因素使得降低到媒体源114的流量变得非常重要远程媒体文件可能很大,以及媒体源114可能与带宽优化器106和媒体客户端102有一定地理距离,可能距离很远。本发明的一般目标是在完整文件已经位于缓存112中的情况下,避免从媒体源114检索所述完整文件。因为BWO URL可能已从先前下载和缓存文件时的URL发生更改,或者多个远程媒体文件副本可能在不同的URL下存在,所以缓存服务器110无法仅依赖BWO URL和缓存的URL的比较来判定远程媒体文件的缓存版本是否已经位于缓存中。为了根据本发明的实施例解决此问题,缓存服务器110初始地如上所述仅从来自媒体源114的远程媒体文件的已定义的若干小部分获取代表性字节串“S”。现在请返回参考图5.如上所述,在步骤506 “产生签名”中,缓存服务器110将字节串“S”散列为文件签名,也称为“媒体密钥”,用于与缓存中已存在的文件签名进行比较。所述签名用作进入缓存的文件密钥,所述缓存可以根据传统数据库原理进行构造。如果所述文件密钥在缓存中 找到,则意味着远程媒体文件(副本)存储在缓存中。步骤502至524在BWO服务器108和缓存服务器110的模块中执行。具体而言,步骤502、504、506和524在缓存服务模块214的文件分析模块220中执行,从而产生媒体密钥222。步骤508、510、518和524涉及缓存接口模块226。步骤520在BWO服务器108的媒体TRX模块212中执行。步骤516和522在缓存服务模块524的比较器224中执行,以及步骤502、504和510涉及使用网络接口模块228。已知基于内容散列的缓存算法并非百分之百完美,并且存在将不同内容散列为相同签名的微小可能性,这样可能导致从缓存中检索不正确的文件。这种错误肯定(falsepositive)的可能性可通过选择散列函数和散列签名的位大小而变得难以察觉地小。在目前的情况下,存在额外的变量,即选定散列为签名的媒体文件部分的性质和大小。为了确保由于签名与不同的文件匹配而从缓存检索不正确文件的失误率难以察觉地小,发明人提出使用从多个位置检索字节段,也就是检索文件中预定的不同字节范围,而不是例如仅使用文件开头的段。仅使用开头的段会导致高水平的错误肯定,例如对于电影文件,由同一电影制片人出品的所有电影可能以相同的介绍开头。已经分别使用文件的25%、50%和75%位置上的三个检索点成功地评估了本发明的实施例的原型系统。签名在步骤506 “产生签名”中通过将媒体源114发送的远程媒体文件的部分进行散列而产生,所述部分是在步骤502检索并存储在缓存服务器110的存储器中的各个字节范围串接成的串“S”的字节序列。消息摘要算法第五版(MD5)是一种广泛使用的用于产生128位散列值的密码散列函数,所述128位散列值已在本发明的实施例中用作文件签名,也称为媒体文件签名。MD5在因特网工程任务组(IETF)的推荐评价(RFC)1321中定义。MD5是用于实现步骤506的有效密码散列函数。替代地,可以使用其他任何密码散列函数,只要它足够得可靠° http://en. wikipedia. org/wiki/Cryptographic_hash_function 中的表内提供了具有各种复杂性和效率的适当密码散列函数的列表,包括通常称为“GOST”、“ HAVAL ”、“ PANAMA ”、“ SHA-O ” 及其他的散列函数。在步骤508 “媒体是否位于缓存中? ”中,访问缓存112并使用签名或媒体密钥询问缓存112以判定被请求的远程媒体文件是否位于缓存112中。如果未在缓存112中找到媒体(步骤508的结果为“否”),则将返回码“未找到”从缓存112发送回缓存服务器110,所述缓存服务器然后进行到步骤510“取来完整媒体文件”以从媒体源114取来完整的远程媒体文件(标签“E”)。在所述完整的远程媒体文件被媒体源114的功能318 “返回完整媒体”发送(标签“F”)并在缓存服务器108中接收之后,它被转发到BWO服务器108。在步骤516 “是否对媒体进行缓存? ”中,查询缓存服务器110的配置表216以判定是否应该缓存媒体。配置表216包括判定是否应该缓存检索到的完整的远程媒体文件的可编程规则。例如,缓存规则可以是在缓存服务器110的请求日志218中记录所有媒体请求以及仅当远程媒体文件的请求率足够高(也就是说请求率达到特定阈值)时缓存远程媒体文件。步骤518 “缓存媒体”在缓存服务模块214的功能320 “将媒体发送到缓存”中执行,并且完整的媒体被发送到缓存112并针对先前在步骤506 “产生签名”中判定的媒体密钥(签名)进行存储。无论是否缓存媒体文件,也就是说,执行步骤518“缓存媒体”,或者步骤516“是否对媒体进行缓存? ”的结果为“否”之后,执行都会继续到步骤520 “改编媒体”,如下所述。

如果已经在缓存112中找到远程媒体文件(步骤508的结果为“是”),则有可能缓存112中已经存在特定改编版本,即,针对请求设备(即媒体客户端102)适当改编的版本。如上所述,所述改编版本可以是转速率版本或转码版本。在步骤512 “改编版本是否位于缓存中? ”中,判定缓存112中是否存在适当改编的版本。如果存在此类改编版本,或者如果因为原始(完整)媒体文件被发送到客户端102而使得所述改编版本不必要(步骤512的结果为“是”),则在步骤514 “选择版本”中选择指向缓存112中适当版本的指针并将其转发到(标签“D”)BWO服务器108的功能322 “播放缓存媒体”。如果缓存112中没有适当改编的版本(步骤512的结果为“否”),则可以改编媒体文件,即,在功能326 “改编媒体”(图3,标签“G”)中执行的步骤520 “改编媒体”中对媒体文件进行转速率或转码,所述功能326在图2中的TRX模块212中执行。改编版本在其请求率足够高(也就是说,如果它达到特定阈值)时由原始缓存版本产生。所述阈值可以在配置表216中配置。可针对所有媒体客户端设备类型或特定的设备子集全局地跟踪请求。所述设备类型通过来自媒体客户端102的媒体BWO请求中的头识别。全局阈值将触发转速率,而设备特定阈值将触发转码。根据在步骤522 “是否对改编媒体进行缓存”的判定,在步骤520 “改编媒体”中创建的转速率和转码版本都可以保留在缓存中,在步骤522中,将查询请求日志218和配置表 216。在步骤524 “缓存改编版本”中,使用先前计算的媒体密钥将所述改编版本发送到缓存112。已经在缓存112中找到的媒体文件版本以步骤514 “选择版本”中的指针指示,并与“重定向”返回码(标签“D”)一起发送到BWO服务器108,BffO服务器108然后在功能322 “播放缓存媒体”中将识别的缓存媒体文件通过执行缓冲功能324 “缓冲媒体”的媒体缓冲器210发送到媒体客户端102。无论是否缓存媒体库文件的改编版本,也就是说,执行步骤524 “缓存改编版本”、或者步骤522 “是否对改编媒体进行缓存? ”的“否”结果之后,识别的媒体文件都随后被转发(标签“G”)到执行缓冲功能324 “缓冲媒体”的媒体缓冲器210,然后继续转发到媒体客户端102。媒体客户端102现在最终在其功能328 “客户端使用媒体”中接收和使用(显示或以其他方式使用)被请求的媒体文件。BffO服务器中的媒体缓冲器模块210的目的是调节从BWO服务器108到媒体客户端102的媒体文件的传输,以便根据已配置策略或根据媒体本身的特性(例如,媒体比特率)调整媒体传送速率。已经参考示例性实施例描述了检索媒体文件的串接部分(S卩,分离的字节范围)及将它们散列为单个媒体密钥。本发明的实施例提出这些带宽高效方法是为了高效地判定带宽优化器106中是否已经存在文件的缓存副本。有关缓存文件或根本不缓存文件的规则可以各种方式定义和配置,已经提供了相关示例。例如,可以在第一次相遇时仅缓存签名,而在特定时间内的第二次相遇时缓存完整文件。可以针对缓存未修改(完整)文件和针对缓存改编版本应用相同或不同的规则。 应该理解,可使用本发明的实施例的方法和系统比较各种电子文件,无论所述文件是否为媒体文件以及是否为远程文件。例如,可以根据以下步骤比较两个电子文件对于每个电子文件获取相对于所述电子文件开头的预定偏移处的M (M>=2)个字节范围,每个字节范围短于所述电子文件的文件大小;将M个范围内的字节串接成一个字节串;使用所述字节串产生所述电子文件的签名;以及比较这两个文件的签名以判定所述电子文件是否相同。便利地,产生电子文件的签名包括将字节串散列为文件密钥,并且所述比较签名包括比较两个文件密钥。用于比较两个电子文件的相应计算机系统可以在具有处理器和计算机可读介质的通用或专用计算机中实现,所述计算机可读介质上存储由所述处理器执行以执行上述方法步骤的计算机可读指令。尽管详细描述了本发明的实施例,但是对于本领域的技术人员来说显而易见的是,可以在以下权利要求的范围内做出对实施例的变形和修改。
权利要求
1.一种缓存服务模块,判定缓存中媒体文件的存在,所述媒体文件是远程媒体源中存储的远程媒体文件的副本,并且所述缓存服务模块包括 文件分析模块,包括上面存储由处理器执行以实现以下步骤的计算机可读指令的计算机可读存储介质 (i)从远程媒体源获取远程媒体文件的文件大小,以及相对于所述远程媒体文件的开头的各个偏移处的M (M>=2)个字节范围,每个字节范围短于所述远程媒体文件的文件大小; (ii)将M个范围内的字节串接成一个字节串; (iii)使用所述字节串产生所述媒体文件的签名;以及 (iv)判定缓存中所述媒体文件的存在,包括使用所述媒体文件的签名询问缓存。
2.如权利要求I中所述的缓存服务模块,进一步包括配置表,包括上面存储计算机可读指令的计算机可读存储介质,用于存储 M的值; 分别定义要获取的用于每个范围的字节数的预定参数;以及 用于计算作为所述远程媒体文件的文件大小的函数的各个偏移的预定参数。
3.如权利要求I或2中所述的缓存服务模块,其中满足以下一个或多个条件 字节范围不重叠;或者 所有字节范围的总和小于所述远程媒体文件的文件大小;或者 所有字节范围的总和显著小于所述远程媒体文件的文件大小;或者 所述偏移之一等于零。
4.如权利要求I至3中任一权利要求中所述的缓存服务模块,其中 所述配置表进一步包括用于所述媒体文件的预定阈值;并且所述缓存服务模块进一步包括 用于记录媒体客户端设备对所述媒体文件的媒体请求的请求日志模块; 用于将所述请求日志中存储的对所述媒体文件的请求数与所述预定阈值进行比较的比较器;以及 用于在缓存中没有所述媒体文件和超过所述预定阈值的情况下将所述媒体文件发送到缓存的缓存接口模块。
5.如权利要求I至4中任一权利要求中所述的缓存服务模块,其中所述计算机可读指令包括用于将所述字节串散列为媒体密钥的计算机可读指令,所述媒体密钥是所述媒体文件的签名。
6.一种用于缓存媒体文件的系统,包括 (a)缓存,包括计算机可读存储介质,用于存储媒体文件,所述媒体文件是远程媒体源中存储的远程媒体文件的副本; (b)宽带优化服务器,包括处理器和上面存储计算机可读指令的计算机可读存储介质,用于从媒体客户端设备接收对所述媒体文件的请求;以及 (c)缓存服务器,包括处理器和上面存储由所述处理器执行的计算机可读指令的计算机可读存储介质,所述缓存服务器具有 缓存服务器模块,判定缓存中媒体文件的存在,所述缓存服务模块包括用于执行以下操作的文件分析模块 (i)从远程媒体源获取远程媒体文件的文件大小,以及相对于所述远程媒体文件的开头的各个偏移处的M (M>=2)个字节范围,每个字节范围短于所述远程媒体文件的文件大小; (ii)将M个范围内的字节串接成一个字节串; (iii)使用所述字节串产生所述媒体文件的签名;以及 (iv)判定缓存中所述媒体文件的存在,包括使用所述媒体文件的签名询问缓存;以及 (v)如果缓存中没有所述媒体文件,则从所述远程媒体源获取完整的媒体文件并将所述媒体文件和签名一起存储在缓存中。
7.如权利要求6中所述的系统,进一步包括 用于与所述远程媒体源通信的网络接口模块; 从缓存检索所述媒体文件并通过所述带宽优化服务器将所述媒体文件转发到所述媒体客户端设备的缓存接口模块;以及 其中所述带宽优化服务器包括用于产生所述媒体文件的改编版本以使所述改编版本与所述媒体客户端设备的媒体结构匹配的媒体转码器模块。
8.如权利要求6或7中所述的系统,所述缓存服务模块进一步包括配置表,包括上面存储计算机可读指令的计算机可读存储介质,用于存储 M的值; 分别定义要获取的用于每个范围的字节数的预定参数;以及 用于根据所述远程媒体文件的文件大小计算各个偏移的预定参数。
9.如权利要求6至8中任一权利要求中所述的系统,满足以下一项或多项 字节范围不重叠;或者 所有字节范围的总和小于所述远程媒体文件的文件大小;或者 所有字节范围的总和显著小于所述远程媒体文件的文件大小;或者 所述偏移之一等于零。
10.如权利要求8或9中所述的系统,其中 所述配置表进一步包括用于所述媒体文件的预定阈值;并且所述缓存服务模块进一步包括 用于记录所述媒体客户端设备对所述媒体文件的媒体请求的请求日志模块; 用于将所述请求日志中存储的对所述媒体文件的请求数与所述预定阈值进行比较的比较器;以及 用于在缓存中没有所述媒体文件和超过所述预定阈值的情况下将所述媒体文件发送到缓存的缓存接口模块。
11.如权利要求6至10中任一权利要求中所述的系统,其中所述文件分析模块被配置为将所述字节串散列为媒体密钥,所述媒体密钥是所述媒体文件的签名。
12.一种用于缓存媒体文件的方法,所述媒体文件是远程媒体源中存储的远程媒体文件的副本,所述方法包括 (a)从远程媒体源获取远程媒体文件的文件大小,以及相对于所述远程媒体文件的开头的各个偏移处的M (M>=2)个字节范围,每个字节范围短于所述远程媒体文件的文件大小; (b)将M个范围内的字节串接成一个字节串; (c)使用所述字节串产生所述媒体文件的签名;以及 (d)判定缓存中所述媒体文件的存在,包括使用所述媒体文件的签名询问缓存;以及 (e)如果缓存中没有所述媒体文件,则从所述远程媒体源获取完整的媒体文件并将所述媒体文件和签名一起存储在缓存中。
13.如权利要求12中所述的方法,其中步骤(a)包括获取 M的值; 分别定义要从所述配置表获取的用于每个范围的字节数的预定参数;以及 来自所述配置表的用于根据所述远程媒体文件的文件大小计算各个偏移的预定参数。
14.如权利要求12或13中所述的方法,其中 字节范围不重叠;或者 所有字节范围的总和小于所述远程媒体文件的文件大小;或者 所有字节范围的总和显著小于所述远程媒体文件的文件大小;或者 所述偏移之一等于零。
15.如权利要求12至14中任一权利要求中所述的方法,其中步骤(e)包括 将所述请求日志中存储的对所述媒体文件的请求数与所述配置表中存储的预定阈值进行比较;以及 如果超过所述预定阈值,则将所述媒体文件和所述签名一起存储在缓存中。
16.如权利要求12至15中任一权利要求中所述的方法,进一步包括 产生所述媒体文件的改编版本以使所述改编版本与请求所述媒体文件的所述媒体客户端设备的媒体结构匹配; 将所述请求日志中存储的对所述媒体文件的请求数与所述配置表中存储的所述预定阈值进行比较;以及 如果超过所述预定阈值,以及缓存中没有所述改编版本,则将所述改编版本和所述签名一起存储在缓存中。
17.如权利要求12至16中任一权利要求中所述的方法,其中步骤(c)包括将所述字节串散列为媒体密钥,所述媒体密钥是所述媒体文件的签名。
全文摘要
为了提高因特网上媒体传送的效率,提供了用于缓存远程媒体文件并检索缓存的媒体文件的系统和方法,包括用于将所述远程媒体文件存储到缓存中、并根据仅对离散的媒体文件部分进行散列而创建的签名检索缓存的媒体文件的硬件和软件模块及步骤。所述签名是在针对同一媒体文件的后续请求时用于在缓存中查找缓存的媒体文件的密钥,即使它从不同的因特网位置接收。媒体文件可以根据不同媒体客户端的特性进行改编,并且改编的媒体文件也同样可以进行缓存。
文档编号H04N21/2183GK102771080SQ201080054556
公开日2012年11月7日 申请日期2010年11月30日 优先权日2009年12月1日
发明者J·玛兰德, M·库尔特曼彻 申请人:万特里克斯公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1