网络中大有效负载分布的方法和装置的制作方法

文档序号:6475858阅读:161来源:国知局
专利名称:网络中大有效负载分布的方法和装置的制作方法
技术领域
本发明涉及内容交付领域。更具体地,本发明涉及在网络环境中把大有效负载(即,文件)交付到离用户更近。
背景技术
在网络环境中的内容交付包括把信息(例如,以文件的形式)从内容提供者发送到可以将其内容供应给驻留在网络上的各个目的地的多个用户的多个内容服务器。内容提供者一般把将要被分布的信息放在连接到网络的一个计算机上。这个计算机常常被称作内容服务器。任何客户机-服务器或对等通信协议可以被应用到内容服务器来进一步把信息传送到在相同或不同网络中的被指定来供应信息的一组内容服务器。该源内容服务器通常被称为源服务器。该信息驻留在内容服务器上的一个文件中并且对于网络的用户是可得到的。当用户请求访问该信息时,使用合乎要求的文件传送协议(即,传送的方法)将文件的内容从被指定来供应内容的任何内容服务器交付给请求的用户。一个内容服务器可以在任何用户请求前从一个源服务器接收信息,或者它可以基于用户请求从一个源服务器检索信息。一个内容服务器可以被指定来供应来自多个源服务器的信息,并且一个源服务器可以仅仅把其信息的一部分发送到一组内容服务器。内容服务器的所有者通常被称为内容交付网络(CDN)提供者。例如,在诸如因特网的网络中,用户可以经由通过电话公司的中心局(CO)或电缆公司的头端(headend)(HE)连接的因特网服务提供者(ISP)来访问网络。这样,ISP用作用户到因特网的网关。ISP的例子包括America On LineTM(美国在线)(AOLTM)和EarthlinkTM。一些电话公司和电缆公司也是ISP。ISP可以与其它的网络彼此互联,他们可以连接到主干(backbone)提供者、电话公司的网络、电缆公司的网络或任何私人或公众网络。主干提供者为ISP、企业等提供高的带宽连通性。通过ISP、CO或HE,用户可以从网络中的任何内容服务器访问可以从内容提供者得到的服务(例如,数据)。
各种类型的数据(即,信息)可以在一个网络上传输。例如,当一个用户期望访问可以从远程内容服务器得到的网页、文本文档、应用程序、静态图象、音频、视频或任何其他类型的数据时,则包含合乎要求的数据(即,信息)的文件内容必须从内容服务器交付给用户。与一些其它文件类型、例如包含视频或多媒体数据的文件相比,包含网页和文本文档的文件一般较小。因此,从位于远程位置、例如澳大利亚的内容服务器传送一个网页到美国的用户可以花费不到几秒钟。但是,例如,根据视频文件的大小和用户连接的速度,传送视频文件可能花费数分钟到数小时。这样的传送在网络上放置了大量的需求,可能会导致丢失数据。例如,当数据通过因特网发送时,接收系统可能接收不到从内容服务器发送的所有数据。这是因为数据包(数据一般以包来传送)可能通过一些路由器,在这里一些包由于拥挤被丢掉。接收系统通知服务器所丢失的数据,使得它可以重发该数据。在一些情况中,丢掉的包可以延缓或暂停内容的交付,因为如果许多服务器把重发的数据保存到其客户机,则路由器变得更拥挤,这样导致更多的被丢掉的包。
根据被传送的文件的大小,依赖一个单独的源同时把各种类型的信息分布到多个远程位置的基于网络的内容交付可能遇到有关服务器的网络加载问题或服务器本身可能被过度分派任务。例如,由于传送一个小文件(例如,一个网页)通常仅仅花费几秒钟,所以小文件从一个源位置到成千上万的目的位置的大量分布对源位置附近的网络交通不会产生大的影响。相反,传送一个大文件(即,一个大有效负载)可以花费数十分钟到若干小时。如果这样的有效负载的分布依赖于一个单独的源,则源位置附近的网络性能和随后的内容的交付会严重地降低并且变得不能接受。
因此,虽然依赖于一个单独的源分布小文件(例如,网页、文本或小图象)是可以被接受的,但服务器和/或网络过载的潜在可能要求使用多个源来分布大文件到多个客户机。
宽带工业的快速发展已经推动了丰富媒体(rich media)(例如,完全长度的电影、视频或其它类型的多媒体数据)的发展。宽带技术带来了将内容交付给远程用户的高速连接的能力,因此大有效负载可以传送得更快。并且,宽带技术使利用流型(streaming)媒体发送音频和/或视频数据成为可能一例如,由此数据以流的方式被发送以供实时重放。这样,在用户终端上的丰富媒体的质量,现在比任何其它类型的信息的质量更依赖于交付技术的执行能力。为了最小化交付延迟、网络拥挤和其它相关问题,一些系统试图将内容放在位于近距离接近、即距离最终用户几个网络集线器远的服务器系统上。这些服务器位置近似地定义了通常所说的网络的“边缘”的概念。例如,因特网服务提供者近距离接近最终用户,这样可以被看作处于网络的边缘。当服务器被置于这样的位置时,服务器被称为处于网络的边缘。被配置为从位于网络边缘的网络节点获得内容的最终用户系统因此在网络边缘(也叫作最近距离(last mile))之外。但是,注意到位于网络边缘之外的系统仍然连接到网络并且能与位于边缘上的服务器计算机进行通信是很重要的。在网络边缘放置内容是有利的,因为它可以减少在服务于位于边缘之外的用户时的延迟。把大的有效负载交付到“边缘”的当前方法包括镜象法(mirroring)或超高速缓存法(caching)。现在将详细讨论这些方法和每一种方法中固有的局限性,以便让读者了解本发明所产生的进步。超高速缓存法超高速缓存的一个简单的例子是网络超高速缓存。以它的最简单的形式,网络超高速缓存涉及位于客户机用户和源服务器之间的超高速缓存器件,使得曾经从源服务器取出的数据被保存在超高速缓存设备(器件)以服务于随后的对于相同数据的请求。例如,超高速缓存的示例显示在图1中。在局域网(LAN)108中的浏览器104上的期望获得可以从源服务器100得到的数据的客户机用户把合乎要求的数据的通用资源定位器(URL)地址输入到浏览器104中。例如,LAN 108可以是一个ISP的网络。该请求被转发到超高速缓存器件102,它在这个示例中是一个HTTP(超文本传送协议)代理服务器。例如,可以由ISP所拥有的代理服务器典型地位于ISP的本地网络。象任何其它服务器一样,代理服务器(超高速缓存器件)102和103是具有本地处理和存储器的计算机。那个存储器的一个子集合被称为代理超高速缓存。超高速缓存一般用作频繁使用的信息的临时存储器。注意,虽然仅仅一个超高速缓存器件显示在图1的每一个ISP的局域网中,但是实际的实施可以在一个ISP的局域网中具有多于一个的超高速缓存器件。
代理服务器(即,超高速缓存器件)102处理在浏览器104上从客户机接收的请求并且从它的超高速缓存(即,存储器)搜索被请求的数据,如果该数据不能从它的超高速缓存得到,代理服务器102经由网络路由器101把该请求转发到源服务器100。在这个示例中,网络路由器101唯一的用途就是把请求转发到源服务器100。源服务器100是具有到在浏览器104的客户机用户的单个TCP/IP(传输控制协议/因特网协议)连接路径110的HTTP服务器。
源服务器100服务于该请求并且把所请求的数据转发到超高速缓存器件102。在接收到数据之后,超高速缓存器件102可以把数据保存到它的本地超高速缓存存储器中并且也把它转发到浏览器104。数据据说被超高速缓存在HTTP代理(超高速缓存器件)102中。在浏览器105的期望相同数据的随后的客户机用户得到由HTTP代理服务器(超高速缓存器件)102服务于他们的请求而不需要将该请求转发到HTTP服务器100。但是,在LAN 109上请求相同数据的用户106和107将由HTTP服务器100来服务于他们的初始请求,因为用户106和107没有通过具有超高速缓存于存储器中的数据的HTTP代理102连接。而是HTTP代理103将执行与上面对于HTTP代理102所讨论的一样的处理来获得数据并把该数据超高速缓存到它的存储器中。这样,所述的在网络边缘的代理服务器102和103根据用户的需求而分布。
一旦数据被超高速缓存到HTTP代理102和103中,源服务器100将不需要服务于来自通过HTTP代理服务器102和103连接的用户对于相同的数据的请求。通过在更靠近用户的各个代理服务器上超高速缓存数据,来分布内容的交付,从而减少网络服务器周围的负载。但是,超高速缓存仅仅对于交付静态内容一在存储器中是固定的数据、例如静态网页是有益的。超高速缓存对于动态信息、例如服务(例如,功能、交易等)、流型媒体或其它任何类型的动态信息是无效的。
HTTP协议对于本领域中的普通技术人员是公知的;因此在HTTP代理服务器102和103上执行超高速缓存功能的软件是容易得到的。但是,这对于流型媒体不适用,因为流型服务器的不同的提供者使用不同的协议来传输数据到接收者播放器(例如,浏览器)。图2是一个到播放器的典型的流型服务器连接的示例。
与到浏览器的HTTP TCP/IP连接对比,流型服务器200通过三条连接路径连接到播放器201。路径202是实时流型协议(RTSP)连接。RTSP是为控制具有实时特性的数据例如音频和视频流的交付而提供的一个协议。RTSP包括媒体数据的描述并为播放器201提供例如播放、倒带、快进和暂停的重放控制。重放可以以一个偏移完成,使得播放器可以从一个规定点开始接收数据。例如,当播放器201倒带时,对应于合乎要求的重放位置的一个不同的偏移被发送到流型服务器200,并且输入的数据从一个新的偏移开始通过路径203被发送。路径203利用实时传送协议(RTP)并且可以包含被重放的数据。第三个连接、路径204利用RTP控制协议(RTCP)并且它可以提供数据的流程控制。
超高速缓存对于流型媒体效果不好,因为流型服务器的各个提供者使用不同的智能来计算作为偏移和流程控制的函数的在连接203上发送的数据。而且,服务器提供者不遵循公用标准,因此把超高速缓存器件放置在流型服务器200和播放器201之间将不是容易可行的,除非在现在的实施中是在流型服务器中的智能被包括在连接路径上发送的信息流中,或者如果超高速缓存器件包含由每一个流型服务器提供者使用的智能。这样,现有的系统目前没有提供一个可行的方法来超高速缓存流型媒体数据。并且,由于超高速缓存是基于使用的,当内容没有被超高速缓存时,代理将需要取该内容,因此存在丢失的可能并且没有质量的保证。
尽管这些局限性,超高速缓存法仍具有许多优势,例如容易扩充,因为新的超高速缓存器件可以被添加到任何地方并且它将启动并运行;超高速缓存器件可以被不同的内容提供者共享;并且超高速缓存器件非常轻便(即,不需要特别的配置),这样更容易管理。镜象法镜象法是用于为在网络“边缘”的用户提供内容交付的方案,该方案通过将内容复制到网络边缘、从而使内容被请求的地方和内容被服务的地方之间的距离最小化,解决了集中式系统的许多局限性。在这样做时,与从一个集中式源位置交付到多个用户相比,镜象法节省了网络带宽。镜象法的基本原理包括内容和网络的中心控制、内容到网络边缘上的服务器的有效分布和从用户到本地边缘服务器的内容请求的自动转移。
在镜象法中,文件服务器被遍及网络(例如因特网)放置,靠近内容请求起源的地方。这个原理反映了超高速缓存的一些功能,但是具有明显的差别。特别地,这些文件服务器以中心控制的协作方式一起工作以确保整个网络的性能。象超高速缓存一样,内容从源服务器到该服务器仅仅被复制一次,而不考虑内容被供应的次数。但是,镜象法提供了更大的内容控制。通过预填充服务器,内容将可得到以供快速交付给用户,消除超高速缓存丢失并且增加命中率。镜象法与超高速缓存法结合,提供了一种具有两种方法的好处的更好地综合的结果。
一个URL应用到一个镜象法实施方式中的所有服务器。当浏览器请求URL时,系统基于如下几点确定一个本地交付服务器地理和网络位置;内容的存在;和服务器的当前状态(可用性和负载)。
图3是采用镜象法把内容推到网络边缘的网络内容交付方案的图示。如图3中所示,假设边界300表示网络的边缘,镜象法将文件服务器(例如,FS 301-308)定位在边缘。在这个示例中,文件服务器301是控制所有其他文件服务器(例如,302-308)的主服务器。需要被推进到边缘的所有内容被加载到主服务器301中,然后使用最佳的推进方法复制到所有的其他文件服务器302-308中。例如,内容可以使用下面讨论的多点传送来复制。
不象超高速缓存法,内容必须是静态的(即,不随时间而改变),镜象法对于诸如交易的非静态数据效果好,因为交易数据从主服务器(例如,FS 301)到在网络边缘的文件服务器(例如,FS 302-308)可以同步。复制数据到边缘上的文件服务器的各种方法可以包括广播,从主服务器到网络中的所有收听的文件服务器的传输;任意点传送(anycast),到最近的服务器组的传输;单点传送(unicast),到一个特定接收器的传输;以及,多点传送,到多个特定接收器的传输(多点传送的更详细的讨论将在下面讨论)。一旦内容在边缘被交付,在浏览器330的请求访问内容的用户自动地传递到地理上最近的能够服务那个请求的服务器(例如,服务器307)。
镜象法对于流型媒体效果也很好。流型服务器可以被连接到任何一个文件服务器301-308来为最接近需要的地方提供服务。例如,通过将流型服务器310连接到文件服务器302,在地理上邻近文件服务器302的播放器320上的用户可以重放流型媒体数据而没有太多的延迟。这样,在镜象法实施方式中,流型服务器可以被连接到任意的文件服务器以克服超高速缓存法的局限性。但是,当前的方法也有显著的缺点,例如,因为对内容的重复访问以及因为盘输入/输出带宽是有限的,大的目标、例如常见的视频可能在盘上产生热点。况且,在对于数据的最终用户客户机请求开始满意之前,大的目标需要被完全地传送到应用服务器或超高速缓存器件,从而产生潜在的延迟问题。
镜象法也会由于可伸缩性问题、存储器限制、管理成本和不适当的负载均衡而非常昂贵。可伸缩性问题起因于在一个存储媒体中存储整个大文件、例如视频的需要。因此,当可用的存储器不足以存储特别大的文件时,新的存储器必须被添加到网络中的所有文件服务器。因为网络中所有的文件服务器必须保持相同的文件配置,在镜象法环境中升级所有的文件服务器可以证明是非常昂贵的。另外,带入到网络中的新的文件服务器将需要被配置成与网络中的所有其他文件服务器一致。
添加更多的存储器需要用于安装新的存储设备的机架空间。机架空间通常是有限的并且有时是昂贵的。况且,随着存储器容量增加,需要更多的系统管理功能(例如,备份)来管理所述配置。由于系统管理的成本昂贵并且机架空间有限,所以镜象法受到影响。使用多点传送的内容分布多点传送是在网络上的单个发送者和多个选定的接收者之间的同步通信。图4是使用多点传送技术把信息推进到网络上的多个内容服务器的一个分布网络的示例。
源提供者把大的有效负载(例如,视频文件、图象数据或具有足以使网络资源紧张的尺寸的其它任何文件)上载到例如可以是一个位于Los Angeles的内容服务器的根服务器400上。根服务器也可以被称为源服务器。接着根服务器400把视频数据多点传送到处于网络服务器树的第二级上的通常在不同的地理位置的多个服务器(例如,服务器401到403)。例如,服务器401可以位于San Diego,服务器402位于San Jose,服务器403位于San Francisco。在接收视频数据后,服务器401到403将把视频数据多点传送到服务器树的下一级中的服务器。例如,服务器401把这些数据多点传送到服务器404到406,服务器402把这些数据多点传送到服务器407到409,服务器403把这些数据多点传送到服务器410到412。在这个示例中,每一个服务器多点传送到三个其他服务器,但是,大多数实施涉及到多于三个服务器(例如,十个服务器)的多点传送。
在视频数据被分布到服务器400到412中之后,视频数据变成可以从位于网络上的不同的地理位置的多个服务器得到。这个分布方法把内容推进到边缘成为镜象类型的体系结构,在这里可以从多个服务器中的一个、通常从地理位置最近的服务器来服务于用户的请求。由于在一特定通信链路上不足的容量,多点传送整个大有效负载文件仍然可以造成拥挤;由于网络设备的处理速度而造成网络设备拥挤;由于服务器的数据处理速度而造成服务器拥挤;以及由于与数据在长距离上传送有关的时间而造成的网络中的延迟。负载均衡负载均衡是分布网络负载和处理到一簇服务器的负载以提高系统性能、同时同步增加由服务器提供的服务的可靠性的任务。负载均衡器经常被实现为开关或路由器并被分别称为负载均衡开关或负载均衡路由器。负载均衡器的网络接口、虚拟IP地址(VIP)用作服务器簇的虚拟外部接口。簇中的每一个服务器具有一个内部(本地IP地址)和一个外部(IP地址)网络接口。大多数负载均衡器提供被称为网络地址翻译(NAT)的特征,它把VIP翻译成因特网上可用的本地IP地址。负载均衡器接受所有寻址到其VIP的数据包,并将其均匀分布到最可得到的服务器。
负载均衡器保留一个状态表(例如,什么服务器正在服务于什么用户),使得持久对话期的数据包流向或来自相同的客户机或服务器终点。许多负载均衡器具有把数据包从客户机分布到客户机先前被连接到的相同的服务器的可配置的“粘性”特征。此“粘性”特征允许服务器智能地为来自其客户机的可能的未来请求作准备。
负载均衡器可以典型地以“常规”(即,不透明)模式或“透明”模式运行。“常规”模式和“透明”模式之间的区别在于入站和出站数据流的管理。在“常规”模式中,所有到服务器簇的入站通信量和来自服务器簇的出站通信量都通过负载均衡器。在“透明”模式中,来自服务器簇的出站通信量通过直接流过IP路由器来绕过负载均衡器。“透明”模式对于交付大量数据的服务器的网络可以是非常重要的,因为它减少了在负载均衡路由器上的总的负载并因而提高了网络的性能。当负载均衡器以“透明”模式运行时,它不翻译在从客户机到它的服务器组的入站包中的目的IP。IP路由器必须被同时连接到负载均衡器和服务器簇来完成这一点。然后服务器簇中的服务器用使用负载均衡器的IP地址的回送接口和用到IP路由器的缺省路由来配置。
大多数负载均衡器提供远程或本地应用程序设计接口(API)或者脚本来管理其负载均衡任务。一般地,当前技术使用循环法(即,队列中的下一个服务器服务下一个客户机)来负载均衡一簇可用的服务器。这可能意味着即使服务器没有可用的带宽它们也被分派了任务。
因此,需要解决与向网络边缘交付大有效负载相联系的成本、可伸缩性和负载均衡问题。但是,在讨论本发明之前,展示了如何在不同的操作系统中处理文件的总体概述。计算机系统的文件配置在操作系统中文件被命名、存储、组织和访问的全部结构被称为“文件系统”。例如,在UNIX操作系统中,每一个目录都可以用一个文件系统安装。如果一个目录/X用文件系统Y安装,则在子树/X中的任何存储器I/O(输入/输出)请求被转发到文件系统Y。例如,文件/X/foo.txt的打开使得打开请求被转发到文件系统Y中相应的“打开”例程。
现在的操作系统,例如Unix和Windows,支持“可堆叠文件系统”。可堆叠文件系统是建立在另一个文件系统顶部的一个文件系统。例如,如果可堆叠文件系统F在文件系统K之上建立,并且如果目录/X用F安装,那么文件/X/foo.txt的打开使得打开请求转到文件系统F。文件系统F处理该请求,它可以产生或可以不产生到文件系统K的请求。在Windows操作系统环境中,可堆叠文件系统被称为文件筛选程序(filter)。文件筛选程序可以被放置在任何目录上。对具有文件筛选程序的目录的任何I/O访问使得相应的文件筛选程序例程将被执行。文件筛选程序可以发送或可以不发送任何请求到下层的文件系统。
被分布的文件系统是其中文件可以位于连接到局域和广域网上的多个服务器上的系统。被分布的文件系统可以使用几个公知的网络文件系统协议,例如通用因特网文件系统(CIFS)和Sun Microsystems公司的网络文件系统(NFS)协议来实施。CIFS是基于由运行各种各样的操作系统的个人计算机和工作站广泛使用的标准服务器消息块(SMB)协议的。CIFS协议支持多个文件共享和表示特性,例如文件访问、文件和记录锁定、安全的超高速缓存、预读和后写、文件改变通知、协议版本协商、扩充属性、分布的复制虚拟卷和服务器名称分解。象CIFS一样,NFS试图为客户机系统提供一个开放的交叉平台机制,以便在网络上从服务器系统请求文件服务。NFS协议提供在网络中对于共享文件的透明远程访问,因为它被设计为可在不同机器、操作系统、网络结构和透明协议之间移动。NFS的可移动性通过在使用外部数据表示标准(XDR)的系统实现的顶部建立的远程过程调用基元(primitive)(RPC基元)的使用来实现。RPC基元提供到远程服务的接口。服务器提供程序(例如,NFS),每一个程序包括一组过程。服务器的网络地址、程序号和过程号的组合指定一个要执行的具体的远程过程。XDR使用语言来描述数据格式。语言只能用于描述数据,它不是一个程序设计语言。NFS实现存在于各种各样的系统中。NFS安装协议允许服务器将远程访问特权分发给一个受限制的客户机集合,并执行例如允许将一个远程目录树连到一个本地文件系统的各种操作系统特定功能。
上述例子示例了与现在的用于分布大文件的系统有关的局限性和问题。因为这些问题,所以存在着对于使用更有效的方式来交付大的有效负载的方法和设备的需求。

发明内容
本发明的一个实施例提供了用于遍及计算机网络来分布大文件和将这样的文件交付给最终用户系统的改进的机制。当本发明被实施时,它为多个用户提供了一种在不使网络资源负担过度的情况下获得对大的有效负载文件的访问的方式。例如,如果用户希望下载一个大文件例如视频文件,本发明的一个实施例提供了一种在不给网络造成紧张的情况下把那个视频文件交付给请求的用户的方式。系统通过把大文件分成多个部分并把那些部分存储在遍及网络分布的位置(例如,节点)中来实现这一点。使用为大数据文件的智能管理提供的流程优化技术来分布遍及网络存储的各部分。这样,大数据文件的各部分被存储在使得把该部分交付给最终用户系统所花费的总的时间最小的位置。这些位置被本领域的普通技术人员称为网络的边缘。
具体实现本发明的各方面的在网络边缘上的每一个节点被配置为当文件的各部分被真正地存储在遍及网络的其他节点上时看起来好象它具有本地存储的大文件。这在没有消耗系统资源的情况下大大地增加了每一个网络节点的虚拟存储能力。当最终用户系统发出对内容(例如,大的数据文件)的请求时,请求被发送到最近的节点,系统以在最小化带宽消耗的同时使得数据传送效率最大化的方式交付所请求的内容到该节点。最终的结果是每一个网络节点在不必本地地存储那些数据文件中的每一个的情况下访问到了大量的大数据文件。
在本发明的一个实施例中,系统被优化使得可以使用传送层网络覆盖来在现有网络(包括因特网和企业内部网)之间分布大有效负载文件,以便把内容推进到网络的边缘。特别地,本发明的实施例提高了大有效负载交付性能、可伸缩性、可靠性和可用性。
如上所述,本发明的一个实施例把大有效负载文件分成多个部分。这可以通过有选择地把大有效负载文件分割成被复制和分配到位于网络边缘上的多个分布通信站(又名节点)的块。每一个分布通信站被配置为基于诸如用途、流行性等信息来确定多少内容被本地保存。内容提供者定义什么样的分布通信站作为分布通信站是合格的,并且也可以定义其它的分布标准。网络中的分布通信站管理存储器和互相传送内容(例如大有效负载文件的各部分)和其它的信息。大有效负载文件的不同片段可以从不同的节点获取,但是,例如当用户请求通过一个应用服务器(例如,流型服务器)访问该大有效负载文件时,虚拟文件控制系统产生整个文件现在就在所连接的节点上的错觉。但是,由于仅仅大有效负载文件的被选择的部分在请求时可能实际地驻留在节点的存储器上,分布通信站可以在该应用服务器服务于该用户时下载该文件的没有驻留的部分。没有驻留的块可以并行地并且通常从最少拥堵的节点来下载。整个过程对用户是透明的。
被请求文件的被请求部分被接收并且使用一个或多个被称为虚拟文件控制系统服务器的相关服务器实时地重新汇编。虚拟文件控制系统把重新汇编的文件提供给服务于客户机的应用服务器。虚拟文件控制系统可以被实现为可堆叠的文件系统,作为使用基本的网络文件系统例如NFS或CIFS的代理文件服务器、存储区域网络(SAN)或直接访问的存储器,或者实现为这些方法的组合。无论哪一种实现被使用,虚拟文件控制系统从基本的文件系统获得该内容。
可伸缩内容交付网络通信站在地理上分散到网络的边缘以便最好地为位于边缘外的最终用户客户机系统服务。最终用户客户机对数据的请求自动地由最近的最不拥堵的通信站来服务。在本发明的一个或多个实施例中,可伸缩内容交付网络被综合到现有的在因特网的边缘的服务中来利用这些服务(例如,在本发明的一些实施例中的应用服务器可以是在服务提供者的现有系统基础中运行的流型服务器)。
在一个或多个实施例中,新的节点可以在没有服务中断的情况下被添加到网络中。随着新的节点的添加,它们从网络中的其它节点了解到它们应该有什么内容并且把所需的期望数量的内容从最近的和最少拥堵的节点下载到它们的本地存储器上。这样,一个节点可以被添加到网络中,并且在自预置后被启动并运行。
在一个或多个实施例中,保留在每一个节点的大有效负载文件的部分和总量依赖于可使用的存储器、内容的流行性、内容提供者的分布条件等。这样,大有效负载文件的最不可能被使用的块可以被删除(即,从本地存储器删除)来为其它高度期望的内容腾出空间。但是,尽管文件的最不可能被使用的块被删除,只要内容提供者希望内容保留在网络中,大有效负载文件的全部内容可以被保留在可伸缩内容交付网络中的一个节点上。


图1是内容交付的超高速缓存方法的一个示例。
图2是连接到播放器的典型的流型服务器的一个示例。
图3是使用镜象法把内容推进到网络边缘的网络内容交付方案的一个示例。
图4是使用多点传送技术把信息推进到网络上的多个服务器的分布网络的一个示例。
图5是依据本发明的一个实施例的用于交付大有效负载的可伸缩内容交付网络的一个示例。
图6是依据本发明的一个实施例的用于控制信息通信的节点的虚拟树结构的一个示例。
图7是依据本发明的一个实施例的分布中心的简化布局。
图8是本发明中使用的线性和非线性文件结构的一个示例。
图9显示了依据本发明的一个实施例的把大有效负载文件分解成块文件来存储的过程。
图10是依据本发明的一个实施例的被分解的大有效负载文件的一个示例。
图11是显示从多个块文件重构一个大有效负载的示意图。
图12是依据本发明的一个实施例的属性位图和积累(rolled up)位图的一个示例。
图13是一个大有效负载文件在本发明的网络中的分布的一个例示性实施例。
图14是可伸缩内容交付网络的另一个实施例的例示性例子。
图15是依据本发明的一个实施例的可伸缩内容交付网络通信站的一个示例。
图16提供了图14的可伸缩内容交付网络的一个替代示例。
图17是依据本发明的一个实施例的分布服务器簇配置的一个示例。
图18A-18C提供了依据本发明的实施例的应用服务器簇的三个例示性实施例。
图19用于示例依据本发明的一个实施例的虚拟文件控制系统服务器的操作。
图20是依据本发明的一个实施例的在可伸缩内容交付网络中的一个通信站的控制单元和数据的一个示例。
图21A到21G是依据本发明的实施例的通信站操作和数据流的例示性例子。
图22是依据本发明的一个实施例的在VFCS初始化过程期间执行的VFCS服务器的操作的流程图。
图23显示了在运行期内执行的VFCS服务器操作。
图24是图20的内容管理和使用数据库的内容的示例。
图25示例了在可伸缩内容交付网络中新的节点是如何通过了解和下载它们应该具有的内容来自适应地初始化的。
具体实施例方式
的详细描述本发明的一个实施例提供了一个用于遍及计算机网络分布大文件(被称为大有效负载)和把这样的文件交付给最终用户系统的改进的机制。在下面的描述中,阐述了很多具体的细节来提供本发明的实施例的更详尽的描述。但是,对于本领域的普通技术人员显而易见的是,没有这些具体的细节本发明也可以被实施。在其它的例子中,众所周知的特征没有被详细描述以便突出本发明。
当根据本发明的一个实施例实施本发明时,它为最终用户系统提供了一种访问大有效负载文件而不会使由最终用户系统用来传送数据的网络超负荷的方式。在本发明的一个实施例中,系统通过把大有效负载文件分割成多个部分并且把那些部分存储在遍及网络分布的位置(例如,节点)中。遍及网络存储的所述部分使用为大有效负载文件的智能化管理提供的流程优化技术来分布。这样,大有效负载文件的各部分被存储在使得将所述部分交付给最终用户系统所花费的时间最小的位置中。这些位置使得与将该文件交付给最终用户系统相联系的等待时间最小化,在这里被称为网络的边缘。
实现本发明的各个方面的在网络边缘的每一个节点被配置为当文件的各个部分实际上被存储在位于遍及网络的其它节点中时看起来好象它具有本地存储的大有效负载。这在不消耗系统资源的情况下大大地增加了每一个网络节点的虚拟存储容量。当最终用户系统发出对于内容(例如,大有效负载)的一个请求时,请求被传递到最近的节点并且系统以在最小化带宽消耗的同时最大化数据传送效率的方式把所请求的内容交付给该节点。最终结果是每一个网络节点都访问了很多大数据文件而不必在本地存储那些数据文件中的每一个。这样,本发明的一个或多个实施例提供了不带有与现有技术的内容交付方法相联系的成本、可伸缩性、加载均衡和其它问题的将大有效负载交付给网络的边缘的有效的方法和设备。
图5提供了依据本发明的一个实施例的用于交付大有效负载的可伸缩内容交付网络(SCDN)的视图。SCDN 500可以是一个诸如因特网的网络,它在概念上包括一个网络核心505(即主干)、离核心“近”和“远”范围内的中间网络段510和离核心“远”的网络段520A到520C(统称为520)。“近”和“远”与距离有关并且想要指示到核心的相对路径等待时间(分别是短或长),这样的等待时间一般依赖于所经过的以到达形成网络核心的高速主干并且通过其传递大多数网络通信量的中间网络集线器(例如,交换机、路由器等)的数量。注意,每一个中间网络集线器可以在把所述通信量转发到下一个网络集线器之前执行一些有限的、增加了等待时间的处理。
图5显示了多个内容提供者客户机(CPC)系统530、多个最终用户客户机(EUC)系统550和一个或多个内容管理服务器(CMS)570,所有的这些都位于网络边缘501以外。通常,内容提供者客户机530可以被连接(或分配)到一个内容管理服务器570,它依次被连接到其指定的分布中心540。内容提供者通过其CPC530上载和/或管理SCDN500中的大有效负载文件。EUC550提供对SCDN500中的文件的最终用户访问。例如,EUC550可以是在最终用户的本地计算机上运行的一个浏览器。
网络边缘501一般地可以远离网络核心505。但是,核心和边缘之间的距离(即路径等待时间)不是相同的,并且对于给定的CPC或EUC变化相当大。本发明的一个实施例在网络边缘放置了多个用于保持大有效负载的分布中心(DC)540A-540I,从而解决了等待时间问题。来自内容提供者的大有效负载内容从一个分布中心推进到位于网络边缘的另一个分布中心。寻求对大有效负载的访问的最终用户由包含合乎要求的内容的最近的分布中心(通过一个应用服务器)来服务。通过把内容通过多个应用服务器560和位于边缘的分布中心540分布到最终用户(例如,EUC 550上),路径等待时间被最小化。这样,大有效负载分布包括从内容提供者获得一个大有效负载文件并且在地理上把这样的文件放置在位于边缘上的或尽可能接近网络边缘的分布中心上。
例如,图5的SCDN500中的分布中心540A-540I以图6中示例的树的形式虚拟排列。这个虚拟树结构主要用于控制信息在可伸缩内容交付网络的节点之间的通信。数据下载可以从具有期望的数据的网络中的任何节点、最好是最近的节点(在距离方面)执行。图6的节点A到I分别代表DC 540A到540I。节点以逻辑顺序排列。例如,假设节点B代表欧洲-英国,则在欧洲的逻辑子节点可能是欧洲-法国(例如,节点D)和欧洲-德国(例如,节点E),欧洲-法国的子节点可能是欧洲-意大利(例如,节点H)。在这个例子中,树的左侧代表欧洲,右侧可以代表亚洲。节点A是根节点,例如可以代表中心控制站。在一个或多个实施例中,树中的每一个节点具有代表节点的名字的唯一的属性集。对于一个节点的属性集被存储在节点中并且可以用任何常规的数据结构表示。例如,属性集可以被表示为可变的位图(位图是一个目标、例如一个数字的二进制表示)。每一个节点也包含每一个节点的子节点、孙节点、重孙节点等(即,从作为一个根节点的那个节点发源的所有节点一直系子代)的属性集的表示。这个表示被称为“积累属性集”并且常规的数据结构都可以用于它。这样,一个节点的积累属性是它的子节点的积累属性的表示。例如,可以使用一个“积累位图”,它是该节点的所有子节点的积累属性位图的组合。一个“卷积位图”可以被定义为节点的子节点的积累属性的“二进制OR”(也称为逐位OR)。图12是根据本发明的一个实施例的属性位图和积累位图的一个示例。出于例示目的,位图1200、1210、1220、1230、1240和1250使用16位,但因为位图是可变的,它们可以根据需要变化以识别每一个节点并且提供其它必要的信息。
表示图6的节点B的属性集的位图1200具有作为它的标识的被设置为1的位1、4和13和被设置为0的所有其它位。因为节点B是A的一个子节点,所以可以设置位1,例如,位4可以被设置为表示欧洲,位13被设置为表示英国。表示作为B的一个子节点的图6的节点D的属性集的位图1210具有被设置为1的位1、4和14和被设置为0的所有其它位。例如,位14可以表示法国。表示也是B的一个子节点的图6的节点E的属性集的位图1220具有被设置为1的位1、4和15和被设置为0的所有其它位。例如,位15可以表示德国。表示作为D的一个子节点的图6的节点H的属性集的位图1230具有被设置为1的位1、4和16和被设置为0的所有其它位。例如,位16可以表示意大利。如前面所讨论的,节点D的积累位图(例如,1240)将作为节点H的属性位图(因为H没有任何子节点),节点B的积累位图(例如,1250)是位图1210、1220和1230的二进制OR。二进制OR的结果是在位图1210、1220和1230中设置的所有的位也被设置在积累位图1250(即,位1、4、14、15和16)中。
内容管理服务器570可以被连接到树上的任何一个节点。这样,尽管一个内容管理服务器和一个分布中心可能未被并置在同一处,内容管理服务器为内容提供者提供了一个载体来把大文件(例如,视频)上载到分布中心。在一个实施例中,内容管理服务器是一台处理内容提供者的大有效负载文件以供在网络中分布的计算机。在另一个实施例中,内容管理服务器例如可以是允许把内容上载到网络的工具的子集(例如,与机器无关的目标);这样,这些工具可以从一个服务器运送到用于网络中的大有效负载文件的处理和分布的内容提供者客户机的计算机。在内容提供者把大有效负载文件加载到内容管理服务器中后,CMS可以处理该文件并且把它转发到分布中心。
根据本发明的一个实施例,在图7中示例了分布中心的一个简化布局。分布中心700包括控制单元701、一个或多个虚拟文件控制系统702、一个或多个分布服务器703和多个存储设备(例如,711-713)。控制单元701是分布中心的网络管理者,它的功能将在后面的部分中进一步讨论。不属于分布中心700的一部分的应用服务器721-724(例如,流型服务器、FTP服务器和媒体播放器)在本示例中被显示连接到虚拟文件控制系统702以提供对于最终用户客户机如何访问存储在SCDN中的大有效负载文件的可见性。分布服务器700的部件可能没有被布置在相同的节点中。例如,VFCS 702可以与应用服务器(例如,721-724)在一起,控制单元(例如,CU 701)可能位于别处,例如与VFCS 702在一起。这样,对于分布服务器700的所有部件不需要共同位于一个SCDN节点上。
内容提供者使用在一个内容提供者客户机系统上运行的内容出版和管理工具把大有效负载文件上载到一个单个的内容管理服务器。在接收到该文件后,CMS处理该文件并且如果需要的话把它分成磁道文件(也称为线性文件)。一个线性文件包括保持与文件的实质(即,实质性内容)有关的顺序。例如,如果线性文件包含一部电影,文件的开头将包括电影的开头部分。类似地,电影的中间和结尾部分将位于线性文件的中间和结尾。例如,线性文件合乎要求是因为它更容易使用线性叠加来重新汇编。一些媒体文件不是线性的,也就是,它们包含多个磁道,使得例如电影的第一部分没有存储在文件的开始。在把该文件拆分成线性(即,磁道)文件后,CMS把该文件传送到它连接的分布服务器。分布服务器进一步把磁道文件拆分成块文件,成为合乎存储器要求的。例如,接着块文件可以存储在本地存储单元711-713中。接着使用文件分布协议(例如,FDP)命令来把该文件或其选定的部分分布(即,复制)到可伸缩内容交付网络中的其它分布服务器节点。对于最初的复制,整个块文件不需要被存储在所有节点中,但是一个原版拷贝可以完整地保留在一个节点(典型地是源节点)中。FDP包括便于在SCDN内的文件传送和操作的命令。块的大小影响内容分布和内容交付的性能并且将在这个文本的后面讨论。
虚拟文件控制系统(VFCS)702能从块文件拼回到一起成为原始(大有效负载)文件。如同后面将解释的,大有效负载文件的所有块不需要存储在一个分布中心上,但是整个文件在SCDN中可用。当一个最终用户连接到应用服务器721(例如流型服务器)时,VFCS产生一个整个文件在那个节点可以得到的虚拟表现。例如,假设仅仅两个千兆字节的文件的50%被存储在存储器711-713中,VFCS使流型服务器721认为整个两千兆字节在该位置是可得到。这样,流型服务器721可以开始播放这个文件。随着文件被播放,VFCS与DS通信来从网络中的其它节点定位和检索该文件的剩余部分。
分解大文件大有效负载文件在若干步骤中被分成多个块,确切的过程依赖于它是否是线性文件或非线性文件。例如,使用一个电影文件,如果这个电影的第一个10%近似地位于文件的第一个10%中、下一个10%位于文件的下一个10%中,等等,则该文件是线性的。相反,在电影的第一个10%位于不是文件开头的其它地方的电影文件被认为是非线性文件。
线性和非线性文件结构的例子示例在图8中。数据格式800可以表示例如是线性的mpeg格式,因为它从开头开始在一单个磁道中包含在整个文件中被多路复合在一起的音频/视频数据。注意,各种格式的每一个子部分表示一个磁道,因此格式810-830中的每一个包含多个磁道。如图所示,格式810是非线性的,因为它在文件的第一磁道中包含首部信息,接着在下一个磁道中跟着有元信息,然后在第三磁道中包含着视频信息,然后在第四磁道中包含着元信息,在第五磁道中包含着第一音频信道,在第六磁道中包含着第二音频信道,然后在最后包含着一些控制信息。这样,格式化为格式810的电影的开头将不位于文件的开头。格式820和830是其它可能的非线性媒体数据格式的表示。例如,格式820可以使数据被格式化为使得该文件在开头包含首部信息,然后是诸如mpeg的格式的一些56K编码,后面跟着128K的编码信息。其它媒体格式830可以包含首部信息,后面跟着索引信息,后面跟着视频,最后是音频信息。为了与在这个说明书的后面要讨论的复制算法兼容,所有的这些和其它非线性文件需要首先被转换成线性文件。
图9显示了把大有效负载文件分解成块文件以供存储的过程。在内容提供者把文件上载到内容管理服务器(CMS)之后,CMS判定文件是线性的还是非线性的。如果该文件是线性的(例如,块950),例如一个mpeg电影,CMS把数据发送到在块930上的DS进行分块处理。然而,如果文件是非线性的(例如,块900),则CMS在块910执行去多路复合过程以产生线性磁道文件920。去多路复合过程涉及将非线性(即,多个磁道)文件分解成分别包含单个磁道的文件。例如,采用如图10所示的媒体数据作为示例,大有效负载文件1000包含第一磁道中的首部、第二磁道中的视频、第三磁道中的第一音频信道、第四磁道中的第二音频信道以及最后的第五磁道中的控制信息。内容管理服务器将大有效负载文件1000拆分成五个线性磁道文件1010,使得一个文件包含首部,第二个文件包含视频数据,第三个文件包含第一音频信道,以此类推。
再参考图9,线性磁道文件920或线性大有效负载文件950(也是一个线性磁道文件)由CMS在网络上发送给它所连接的一个DS。文件可以根据下面讨论的文件分布协议(FDP)来发送。将来自CMS的文件输入到一个基于DS的分块过程930,基于DS的分块过程930产生块文件940。块文件940随后被存储在DS的本地存储器中。在处理之后,内容可以由网络中的其他分布服务器下载。一般地,在网络上传送的文件的大小与存储在DS的本地存储系统中的块文件之间不需要有直接的关系。
分块过程930将磁道文件拆分成更小的可管理的单位,如图10的块1020中所示。分块过程产生多个块文件H、V1-4、A1.1-1.2、A2.1-2.2和C(统称为图10中的1020)。块文件可以包含数据重叠或偏移(例如,移位)。例如,块文件V4可以包含首部磁道的一些部分,等等。在本发明的一个或多个实施例中对块文件的唯一的要求是每个磁道的开头被包含在为该磁道创建的第一个块文件中,例如,音频信道1的开头被包含在A1.1中,音频信道2的开头被包含在A1.2中,等等。其他实施例可以在不首先经历去多路复合过程(例如,块910)的情况下仅仅将大有效负载文件(即,非线性)直接拆分成块文件,从而每个块文件可以包含重叠的磁道。将大有效负载文件拆分成块使得能够将块文件分布到不同的存储设备中,并在不影响系统性能的情况下在需要时添加新的存储设备。因此,例如,更多的存储设备可以被添加到分布中心(图7),而不需要象现有技术中一样将文件移来移去或重新配置其他节点。例如,不同块可以位于SCDN的不同节点,因此位于不同的存储设备上。较小的块文件使得能够在同一时间支持多个应用服务器(例如,流型服务器),从而增大访问带宽。例如,一个大有效负载文件的多个块文件可以并行下载。在未首先将整个文件下载到流型服务器的情况下由用户进行的快进和快倒也是可能的。
从块文件重构大有效负载文件图11是显示由VFCS从多个块文件重构一个大有效负载文件的过程的示意图。块文件1100被输入汇编过程1110。如前面一个部分所讨论的,分块的逆过程被称为“汇编”。虚拟文件控制系统(VFCS)使用汇编过程1110来将多个块文件变换成线性磁道文件。如果原始大有效负载文件是线性的,汇编过程1110只产生一个线性磁道文件(例如,线性大有效负载文件1150)。然而,在原始大有效负载文件是非线性的时,汇编过程1110产生多个线性磁道文件1120。线性磁道文件由适当的块文件的线性组合来产生。例如,图10的视频磁道文件通过对块文件V1、V2、V3和V4进行线性组合(即,求和)来重新产生。线性磁道文件1120可以进一步在多路复合过程1130中组合,以产生非线性大有效负载文件1140。多路复合过程仅仅对磁道文件进行重新汇编以产生原始非线性大有效负载文件。
文件分布协议(FDP)FDP协议定义了传送、存储和操纵内容提供者文件和存储在网络中的文件元数据所需的文件管理基元。这种基元包括上载、分布、交付、修改和删除文件的命令。FDP命令产生在网络中的适当的服务器之间传送的一个或多个包。对于本领域普通技术人员来说显然的是,这里所描述的命令名字和协议实现是为方便而使用的,只要产生网络内有效的和可靠的文件传送,其他命令或协议可以被添加、删减或替代。
“放置(Put)”内容提供者使用在内容提供者客户机系统上运行内容管理应用程序来将一个文件(内容)和文件元数据(与在网络中被存储、传送和操纵的文件的管理有关的数据)上载到内容管理服务器(CMS)上。CMS将文件分成线性磁道文件,然后向一个最终在网络中分布该内容的DS发出一个“放置”命令。在一个实施例中,CMS连接到在一个SCDN节点的DS。CMS为每一个磁道文件向DS发送一个“放置”命令。事实上,“放置”命令是一个“推进”动作,将一个磁道从一个CMS推进到一个DS。“放置”命令可以包括四个包,例如“放置”、“放置_响应”、“放置_组块”和“放置_应答”。“放置”包告诉接收DS准备好接收一个磁道文件。“放置_响应”包是一个由DS发出的包,向CMS指示该DS是否需要接收该磁道文件,如果需要,从哪里开始传输。在一个磁道文件的一部分已经被传送之后通信对话期被打断并且CMS需要重新传送文件的剩余部分时的情况下,这个包可能有用。一旦DS告知CMS从哪里开始传送一个磁道文件,CMS可以与实际的磁道文件一起发出一个“放置_组块”包。DS在接收到整个磁道文件时可以以一个“放置_应答”包作出响应,以表明成功的传输。在接收到磁道文件之后,DS将线性磁道文件分成块文件,将块文件存储在本地存储器中,并更新文件元数据以反映该磁道、块和位置信息。
“分布(Distribute)”在所有磁道都已经被推进到DS之后,CMS可以发出引导DS将文件分布给网络中的其他节点的“分布”包。例如,CMS可以为每个磁道文件发出一个“分布”包,每个包都包含内容提供者的分布标准。分布标准例如可以指定网络中的哪些节点应该具有该内容。“分布”命令可以包括两个包,例如“分布”和“分布_应答”。DS可以通过向CMS发出一个“分布_应答”包来对接收到“分布”命令和磁道文件作出肯定应答。
“复制(Replicate)”响应于“分布”命令,DS可以向其邻节点发出“复制”包。每个满足由内容提供者规定的分布标准的邻节点可以向分布路径中的一个或多个DS发出一个命令(诸如下面描述的“获取”包),以便将文件的一部分拉入其本地存储器。“复制”包从已经推进了磁道文件的DS开始。“复制”包用作对DS的关于它可能需要将来自任何一个发送的DS的特定块文件拉入(即,复制)到其本地存储器的通知。接收的DS可以通过发出一个“复制_应答”包来对该通知作出肯定应答,然后,它在准备好时承担从发送的DS拉入块文件的责任。一个DS通过向它们发出“复制”包来进一步通知其相邻节点以确定它们是否应该拉入部分或整个文件。如果积累属性匹配内容分布标准,一个DS可以向其子代节点发出一个复制请求。
“获取(Get)”一个需要从另一个DS拉入文件的DS例如可以发出一个“获取”命令。“获取”命令可以包括四种类型的包“获取”、“获取_响应”、“获取_组块”和“获取_应答”。例如,“获取”包可以用于启动一个拉入,“获取_响应”包可以用于报告通信站的状态和在需要时传送文件元数据。“获取_组块”包可以用于传送文件数据,“获取_应答”包可以用于对“获取”序列的结束作出肯定应答并报告状态。DS可以基于下列因素来决定要拉入的文件的大小(1)其存储器可用性;(2)网络图中通信站的位置;(3)内容的流行性;(4)文件的可截取或不可截取特性;以及(5)带宽容限。DS可以响应于“复制”请求和“搜索_回答”请求发出“获取”命令序列。
“准备(Prepare)”“准备”命令可以包括两个包,例如“准备”和“准备_应答”。节点的VFCS可以向一个DS发出一个“准备”包以便为一个应用服务器拉入文件的未驻留部分。DS可以使用“准备应答”包来应答它已经接收到“准备”包以及它将尽可能快地执行“准备”。
“搜索(Search)”当DS可以处理“准备”请求时,它可以发出一个“搜索”命令来定位一个文件的缺少部分。“搜索”命令可以包括三个包,例如“搜索”、“搜索_应答”和“搜索_回答”。一个服务于“准备”命令的DS发出一个“搜索”包来启动在其邻节点中的对文件的未驻留部分的搜索。每个邻节点可以发出一个指示它已经接收到“搜索”请求的“搜索_应答”包。“搜索_应答”包不是DS具有所请求文件的部分的肯定应答。具有所请求文件的一部分的节点可以发出一个“搜索_回答”包。“搜索_回答”包可以包括诸如驻留在通信站中的所搜索文件的部分、通信站的网络条件以及通信站的DS簇的负载之类的信息。启动DS簇中的一个DS接收“搜索_回答”包,并且可以基于“搜索_回答”包中的信息选择合适的远程DS节点来下载文件的缺少部分。启动DS簇中的一个DS例如可以向一个或多个通信站(即,选定的SCDN节点)发出“获取”命令来下载缺少的内容。
“移去(remove)”“移去”命令可以包括两个包,例如“移去”和“移去_应答”。节点控制单元可以向DS发出一个“移去”命令来移去某些块。后面将描述的修剪过程使用该“移去”命令。“移去”包是对DS的某些块必须被移去的通知。DS随后可以发出一个“移去_应答”包来应答它将在准备好时最终移去所指示的块。
“清除(clean)”“清除”命令可以包括两个包,“清除”和“清除_应答”。CMS可以发出一个“清除”或类似的包以通知位于同一节点的一个DS它需要移去一个特定文件。DS发出一个“清除_应答”或类似的包来应答文件将在准备好时最终被移去。按照在“复制”命令期间使用的路径(在该文件的分布标准中可得到的),DS向它的请求从SCDN中的所有通信站删除文件及其相关文件元数据的相邻节点发出一个“清除”或等效命令。
“信息(Info)”“信息”命令可以包括两个包,例如“信息”和“信息_应答”。CMS发出一个“信息”包以便向一个DS传送内容提供者元数据(与使用SCDN的内容提供者的管理有关的数据)或文件元数据。该包可以用于添加、删除和修改特定内容提供者或文件的属性。当一个DS接收到内容提供者信息时,它修改在一个SCDN节点内的存储内容提供者元数据的表,向请求者(CMS或DS)发出“信息_应答”包,然后向它的除了请求者之外的所有邻节点发出“信息”命令。将一个包含内容提供者信息的“信息”包在整个SCDN中传播。将一个包含文件元数据的“信息”包基于该文件的分布标准来传播。当一个CMS将文件元数据的“信息”包与文件的分布标准一起发送给一个DS时,接收的DS修改其包含文件元数据的数据库,向请求者(CMS或DS)发出“信息_应答”包,然后向那些满足分布标准的邻节点(即,那些在“复制”命令期间接收到文件的分布的节点)发出“信息”包。这个过程一直持续到在满足分布标准的所有通信站中的包含文件元数据的数据库被更新。
“学习(learn)”“学习”命令可以由一个控制单元的学习代理发出,并且可以在将一个DS添加到SCDN并且其本地存储器需要被初始化时、或者在通信站的属性改变时、或在网络配置改变时、或在从一个故障恢复期间使用。接收“学习”命令的DS将“学习”命令传播给它的除了请求者之外的所有邻节点。“学习”包携带有起始通信站的属性。每个接收“学习”包的DS确定其通信站是否具有满足学习通信站的属性的文件,如果是,它向学习通信站中的一个DS发出“复制”来拉入相关文件。
“取(fetch)”“取”命令可以在以活动方式学习的同时由控制单元的学习代理来使用。“取”命令可以包括两种类型的包“取”和“取_应答”。在活动学习模式中,学习代理获得要学习的媒体文件的列表、其相关内容提供者以及内容提供者的CMS的指定通信站。在此期间,这些媒体文件的文件元数据不是在本地通信站中准备好的,因此DS不具有信息来进行搜索和下载文件。学习代理将一个“取”包与内容的起始通信站一起发给一个本地DS。DS随后向内容提供者的CMS的指定通信站的一个DS发出一个“取_信息”包。在DS获得想要的媒体文件的文件元数据之后,它将信息存储到包含文件元数据的数据库中,并向学习代理返回“取_应答”。学习代理随后可以进行到发出“准备”命令来下载媒体文件。
“取_信息(fetch_info)”“取_信息”包括两个包,“取_信息”和“取_信息_块”。每个“取”命令在其内对一特定媒体文件和一个被许可具有该媒体文件的特定DS的标识进行编码。响应于“取”命令,一个DS向在“取”中标识的DS通信站发出“取_信息”。远程DS可以以“取_信息_块”回答,“取_信息_块”包含使得本地DS将媒体、磁道和块元数据信息保存到本地元数据存储器中所必须的信息。
“停止(Stop)”“停止”命令可以包括两个包,例如“停止”和“停止_应答”。“停止”命令用于关闭一个DS。当一个DS接收到一个“停止”包时,它立即以“停止_应答”进行回答,并且,根据结束需求,DS可以立即关闭或在它完成正在执行的所有任务之后关闭。
分布大有效负载文件为了分布一个文件,内容提供者设置用于该文件的具体分布标准。在分布服务器(DS)将上载的大有效负载文件存储为块之后,内容提供者通过内容管理服务器请求DS将文件分布到SCDN中的其他节点,即,将内容推进到网络的边缘。分布是按照由内容提供者设置的具体分布标准进行的,可以使用前面描述的文件分布协议(FDP)。分布标准可以指定区域(例如,欧洲)、具体节点和内容提供者所期望的其他信息,以控制内容的分布。例如,分布标准可以包括在节点属性或积累属性位图中找到的信息。
文件分布的进行如下(1)DS通过向其邻节点发送一个通知(即,分布请求)以宣布文件的存在和分布标准,响应于内容提供者的请求来分布一个大有效负载文件;(2)“合格的”邻节点(即,那些满足标准的邻节点)在这个初始分布过程期间下载文件的几个部分;(3)通知然后从邻节点传递给邻节点,但不传递回从其接收到分布请求的邻节点;(4)每个邻节点执行步骤2和3,直到它遭遇一个叶节点或一个“终止”节点。这样,网络中文件的分布被逐级完成。
接收到一个分布请求的每一个节点将该请求传送给它的除了“请求”节点(即,它从其接收到请求的节点)之外的所有邻节点。一个终止节点是一个该节点的属性位图及其积累位图都与分布标准不匹配并且分布请求不能被发送给该节点的父节点的节点。对于其属性位图与该文件的内容提供者的分布标准匹配的任何节点,从具有要下载的部分的分布路径中的最近的邻节点下载文件的一部分。一旦下载,如图7所示,DS将该文件本地存储为在不同的存储卷上展开的块,块711-713。在几个存储卷上展开该文件的过程中,输入/输出(I/O)负载在卷之间分布,因此在内容分布和内容交付期间提高了DS的整体性能。为了本发明的目的,存储卷可以是存储设备的任何集合,例如附在服务器上的盘阵列、RAID(独立盘的冗余阵列)系统或网络附加存储器(NAS)或存储器区域网络(SAN)。
图13是SCDN中的一个大有效负载的分布的例示实施例。内容提供者使用在内容提供者的客户机系统(CPC)530上运行的任意内容发行和管理软件把大有效负载文件上载到被连接到SCDN的节点B的内容管理服务器(CMS)570中。内容提供者还把分布标准上载到CMS 570上。如前所述,内容管理服务器570把所上载的文件分成磁道文件并且为每一个磁道文件发出类似于FDP“放置”命令的命令到位于节点B中的分布服务器。在其他实施例中,CMS可以被连接到SCDN的任意节点。在节点B,DS把磁道文件分成块文件用于本地存储。文件的完全拷贝显示在用点填充的节点B上。然后,CMS向在节点B的分布服务器发出类型“分布”的FDP命令。响应于分布命令,DS向它的邻近节点A、D和E发出一个命令来复制该内容(例如,使用FDP的“复制”命令)。节点D检测复制包并判定它不应该具有该内容,因此它把复制命令转发到它的邻节点、节点H。节点A、E和H检测复制包并判定它们都匹配分布标准(即,它们是“合格的”节点)。当就绪时,节点A、E和H发出命令来从SCDN中的最近的节点(例如,节点B)检索该文件的一部分。节点E和H是叶节点,因此它们不传播该复制命令。但是,节点A是带有子节点B和C的根节点。节点A不能把复制命令发回到节点B,因为它是起始节点。但是,节点A可以把复制请求发送到节点C。节点C检查分布标准并判定它是一个合格的节点,因此它从包含所需数据的最近的节点(例如,最近的节点A、B、E和H)检索该文件的一部分。接着节点C把复制命令发送到节点F和G。节点F是合格的,因此它从具有该数据的最近的节点(例如,节点B或C)检索该文件的一部分。节点G和I是不合格的,因此它们什么都不接收。节点G是终止节点,因为它的分支的积累属性不满足分布标准。这个初始复制过程一直持续到SCDN中的所有合格的节点至少被部分地填充。在一个或多个实施例中,大有效负载文件的相同部分(例如,块)包含在SCDN的至少一个节点中。最好地,多个节点包含相同的部分,从而产生冗余,并且当一个或多个节点或存储卷变得不可用时防止大有效负载文件的任何部分的丢失。例如,当一个存储卷(或设备)变得不可用(即,丢失)时,在那个通信站的DS不需要采取任何专门的行动来恢复被损坏的卷的内容,因为在那个卷中所存储的并因此丢失的大有效负载的部分根据需要被自动从其它网络节点下载以服务于用户请求。分布服务器还将一个失败的通信站的控制信息中继到失败的通信站的相邻通信站以防止控制命令的不适当的结束。
在正常操作期间,分布服务器发送FDP命令,例如复制、信息、搜索和清除命令,这些命令通过在它的控制路径中的紧邻的相邻通信站中的其它分布服务器被转发到全部或部分网络。例如,当分布服务器接收一个FDP命令、例如复制或信息时,它基于FDP分布标准把该命令发送到它的相邻DS。在当一个相邻通信站失败时的情况中,DS将该任务保持在它的任务队列中,并重复地重试直到该任务被成功地完成。同时,DS通过把FDP命令转发到失败的通信站的相邻DS来在失败的通信站中临时地承担DS的角色。
FDP使用内容提供者的分布标准来把大有效负载文件的分布—全部或部分—引导到满足内容提供者的分布标准的网络中的所有节点。分布请求可以从树中的任意节点开始,上下周游该树,直到它到达了一个叶节点或到达了一个终止节点。对于具有适当属性的任何节点,如果那些邻节点包含要被下载的文件的部分,文件被从满足特定性能标准的最近的邻节点部分地下载。当下载内容时,最近的邻节点不必是虚拟树中最近的,而是在距离上最近的。这防止了自文件最初被上载的节点的大量传输。进而,该分布的分级特性防止对初始节点(例如,节点B)周围的网络的过度的需求。通过交付更小的块和仅仅一部分文件,该交付方法减少了网络负载。另外,因为当分布请求到达一个“终止”节点时分布请求停止通过SCDN前进,本发明防止了不必要的分布请求包溢满该网络。
访问大有效负载文件最终用户可以通过最终用户客户机系统上的一个接口、例如网络浏览器来请求对大有效负载文件(例如,电影)的访问。该请求被转发到一个将把文件提供给最终用户的合适的应用服务器(即,离最终用户更近并且具有服务于该请求的带宽的一个应用服务器),例如,用于交付大视频文件的流型服务器,或用于交付大的媒体丰富文件的FTP服务器,或能把VFCS安装为它的远程文件系统以访问SCDN中的内容的任何媒体播放器。应用服务器位于网络中,这样可以被连接到SCDN的最近的节点。SCDN节点的存储卷(即,超高速缓存存储器)可以包含最终用户的所请求的文件的一些、一点也没有、或所有的块。如果文件的额外的或者全部的内容需要在应用服务器上,SCDN节点的VFCS代表该应用服务器与一本地DS进行通信,以便向所有的DS的邻居发出搜索请求来定位文件的所需(未驻留)部分。
例如,假设所请求的大有效负载文件长度为10G字节,对应于总共20块的500M字节的存储器(即,如果每一块是500M字节)。进而,假设仅仅6块这样的500M字节块本地驻留在SCDN节点中。即使仅仅所请求文件的3G字节实际上存储在SCDN节点的存储系统中,整个文件通过VFCS“看起来”本地存在于应用服务器上。应VFCS的请求,随着应用服务器把该文件注入最终用户,文件的未驻留部分被从SCDN中的不同的分布服务器拉入并在本地存储。文件的各部分可能从几个分布服务器同时地检索。典型地,在SCDN上接收的数据被存储为共享的存储器(例如,本地存储卷)中的块。VFCS把存储的块文件实时地汇编并多路复合成10G字节的文件,这样应用服务器可以使用它(例如,把文件注入最终用户)。
为了定位文件的未驻留部分,DS簇中的一个DS发出一个从它的相邻节点开始周游SCDN树的搜索请求。该搜索请求可以包括所请求文件的分布标准和一个使用期限计数器。例如,使用期限计数器可以规定,搜索请求只需要从请求节点开始周游SCDN的两个网络集线器。例如,当相邻节点接收和评估该搜索请求时,节点可以使计数器减1。当它遇到叶节点、“终止节点”或使用期限计数器为0(即,在搜索请求包括一个计数器的情况中)时搜索请求终止。在丢失的数据没有被定位并且使用期限计数器为0、即如果它被包含在搜索请求中的情况中,该搜索请求继续以与初始分布过程的相反的路径来周游SCDN节点。如果文件的所请求的部分存在于一个节点中,那个节点直接回答请求DS。不具有所请求文件的任何部分的节点不回答。回答也包括发送回答及可用文件的部分的节点的性能状况。当请求的DS簇从SCDN中的任意节点接收指示它们包含部分或全部所请求的文件的回答包时,簇中的DS从那些最少拥堵的节点下载缺少的内容并把它本地存储在分布服务器的共享的存储卷中。这样,随着应用服务器把数据提供给最终用户,分布服务器从其它节点获得了文件的剩余部分,在应用服务器和VFCS之间的通信中没有中断。
如更早所讨论的,大有效负载文件被拆分成各部分(例如,块文件)并遍及SCDN分布。这样,当包含文件的各部分的节点通过搜索请求被发现时,一簇DS可以并行地从多个节点、尤其是从当前最少拥堵的那些节点下载文件的部分。基于回答包中的性能信息,起始DS簇决定从哪里下载(即,“拉入”)缺少的内容以便最小化等待时间和对其他分布服务器节点的带宽要求。
内容部分被从合适的分布服务器拉入,并由运行在一个或多个VFCS服务器上的VFCS为最终用户实时汇编。VFCS允许应用服务器查看作为一个单个的、大的虚拟文件系统存在于SCDN中的分布的存储卷。
检索不连续的文件片段从一个观点看,SCDN节点的系统存储器中的每一个存储的块对应于一个大有效负载文件的一个连续片段(例如,电影的一个连续区间)。例如,包含一部电影的片段,如果从第一片段到最后一个片段一个接一个地看,结果可以看到整部电影。因为相同内容部分(即,片段)位于SCDN中的几个不同的节点上,文件的不连续的片段(例如,电影的不连续的部分)可以独立地和并行地检索。这具有几个重要的额外的作用。例如,因为DS可以从几个不同的分布服务器获得需要的内容部分,SCDN的可靠性和实用性大大地增加了。另外,最终用户可以有效地“次序颠倒地”访问大有效负载的片段,例如,可以实现电影的快进而实际上不必下载不被实际观看的电影的所有部分。重要地,修剪(释放由一些块使用的存储器以供其它块使用)可以基于特定的内容提供者政策在“块级别”(相对于整个“文件级别”)上实施,例如修剪可以基于使用模式。内容的使用也可以列入块级别上。
块大小和文件分布块的大小影响内容分布和内容交付的性能。在判定块大小中考虑几个重要的因素1)以太网MTU(最大传输单元)大小,2)存储器的物理单元的大小,3)传送一个块所需的时间(与网络带宽有关),以及4)在内容交付期间响应于快进或倒带命令而跳过的最短可接受周期(这被称为最小闪烁区间)。
在确定块大小中几个目标开始起作用。一个目标是使MTU中的空间使用率最大化,这将使内容分布更有效。另一个目标是使分布节点的拥堵最小化。用于确定块大小的另一个重要目标是防止存储碎片,因为碎片降低了文件系统的性能,这与实现其他目标又是一致的。
太大或太小的块大小会影响性能。例如,考虑快进命令。如果块大小太大,在下载期间服务器响应快进请求将是反应缓慢的,因为在服务器可以处理这样的请求前它不得不完成特定块文件的下载。相反地,如果块大小太小,快进到块的末端会非常快。如果快大小在最小闪烁区间内,另一个分布服务器可能会通过检索包含目标内容的块来响应快进请求。
例如,基于上述标准,对于支持SCDN的物理网络所做的假设和涉及闪烁区间的大小和最小化网络拥堵的假设,一个实施例中的块大小例如可以是256K字节。对于本领域的那些普通技术人员,当一个或多个假设改变时块大小可以改变并且这个值可以是实现方式和应用专用的。
另外,在交付网络的存储器中的块大小不必为常数。网络中的每一个DS可以根据存储设备的具体性质和它的网络条件而具有自己的设置。每一个文件可以具有不同的块大小。
在初始文件分布阶段期间分布到一个合格节点的块的数量由多个因素来确定,包括从源DS(即,文件被上载的地方)到节点的距离、节点前端和后端带宽(当前网络条件)、预测的网络条件、节点的历史使用信息、内容提供者设定的“流行”指数、以及那个节点上对内容提供者的可用的存储器。
可伸缩性和适应性(学习和修剪)依据本发明的一个实施例的SCDN是高度可伸缩的。例如,当一个新的节点被加入到SCDN时,它通过采用几个不同的可适应的初始化过程中的一个来下载它需要的初始内容。在本发明的一个实施例中,使用了一个“自动初始化”过程。当一个节点被添加到SCDN时,就给定了一组属性。在自动初始化过程中,节点一连接到网络,它就向它所有的邻节点发出一个FDP“学习”或类似的请求。节点将其属性在学习请求中编码。邻节点把与新节点的属性一致的内容提供给它用于下载。然后,邻节点把新节点学习请求转发给它们的采取类似操作的所有的邻节点。这样,新节点的学习请求周游整个网络,如果网络中的所有节点具有适合于新节点的内容,则它们响应该学习请求。这个新节点收集所有的信息,下载需要的初始内容,现在是SCDN的一个功能单元。
这个自动初始化过程的例子将在图25的情况下讨论,图25显示了添加到SCDN的新的节点J。一旦连接到SCDN就由节点J来初始化学习请求。它向它的所有的邻节点发出包含其属性位图的学习请求。
在这个例子中,仅仅有一个直接的邻节点,节点G。当节点G接收“学习”请求时,它比较节点J的属性位图和它自己的内容的分布标准。如果它具有任何合适的供节点J下载的内容,节点G回答节点J。然后,节点G把学习请求转发到它的除了起始节点的节点J的所有的邻节点(即,节点I和C)。请求被转发到的每一个节点同样也评估该学习请求,有条件地回答,并且根据前面所述的来传播该请求。当学习请求遇到一个叶节点或一个“终止”节点时它终止。
随着学习请求周游SCDN,如果所有的节点具有节点J应该具有的内容,它们响应节点J。最后,节点J收集所有的响应信息并且从这些可以最优地提供初始内容的节点下载需要的初始内容。节点J现在可用于服务内容交付请求。
有一些另外的情况,其中学习和适应过程可以用在本发明的其它实施例中。例如,随着大有效负载被访问,VFCS把内容提供给应用服务器(例如,流型服务器),同时它也与分布服务器进行通信来从其他位置拉入缺少的内容部分。随着越来越多的内容部分被下载来满足最终用户的请求,每一个内容提供者的存储空间必须被仔细地监控。基于存储器的可用性和由VFCS收集的使用信息,修剪过程可以用于移去媒体文件的特定的块。与修剪过程有关的策略应该解决(1)什么时候修剪,(2)修剪多少,以及(3)修剪哪些块。在修剪后,服务器的存储系统可以包含整个媒体文件或由本地用户频繁访问的文件的不连续的片段。另外,可以向内容提供者报告更多的存储器或更多的分布服务器、应用服务器或VFCS服务器应该被添加到网络。
具有通信站的可伸缩内容交付网络图14是可伸缩内容交付网络的另一个实施例的例示例子。SCDN1400本质上与SCDN 500(见图5)一样,其中由多个SCDN通信站1410和一个中央通信站1420替代SCDN 500的单个分布中央和单个应用服务器。
如在更早的实施例中,SCDN 1400的通信站被组织在一个逻辑虚拟树结构中,其中树中的每一个节点具有一组属性。这样,每一个通信站具有一个存储在节点中的属性集合,并且可以用任何方便的数据结构来表示,例如属性集合可以表示为属性位图。进一步,每个通信站(即,节点)还包含通信站的每一个子通信站的积累属性集合的表示。该表示被称为“属性的积累集合”,并且任何方便的数据结构可以用于它,例如一个“积累位图”,它可以被定义为来自子通信站的所有积累属性位图的“二进制OR”组合。在分布服务器簇中的分布服务器使用属性位图来分布和传送大有效负载文件的各部分,并且它们使用合计的积累属性位图来终止不需要的消息传播。SCDN中的一个通信站被指定为“中央通信站”。该中央通信站拥有一个使文本串与比特位置相匹配的属性数据库表,例如,参考表。中央通信站1420不必是所有内容的一个数据储存库,而是可以包含部分或全部的内容。
在本发明的一个或多个实施例中,SCDN通信站(也称为“数据中心”)可以被配置为图15中所示。通信站1410包括一个分布服务器簇(DSC)1510、一个应用服务器簇(ASC)1520、一个控制单元(CU)1550、一个共享的存储系统1530、一个存储开关1540和通信站内控制相关开关1515。分布服务器簇1510使用通信链路1541和1544通过存储开关1540与存储系统1530通信。应用服务器簇1520使用通信链路1543和1545通过存储开关1540与存储系统1530通信。控制单元1550、分布服务器簇1510和应用服务器簇1520都通过与存储开关1540通信的通信站内控制相关开关1515通信。控制单元具有它的本地存储系统1560。在本说明书中,各种组件将在后面更详细地讨论。
图16提供了图14的SCDN的一个替代示例。图16是因特网的抽象表示。可以与图14的网络中心505相比较的,一般地由长途通信提供者所拥有和运行的高速主干1605-1到1605-N通过同层点1610-1(和未显示的其它同层点)连接。电信访问设施1650、服务器耕作(farm)设施1640、企业网1630和并置设施1620与一个或多个长途通信提供者进行安排来获得对一个或多个主干的访问。这些主要的设施类型中的每一个一般地在各种各样的安排下向二级公司、集团和个人提供对主干的少量的访问。(电信访问设施1650应该被解释为包括诸如提供拨号模拟调制解调器访问的因特网服务提供者、提供电缆调制解调器访问的电缆系统头端以及提供DSL的电话公司中央局的电信变型和其他数据通信变型。)如图所示,最终用户客户机系统(例如,EUC 1655和EUC 1639)一般地经由电信访问设施1650或经由通过企业网1630的附属部分的连接来访问或提供电子邮件、网页和其它基于因特网的资源。CPC(例如,1636)一般地通过企业网内的连接上载内容,尽管通过电信访问设施的访问也是很普通的。
通信站特有本地网1621可以包括一个或多个把通信站部件接口到通信站所位于的设施内的网络的网络集线器、开关或路由器。通信站特有本地网1621的确切的配置是通信站配置的规模、对每个通信站部件预期的各种通信流量以及通信站所位于的设施的特定细节的一个函数(即,每一个特定种类的服务器的数量和存储卷的数量)。虽然通信站被显示为在并置设施1620,但这仅仅是例示性的,因为通信站可以位于较大网络中的任何位置。
分布服务器簇分布服务器簇(DSC)尤其提供了系统容错性和可伸缩性。图17是分布服务器簇配置的一个示例。DSC 1510包括多个分布服务器1710-1至1710-N(合称为1710)和一个负载均衡器1720。分布服务器1710通过开关1540访问共享的存储系统1530中的存储卷1730-1至1730-V(合称为1730)上的数据(例如,块文件)。分布服务器簇中的DS(例如,DS 1710-1)可以通过作为出站通信量1740的分量的请求向相邻通信站的DS发出一个请求(例如,搜索请求)。类似地,相邻通信站的DS可以通过作为入站通信量1750的分量的请求向DSC1510中的DS发出一个请求(例如,学习请求)。负载均衡器1720把入站通信量1750分派到分布服务器1710-1至1710-N的其中之一。负载均衡器1720可以通过与一个标准路由器的各种拓扑组合而实现为一个负载均衡路由器,并且也可以处理出站DS通信量(例如,1740)。
每一个DS把它的请求(搜索,学习,等等)处理为将被执行的任务。该任务在每一个对应的服务器的存储器(例如,随机存取存储器)中的任务队列1760-1到1760-N(合称为1760)中被存储和管理。分别地对应于任务队列1760-1到1760-N的任务队列图象1770-1到1770-N(合称为1770)被存储在存储系统1530中的数据库中。如下面所讨论的,通信站的控制单元(CU)1550管理存储系统1530中的这个以及多个其它数据库。注意,仅仅为了方便进行示例,包含任务队列图象1770的数据库被映射在存储卷1730上。对于那些本领域的普通技术人员来说显而易见的是,任务队列图象数据库和其它SCDN相关的数据库可以被映射在任何可用的存储卷上。
每一个DS在控制单元数据库中周期地登记“心跳”,并且,它们周期地监视彼此的心跳。在启动(例如,加电)期间,DSC中的分布服务器投票选出一个“主服务器”。例如,如果DS 1710-1缺少了h个心跳,其中h是可配置的参数,那么假设DS 1710-1不再起作用。然后,主服务器把与DS 1710-1相关的任务重新分布给DSC中的有效的(即,活动的)分布服务器。如果主服务器停止工作,则所有的活动的分布服务器投票选出一个新的主服务器。新的主服务器然后重新分布前一主服务器遗留的工作,如果有的话。
在控制单元数据库不再可访问的情况下,分布服务器正常工作,除非其工作队列被反映到每个单个分布服务器的本地存储单元。在此期间,或者DS的工作队列数据库不能被访问,或者DS崩溃。如果任一个事件发生,则服务器将最终需要被重新启动。然后将读出和重新恢复在故障之前在其本地文件系统中保存的所有工作。
应用服务器簇应用服务器簇(ASC)在提供系统容错和可伸缩性的同时,尤其为最终用户提供服务(例如,把一部全长度电影注入最终用户的客户机系统)。图18A到18C提供了应用服务器簇的三个例示实施例。在全部的三个实施例中,ASC 1520包括负载均衡器1820和1830、多个应用服务器1810-1到1810-M(合称为1810)和多个VFCS服务器1840-1到1840-L(合称为1840)。应用服务器簇提供容错和可伸缩系统性能。例如,如果应用服务器的其中之一失败或如果VFCS服务器的其中之一失败,其它现有的应用服务器或VFCS服务器的其中之一将分别地处理这些请求。类似地,如果需要更好的系统性能,可以根据需要增加应用服务器、VFCS服务器或存储系统的存储容量。
图18A是图15的应用服务器簇1520的一个例示实施例。每一个应用服务器1810通过通信站的VFCS服务器1840的其中之一访问数据(例如,大有效负载文件),而VFCS服务器随后通过开关1540来访问存储系统1530中的数据。尽管负载均衡器1820和负载均衡器1830在图18A中在逻辑上显示为两个独立的单元,但是它们可以是相同的物理单元。同样,应用服务器1810和VFCS服务器1840可以包含在相同的物理单元中,从而删去负载均衡器1820和负载均衡器1830的其中之一。
最终用户使用在最终用户客户机上运行的标准接口(例如网络浏览器)来请求大有效负载文件。结果,对于该文件的服务请求被发送到ASC并到达负载均衡器1820。对于服务请求的入站数据包由负载均衡器1820转发到应用服务器1810的其中之一,例如应用服务器1810-1(1810-1到1810-M中的一个任意示例)。应用服务器1810-1向负载均衡器1830发出对所需数据的请求。负载均衡器1830选择通信站的VFCS服务器1840的其中之一、例如VFCS 1840-3(1840-1到1840-L中的一个任意示例)来处理该请求并把数据包从应用服务器1810-1转发到VFCS 1840-3。假设全部的所需数据存在于存储系统1530中,VFCS 1840-3通过经由开关1540访问存储系统1530中的数据来处理该请求并把数据和响应经由负载均衡器1830发回应用服务器1810-1。
当应用服务器1810-1与VFCS 1840-3建立一个对话时,负载均衡器1830连续在应用服务器1810-1与VFCS 1840-3之间来回地转发数据。如果负载均衡器1830支持先前描述的(即在背景部分中的)“粘性”特征并且该“粘性”特征被“打开”,如果VFCS 1840-3保持可用(即,如果负载均衡器1830没有把VFCS 1840-3分配给另一个应用服务器),那么在当前的对话期之外,来自应用服务器1810-1的数据可以继续被送往VFCS 1840-3。当VFCS 1840-3变得不可用时,负载均衡器1830把数据包从应用服务器1810-1送往另一个VFCS服务器,例如VFCS 1840-1(1840-1到1840-M的另一个任意示例)。VFCS 1840-1处理来自应用服务器1810-1的请求并通过负载均衡器1830向应用服务器1810-1发送响应数据包。来自应用服务器1810-1的数据包通过负载均衡器1820被发回到客户机。就象负载均衡器1830,负载均衡器1820在最终用户的客户机系统和应用服务器1810-1之间保持一个持久的对话。负载均衡器1820也可以提供“粘性”特征。
当来自不同的最终用户客户机系统的新的请求到达ASC的负载均衡器1820时,负载均衡器1820把新的请求转发到一个可用的应用服务器,例如应用服务器1810-3(1810-1到1810-M的另一个任意示例)。应用服务器1810-3处理该请求并随后通过负载均衡器1830向一个通信站的VFCS服务器,例如VFCS 1840-2(1840-1到1840-L的另一个任意示例)进行数据请求。然后负载均衡器1830把数据包从应用服务器1810-3转发到VFCS 1840-2。VFCS 1840-2处理来自应用服务器1810-3的请求并通过负载均衡器1830向应用服务器1810-3发回响应。应用服务器1810-3通过负载均衡器1820把响应发送到新的最终用户客户机系统。
图18B是图15的应用服务器组1520的另一个例示实施例。图18B中的ASC 1520的实施例包括一个或多个应用服务器1810-1到1810-M(合称为1810)、具有低带宽容量的负载均衡器1820、具有高的网络通过量的路由器1825、负载均衡器1830(也具有低的带宽容量)、路由器1835和一个或多个VFCS服务器1840-1到1840-L(合称为1840)。每一个应用服务器通过通信站的一个VFCS服务器1840访问数据(例如,大有效负载文件),VFCS服务器1840又依次通过开关1540访问存储系统1530中的数据。尽管它们在图18B中在逻辑上显示为两个独立的单元,但负载均衡器1820和负载均衡器1830可以是同一个物理单元,路由器1825和路由器1835可以是同一个物理单元。并且,应用服务器1810和VFCS服务器1840可以包含在同一个物理单元中,从而删去负载均衡器1820和1830和路由器1825和1835中的一个。这样,依据本发明的一个实施例的配置删去了负载均衡器1830、路由器1835,并且把应用服务器1810和VFCS服务器1840合并在一起。
本实施例支持来自VFCS服务器1840和应用服务器簇的应用服务器1810的出站通信量显著地高于入站通信量的事实。如图18B中所示,出站通信量被发送到路由器1825和路由器1835和负载均衡器1820和负载均衡器1830,而入站通信量被发送到负载均衡器但不发送到路由器。通过分离入站和出站通信量,本实施例对网络性能改善作出了贡献。
一个最终用户使用在最终用户客户机上运行的标准接口(例如网络浏览器)来请求一个大有效负载文件。结果,对于该文件的服务请求被发送到ASC并到达负载均衡器1820。服务请求的入站数据包由负载均衡器1820转发到一个应用服务器1810,例如应用服务器1810-1(1810-1到1810-M的一个任意示例)。应用服务器1810-1向负载均衡器1830发出对于所需数据的请求。负载均衡器1830选择一个VFCS服务器1840,例如VFCS 1840-1(1840-1到1840-L的一个任意示例)来处理该请求并把数据包从应用服务器1810-1转发到VFCS 1840-1。假设所有的所请求的数据都存在于存储系统1530,则VFCS 1840-1通过经由开关1540访问存储系统1530中的数据来处理该请求并经由路由器1835把数据和一个响应发回应用服务器1810-1。
当应用服务器1810-1建立与VFCS 1840-1的对话时,负载均衡器1830继续从应用服务器1810-1向VFCS 1840-1发送数据。如果负载均衡器1830支持“粘性”特征并且该“粘性”特征被“打开”,在当前对话期之外,来自应用服务器1810-1的数据可以继续被引导到VFCS1840-1,只要VFCS 1840-1保持可用(即,如果负载均衡器1830没有把VFCS 1840-1分配给其它的应用服务器)。从VFCS 1840-1到应用服务器1810-1的数据流过路由器1835。路由器1835它从VFCS 1840-1接收的数据包转发到应用服务器1810-1。应用服务器1810-1通过路由器1825把数据包发送到最终用户客户机系统。
当来自不同的最终用户客户机的新的请求到达ASC的负载均衡器1820时,负载均衡器1820把新的请求转发到一个可用的应用服务器,例如应用服务器1810-3(1810-1到1810-M的另一个任意示例)。应用服务器1810-3处理该请求并依次通过负载均衡器1830将数据请求发给一个VFCS服务器、例如VFCS 1840-3(1840-1到1840-L的另一个任意示例)向。VFCS 1840-3处理来自应用服务器1810-3的请求并通过路由器1835把数据发回到应用服务器1810-3。应用服务器1810-3通过路由器1825把响应数据发回最终用户客户机系统。
图18C是图15的应用服务器簇1520的第三个例示实施例。这个与图18B的实施例非常相似的实施例在两个重要的方面不同(1)进和出ASC的全部与EUC有关的数据通信量都经过路由器1825,和(2)应用服务器1810和VFCS服务器1840之间的全部数据通信量都经过路由器1835。
入站客户机数据包通过路由器1825流到负载均衡器1820。然后负载均衡器1820通过路由器1825把入站通信量调度到应用服务器。全部的出站通信量通过路由器1825流到最终用户客户机系统。到VFCS服务器的入站通信量从路由器1835流到负载均衡器1830,负载均衡器1830通过路由器1835把入站通信量调度到VFCS服务器。VFCS服务器出站通信量通过路由器1835流到相应的应用服务器。再一次,负载均衡器1820和负载均衡器1830可以是同一个物理单元,路由器1825和路由器1835可以是同一个物理单元。并且,应用服务器1810和VFCS服务器1840可以包含在同一个物理单元中,从而删去负载均衡器1820和1830和路由器1825和1835中的一个。这样,依据本发明的一个实施例的配置删去了负载均衡器1830、路由器1835,并且把应用服务器1810和VFCS服务器1840合并在一起。
图18A的实施例需要最少的硬件。再者,它需要一个具有足够容量的负载均衡器来处理入站和出站通信量簇。图18B和图18C的实施例对于具有繁忙的出站通信量和较低的入站通信量的簇具有明显的优势。两者都需要两个小容量负载均衡器。在图18B的实施例中,入站和出站通信量在负载均衡器和路由器之间分开,而在图18C的实施例中,入站和出站通信量通过路由器,它把负载均衡器用作一个资源。对于具有繁忙的双向通信量的应用服务器簇,例如在图18B和图18C的实施例中,要求更小容量的负载均衡器和路由器。图18B和图18C的实施例可以使用可以以透明模式运行的负载均衡器来配置。
虚拟文件控制系统(VFCS)协议和VFCS服务器在前面一部分讨论了如果全部所请求的数据都存在于通信站的存储系统中时一个VFCS服务器如何处理一个应用服务器的文件请求。现在在图19的环境下讨论如果全部被请求的数据都不存在于通信站的存储系统时VFCS服务器做些什么。
假设VFCS 1840-3在为应用服务器1810-1处理请求。如果应用服务器1810-1需要所请求文件的额外或全部内容,则VFCS 1840-3寻求通信站的分布服务器簇(例如,1510)中的一个分布服务器的帮助,以检索缺少的内容。这个通信可以采用在一个包括通信站内控制相关开关1515、在负载均衡器1720和开关1515之间的数据通信路径1901和在VFCS服务器1840和开关1515只见的数据通信路径1910的路径上的通信站内数据通信来完成。对于本领域普通技术人员来说显而易见的是,刚刚描述的路径仅仅是例示性的,可以使用用于完成所需通信的许多其他装置。
VFCS 1840-3对DSC的请求被输入到负载均衡器1720。负载均衡器(例如,1720)然后选择一个可用的分布服务器、例如DS 1710-2(1710-1到1710-N中的任意一个例示性的)来服务于该请求。DS1710-2代表应用服务器1810-1向其每一个相邻通信站发出一个作为出站DS通信量的分量的搜索请求,以便定位和下载文件的所需部分。这个搜索和下载过程已经在上面描述了。
当DS 1710-2从相邻通信站接收指示它们包含整个所请求文件的部分的回答包时,DSC 1510中的分布服务器1710将从那些最不拥堵的通信站下载缺少的内容,并经由开关1540将其本地存储在存储系统1530中。VFCS 1840-3然后通过经由开关1540访问存储系统1530中的数据来处理应用服务器1810-1的请求,并经由负载均衡器1830将数据和响应发回应用服务器1810-1。
SCDN通信站的内容储存库可以包括几个存储卷(参见图7)。在经由VFCS 1840访问一个内容文件期间,如果VFCS检测到组成所请求内容文件的所有块文件都不能在本地得到,则它经由一个FDP准备命令通知DSC 1510以便从其他SCDN节点下载缺少的部分。DSC 1510中的一个DS向其邻节点中的DS发出一个FDP搜索命令,尝试从最不拥堵的通信站定位和下载缺少的块文件。随着块文件被下载,内容文件的元数据被更新,以便登记块文件在本地存储卷中的存在。
在本地存储卷的故障的情况下,驻留在被破坏的本地存储卷中的数据被视为好象被VFCS丢失了。因此,当一个存储卷被破坏并且请求对一个内容文件的一些块文件的访问时,VFCS将检测到该块文件是不可访问的,并经由FDP准备或类似的命令通知DSC这些块文件是缺少的。在这种情况下,DSC中的一个DS仅仅假设该块文件在本地不存在,因此它在SCDN网络中搜索缺少的块。当缺少的块被定位时,DSC中的DS下载缺少的块,然后相应地更新文件元数据。随着时间的过去,在被破坏的存储卷上的块文件被自动恢复并存储在好的存储卷中。
为了实现在这一部分和前面的部分中描述的VFCS功能,VFCS可以被实现为可堆叠文件系统、使用基本的网络文件系统诸如NFS或CIFS的代理文件服务器、或存储区域网络、或直接附装的存储器,或者实现为这些方法的组合。下面描述一种这样的实现,其中,VFCS是使用NFS协议作为基础网络文件系统协议的代理文件服务器。
VFCS的主要任务之一是在将块文件发送回一个应用服务器之前实时地重新汇编块文件,以使得应用服务器认为该文件I/O是在一单个文件上完成的。在本发明的一个实施例中,应用服务器可以使用NFS协议来与VFCS通信。在NFS协议中,在可以远程访问文件之前,NFS客户机需要获得一个文件系统的根的文件句柄(handle)。NFS客户机使用NFS“安装”协议来从一个远程物理文件系统获得一个“文件句柄”。NFS安装协议允许服务器向一个受限制的客户机集合分发远程访问特权并执行例如允许将一个远程目录树附在一个本地文件系统上的各种操作系统特定功能。
VFCS使得应用服务器能够经由VFCS分布式虚拟文件系统查看作为一个单个的大的分布式虚拟存储系统存在于SCDN通信站内的分布的存储卷。虽然VFCS实际上不向应用服务器提供对真实磁盘文件的直接(物理)访问,但每个VFCS服务器可以以一种使它所服务的应用服务器感觉到VFCS分布式虚拟文件系统是物理安装在VFCS上的方式进行一个NFS安装。为了实现这一点,在执行应用服务器的一单个文件I/O请求时,每个VFCS服务器同时用作NFS服务器和NFS客户机。当它的角色是一个NFS服务器时,每个VFCS服务器必须支持NFS安装协议,而在从通信站的存储系统设备、例如NAS设备访问文件时,它必须作为一个客户机进行一个NFS安装。因此,有在VFCS中支持的两个不同的“安装”操作来相对于应用服务器透明地实现文件I/O。
VFCS服务器文件系统概述当每个VFCS服务器在其启动过程中被初始化时,一个VFCS安装守护程序(daemon)经由NFS安装过程来初始化一个本地例示(对每个VFCS服务器是专用的)“文件系统”。文件系统不必须在物理上存在于任何附带的存储设备上。在一个例示实施例中,一个个人文件系统存在于每个VFCS服务器的主存储器中(例如,动态随机存取存储器的一些变型)。每个VFCS服务器的个人文件系统使用一个在所有VFCS服务器中都相同的“VFCS名字空间”。即,每个VFCS服务器使用一个公共分层和命名协议来参考在共享系统存储器中保存的文件。更具体地,每个VFCS服务器的个人文件系统树中的每一个文件具有一个公共的和唯一的定位符(路径名)和句柄。这个公共VFCS名字空间允许在通信站安装的每个文件具有一个唯一的与其相联系的内容定位符(文件名)。这允许同一文件名由通信站的所有VFCS服务器以相同的结果来使用。这样,一个通信站内的所有VFCS服务器对安装在通信站的大有效负载文件的整个集合具有相同的访问。只要一个应用服务器调用其VFCS客户机(即,在应用服务器上运行的VFCS访问例程)来安装所分布的虚拟VFCS,则返回通信站的存储系统中的分布式虚拟VFCS文件系统的根文件句柄。然后使用这个根文件句柄来访问分布式虚拟VFCS中的大有效负载文件。因为通信站的所有VFCS服务器都访问相同的VFCS名字空间,所以任何VFCS服务器都可以使用根句柄。在一个VFCS服务器崩溃的情况下,(在应用服务器上运行的)VFCS客户机使用根文件句柄重试访问所请求的文件。重试请求被发送给一个不同的VFCS服务器,这对于应用服务器是透明的。文件句柄因此在所有的VFCS服务器中提供了一个持久性特征,即,它可以幸免于一个或多个单独的VFCS服务器的崩溃。
通信站控制单元和数据储存库图20是依据本发明的一个实施例的SCDN中的一个通信站的控制单元和数据的示例。通信站1410包括控制单元1550和数据储存库2000。在本发明的一个实施例中,控制单元1550可以是一个包括四个子系统的嵌入式系统。图20标识出一个通信站的控制单元的子系统和数据储存库。控制单元1550包括资源管理子系统2050、学习子系统2060、存储器管理子系统2070和服务管理子系统2080,合称为控制子系统。通信站内的数据储存库2000包括网络资源储存库2010、历史和统计资源储存库2030、事件资源储存库2040和内容储存库1530。
控制单元的服务管理子系统2080管理通信站的DS和VFCS服务器。资源管理子系统2050支持SCDN网络和服务配置,并且运行记录和使用数据积累成活动。学习子系统2060支持自动初始化、递增内容学习和其他用于管理和控制通信站的自适应方法。存储器管理子系统2070监视簇存储器使用,支持内容评定和修剪,并通知CMS每个内容提供者的存储器使用。服务管理子系统2080根据阈值设置来监视和控制服务,发出SNMP(简单网络管理协议)陷阱,输出企业MIB(管理信息库),并输出历史、统计和事件数据。对于本领域普通技术人员来说显而易见的是,这里所描述的功能是为了方便而使用的,只要产生对SCDN通信站的有效的和可靠的控制和管理,其他功能可以被添加、删减或替代。
通信站控制单元的控制子系统资源管理子系统2050包括一个配置服务器、一个资源管理器和一个内容使用统计积累代理。配置服务器支持通信站的配置,即在网络资源储存库中的配置数据的初始化和维护。
中央通信站的配置服务器允许为SCDN配置一个属性表。这个配置数据也被保存在网络资源储存库2010中。采用图25作为示例,当一个新的通信站(例如,通信站J)被创建和配置时,通信站J的资源管理器通知其父通信站(例如,通信站G)的资源管理器和中央通信站的资源管理器来更新它们的拓扑图并积累通信站J的属性。通信站G的资源管理器更新其部分拓扑,通知其DS该新通信站,并向其相邻通信站(例如,通信站C和I)的资源管理器发送相同的数据。在通信站J的例如两个网络集线器的邻近内的所有资源管理器更新其部分拓扑图,并通知其DS。通信站G的资源管理器然后将通信站J的属性积累到通信站G的父通信站的资源管理器。在后面的连续的积累中,通信站J的属性可以沿路到达SCDN的根通信站。
当中央通信站的资源管理器接收到一个新的通信站通知时,它将新通信站添加到其SCDN网络拓扑中。中央通信站保存SCDN网络拓扑的一个完全的拷贝。只有中央通信站拥有SCDN属性表这样,其资源管理器响应关于这个表中的表目的查询。
当通信站H的属性改变时,通过一连串资源管理器,属性被沿路积累到SCDN的根通信站。通信站H的资源管理器还根据其新属性来调用其本地学习代理以更新本地内容。
在通信站H的控制单元的IP地址、或通信站H的第一DS的IP地址、或通信站H的DS的负载均衡路由器的IP地址改变的情况下,通信站H的资源管理器将通知所有相邻通信站的资源管理器来更新其网络资源储存库。这些网络资源储存库然后将这些改变通知其邻居。改变的传播可以在两个网络集线器之后终止。
一个资源管理器管理本地网络资源储存库数据,与其他资源管理器进行通信以更新数据,并将配置数据分布给本地服务器、诸如DS和VFCS服务器。一个内容使用统计积累代理周期性地将内容服务和内容使用积累到相关的内容管理服务器。
学习子系统2060提供对通信站管理和控制的自适应方法。当一个通信站的属性改变、包括一个新通信站的创建时出现学习。学习还可以用于恢复由于存储器故障而导致的内容。学习是由学习子系统中的学习代理执行的,并由资源管理器调用。在本发明的一个实施例中,有两种不同的学习模式—主动的和被动的,内容学习包括两个阶段—发现阶段和内容修改阶段。
在主动模式中,在发现阶段中,作为属性改变的结果,一个学习代理在网络中的所有内容管理服务器中查询要下载或删除的内容列表。学习代理从内容储存库中的内容提供者数据表定位内容管理服务器。对于一个新的通信站,学习代理从它的SCDN父节点获得内容提供者数据表,并将该表保存到新通信站的内容储存库中。在发现阶段之后的内容修改阶段中,对于要被移去的特定媒体文件,学习代理通过向一个本地DS发出移去请求来删除不需要的内容。为了添加内容,学习代理在它在发现阶段获得的内容列表中迭代,并且,对于列表中的每一个文件,它向通信站H中的DS发出一个FDP“取”或类似的请求。对于每个文件,通信站H中的一个DS向合适的内容提供者的CMS的指定通信站的DS发出一个“取_信息”或类似的包。完成这一点来检索每个文件的元数据。通信站H中的一个DS然后向它的每一个相邻DS发出一个FDP搜索或类似请求以定位该文件。只要网络中的一个DS、例如通信站D中的一个DS接收到对一个文件的搜索请求,该DS就将该请求传送到它的所有合格的邻居(例如,通信站B)。如果所请求的文件存在于通信站D,则通信站D中的DS向通信站H中的DS发出一个FDP类型的“搜索_回答”。通信站H的一个DS然后发出FDP“获取”来下载该内容。一个搜索请求可以产生被发送到学习通信站的多个“搜索_回答”命令。每个“搜索_回答”包括所搜索通信站D的服务和网络负载。在通信站H的DS从最不“忙”的通信站下载每个文件。一个文件可以被从多个位置并行地下载。FDP协议包括一个优先级标签。学习代理可以通过调整准备请求中的优先级标签来控制其学习速度。学习代理还可以控制它的取请求速率。主动学习的一个优点是,内容学习表可以手动创建,以引导一个学习代理删除或下载内容。随着DS下载新文件,学习代理从本地DS获得历史运行记录,并确定何时完成了学习。
在被动学习模式中,在发现阶段中,学习代理向在每一个相邻通信站的DS发出一个学习请求。学习请求包括学习通信站的旧的和新的属性。每一个通信站将学习请求转发到它自己的邻通信站,使得学习请求将在整个网络中传播。在接收到一个学习请求之后,在一给定通信站(例如,B)的一个DS检查学习通信站(例如,H)的旧的和新的属性,并从通信站B的本地存储器获得通信站H的所必须的媒体文件的列表。对于列表中的每个媒体文件,在通信站B的一个DS向在通信站H的DS发出一个FDP“复制”或类似请求。通信站H集中所必须的内容的列表,推断出哪些是它需要删除的,哪些是它需要下载的。在被动模式中的内容修改阶段中,基于它在发现阶段中获得的内容的列表,通信站H中的DS簇向其自身发出“移去”命令来移去不必要的内容,并向发出“复制”请求的通信站(例如B)中的DS发出“获取”命令或类似请求以下载文件的部分。一个DS可以使学习请求的处理让步于其他更重要的请求。学习请求可能导致从一个或多个通信站对同一媒体文件的“复制”通知的发出,通过从多个位置下载一个文件,DS防止网络中的任何特定节点的拥堵。
存储器管理子系统2070包括一个作为其主要部件的存储器管理代理。存储器管理代理1)监视全体本地存储器的可用性和一个内容提供者的存储器可用性;2)调整一个文件的“流性”指数;3)为每个内容提供者确定一个存储器安全阈值;4)排定内容修剪;5)计算修剪量;6)移去一个文件的最不可能使用的块;以及7)向内容管理服务器报告存储器使用信息和不足警告。
内容提供者通过一个内容管理应用程序来设置一个文件的初始“流行”指数。这个初始值用作对要在不久的将来访问的文件的似然性的预测。DS依赖于“流行”指数以及存储器可用性、通信站位置和网络环境来对要由分块过程930(图9)输出到本地存储器的一个文件的哪些部分、初始块大小和块数目作出决定。
存储器管理代理使用VFCS服务器历史运行记录数据和文件元数据数据库中的数据来确定一个合理的存储器安全阈值,调整一个文件的“流行”指数,并识别出最不可能使用的块。存储器安全阈值是每个内容提供者在所有时间都必须保留的空闲存储器的最小量。根据存储器可用性和DS活动,存储器管理代理为每个内容提供者确定要修剪的数据的总量,并排定对最不可能使用的块的删除。
当对一个内容提供者的内容修剪率超过一个特定界限时,存储器管理代理发出一个RPC调用(远程过程调用)来通知内容提供者所指定到的内容管理应用服务器。内容管理应用防止内容提供者在内容提供者的存储器低时上载任何新的内容。
在本发明的一个实施例中,服务管理子系统2080包括下述部件历史运行记录处理器、统计处理器、事件处理器、阈值监视器、陷阱代理、SNMP(简单网络管理协议)堆栈、展示代理和服务协定政策代理。历史运行记录处理器和统计处理器从本地设备和服务器收集统计和任务/交易运行记录,并把所有的运行记录和统计信息保存在历史和统计储存库。在通信站学习的同时,历史记录处理器把所有的文件下载记录转发到学习代理来将下载状态通知给代理。该处理器也把记录的入站和出站数据传输信息从本地DS转发到内容提供者存储器使用表。内容使用和统计数据库也由统计处理器更新。
事件处理器把接收到的事件保存在事件数据储存库2040中。存储的事件可以源自任何一个DS、VFCS服务器、控制单元或通信站中的任何其他设备。依赖于事件级别和问题的严重性,事件处理器可以将事件报告给陷阱代理。阈值监视器不断地将各种阈值设置与由统计处理器采集的当前读数进行比较。如果达到一个阈值,则阈值监视器将警报传送给陷阱代理。陷阱代理从事件处理器和阈值监视器接收事件和警报。它记录事件和警报,并将其转送给展示代理和SNMP陷阱代理,以通知操作者。展示代理将程序目标(例如,Java小程序)分布给服务管理应用程序和最终用户的浏览器。Java小程序将阈值设置、性能数据、网络拓扑、使用运行记录和事件从数据储存库引导给网络操作者。
来自历史和统计储存库和事件储存库的数据可以被推向或拉自一个展示代理。服务协定政策代理从历史和统计储存库检索出数据,并将信息供给一个服务协定政策服务器,从这里可以实施商业协定和政策(例如保证的对每个顾客的服务质量)。
通信站的网络资源储存库网络资源储存库2010包含网络和通信站配置数据。网络配置数据可以包括部分或整个网络的拓扑和一个完全的属性表。这个数据由资源管理子系统2050创建和更新。
通信站配置数据包括所有设备的IP地址、通信站属性、积累属性、负载均衡配置、数据库配置、路由配置、统计数据采集间隔、心跳间隔、本地存储卷及其配置、等等。
通信站的历史和统计储存库历史和统计储存库2030存储由服务管理子系统收集的数据。这个数据储存库包括1)设备的历史运行记录,2)服务器和网络统计,3)内容提供者使用表,以及4)内容使用和统计表。上述数据集合包含从许多来源获得的信息,这些来源包括DS,VFCS服务器,应用服务器,学习子系统2060,负载均衡器,以及存储器管理子系统2070。
学习子系统2060使用历史信息来解释学习的状态。
服务管理子系统2080评价统计信息,并将其与一个用户定义的资源-使用阈值进行比较,以决定是经由管理控制台向操作者发送一个通知、还是根据操作者的配置来开启服务或关闭服务。
存储器管理子系统2070使用来自DS和VFCS的历史运行记录来确定何时、何种和多少内容要修剪。
内容管理者使用表由存储器管理子系统2070从由服务管理子系统2080收集的数据产生。由资源管理子系统2050提供的数据积累功能将这个相同的信息的一个拷贝积累到每个内容提供者的指定内容管理服务器。
内容使用和统计表数据由应用服务器使用运行记录分析程序来收集,并由服务管理子系统2080转送到控制单元的数据库。这个相同的信息的一个拷贝被资源管理子系统2050提供的积累功能积累到每个内容提供者的指定内容管理服务器。
通信站的事件资源储存库事件资源储存库2040包括支持事件(例如,通知、警告和错误消息)、工作队列、服务器心跳和服务器登记数据的数据集。服务器登记数据包括服务器ID、服务类型等等。服务管理子系统从包括DS、VFCS服务器、资源管理子系统、负载均衡器、学习子系统和存储器管理子系统的各种各样的本地源收集通知、警告和错误消息。通信站“事件”被组织到不同的类别中,并根据通信站配置数据产生通知并将通知转送到管理控制台。服务管理子系统2080依靠心跳表来确定一个服务器是否在工作。DS使用服务器登记簿、心跳表和工作队列来对其服务器簇进行负载均衡,并对容错进行相互监视。服务管理子系统2080使用服务器登记簿和心跳表来监视通信站中的服务,它在电源故障时关机,在服务器故障时重新启动服务。
通信站的内容储存库内容储存库1530包括内容提供者信息、本地驻留的媒体文件的文件分布标准、文件元数据和内容块。内容提供者信息包括内容提供者的帐户信息、分配的内容管理服务器、保留的存储器、媒体文件的数目等等。文件元数据包括媒体文件的属性、关于如何将媒体文件划分成块文件的信息以及本地存储卷中对其块文件的索引。内容储存库1530可以横跨多个本地存储卷。例如,一个媒体文件的内容块在多个存储卷之间分布。内容储存库也被称为共享存储系统。
在共享存储系统1530中有多个存储卷(图15)。这些卷包含在图20中显示的数个重要的数据库,例如内容提供者数据表、文件分布标准表、文件元数据数据库和内容块文件。这些数据库是独立存储的,可以任意映射到共享存储系统1530中的任何地方。内容提供者数据表和文件分布标准表也存在于每个内容管理服务器系统中。内容管理服务器中的表只包括被分配给该CMS的内容提供者的数据。在每个通信站的内容提供者数据表包括SCDN的所有内容提供者的信息,文件分布标准表只包括复制到通信站的媒体文件。
只有DS、VFCS服务器和SMS 2070可以访问存储系统。DS可以读和写共享存储系统;然而,VFCS服务器和SMS 2070只能以只读方式访问它。学习代理在学习代理的初始化阶段中在创建初始内容提供者数据表时也对存储系统进行写操作。
内容提供者数据表包括诸如内容提供者帐户信息、内容提供者分配的内容管理服务器地址、保留存储器、内容提供者的政策服务器等信息。
文件分布标准数据库包括对每个内容文件的分布标准。
块文件包含每个内容文件的实际内容。使用一个作为内容提供者ID、媒体文件ID、磁道ID和块号的组合的散列密钥来定义块文件的路径名,以加速数据访问。
文件元数据数据库文件元数据数据库保存与块文件有关的文件元数据,包括内容提供者ID、初始流行指数、块大小、实际使用率、媒体大小、属性、最小保留大小、访问时间印记、磁道文件索引、块文件索引、存储卷索引等等。
就象所表明的,文件元数据指定用于其相关联文件的块大小。文件中的所有块都是相同的大小,除了最后一块,除非文件(如果文件是一个线性文件)或最后一个磁道(如果文件是一个非线性文件)的大小恰巧是块大小的精确倍数,否则最后一块会较小。
文件元数据还包括用于构造一个块的实际位置的信息。由于各块可以在存储系统内的多个存储设备之间分布,因此可以有多个块存储器路径根目录。在每个存储器路径根目录内,一块的位置和文件名是确定的。创建一系列子目录来确保有限数目的文件和子目录被包含在一给定目录中。
分布服务器相互进行通信以及与内容管理应用程序进行通信以便传送SCDN中的大有效负载文件。当DS添加或移去共享存储系统中的块时,DS修改文件元数据数据库中的表目。在本质上用作一个锁定管理器的序列服务器可以用于同步多个DS、VFCS服务器、存储器管理器等等对文件元数据数据库的访问,以防止可能的竞争(例如,冲突)条件。VFCS服务器使用文件元数据数据库中的信息来将适当的块汇编和多路复合成应用服务器的文件。存储器管理子系统观察可用的共享存储器、内容提供者的保留存储器和使用运行记录。当可用的存储器减少时,它启动不太流行的内容的移去,以便为更流行的和新的内容腾出空间。它通过引导DS移去它们的一些最不可能被使用的相关联的块来完成这一点。它访问文件元数据数据库来确定要求删除多少块以及哪些块。
内容储存库的特定实施取决于主机环境。例如,它可以是一个传统的RDBMS(相关数据库管理系统)或可以是目录中的平面文件的一个集合。为了性能和可靠性的原因,本发明的一个实施例使用目录中的平面文件来实施内容储存库。表被实施为一个具有固定长度记录的单一文件,或被实施为对于每个记录的单独的文件。采用单一文件在读取记录的完整列表时或在记录ID未知时搜索记录时具有性能优势。采用单独文件在经由一个已知记录ID访问记录时具有性能优势。内容提供者数据表、文件分布标准表和文件元数据数据库都存储在一个其路径对于DS、VFCS服务器和SMS 2070用于访问存储在其中的文件元数据的接口是已知的目录中。
通信站操作和数据流在图21A到21G的环境下给出了通信站操作和数据流的例子。结合这些附图,应用服务器、VFCS服务器和分布服务器之间的几个交互作用将被识别如下图21A显示了一个大有效负载文件的请求、请求到一个选定VFCS服务器的传递、对一个DS的准备该文件的请求、从共享存储器对该文件的初始检索。表1显示了通信站交互作用
表1图21A中的通信站交互作用

图21B显示了文件数据的初始返回、请求到一个选定的DS的转发、对缺少的部分的搜索请求的发出、网络检索到的部分的存储以及使用信息的记录。表2显示了通信站交互作用
表2图21B中的通信站交互作用

图21C显示了使用信息的检索、内容提供者存储器保留和存储器可用性数据的检索、以及由控制单元命令的和由一个选定DS实现的相关存储器管理活动。表3显示了通信站交互作用表3图21C中的通信站交互作用

图21D显示了内容提供者信息的接收和更新。表4显示了通信站交互作用
表4图21D中的通信站交互作用

图21E显示了在分配给一个CMS的初级通信站中的内容部分的接收和组织。表5显示了通信站交互作用表5图21E中的通信站交互作用

图21F显示了分布请求的接收和复制请求的发出。表6显示了通信站交互作用
表6图21F中的通信站交互作用

图21G显示了复制请求的接收和获取请求的发出。表7显示了通信站交互作用表7图21G中的通信站交互作用

VFCS文件系统实施和初始化每个VFCS服务器维护一个实施分布式虚拟文件系统的个人文件系统。这个分布式虚拟文件系统向一个应用服务器(AS)提供了VFCS服务器本地保存有作为一个连续的原子整体的AS所期望的内容文件的假象,而事实上该内容一般存储在一个通信站网络中的多个卷中的块中。此外,该内容的各部分可以从SCDN的其他节点传送。每个VFCS服务器文件系统只实现一个骨架树结构,附加的文件元数据分量在根据需要和刚好及时的基础上被添加。对理解本节重要的是,这些附加的分量只在需要它们的特定VFCS服务器上添加。在本节的剩下的讨论中,从每个VFCS服务器的角度描述问题。除非特别指出,所述行为与任何其他VFCS服务器的存在无关。
分布式VFCS文件系统可以以许多种方式实施。在本发明的一个实施例中,它由一个Uuix VNODE结构表示,在该结构中,一个节点是一个目录或一个文件。每个VNODE具有一个代表SCDN中的内容提供者或内容卖主文件的唯一的标识符。一个特定的内容提供者文件可以只采用以其内容提供者的名字编码的文件路径来检索。
VFCS服务器的个人文件系统的根目录包含每个内容提供者的名字的列表和每个内容提供者的一个子目录。每个内容提供者子目录包含该提供者的文件的列表。当它的个人文件系统被初始化时,VFCS服务器访问内容提供者名字的列表,以便初始化内容提供者目录。然而,当VFCS服务器被初始化时,内容提供者的内容文件不被初始化。相反,随着流行的新内容到达,在一个应用服务器从DS或序列服务器请求内容文件或通知之后它们被填充。这个过程在这里被称为“选择性的和动态的初始化”。依据本发明,为初始化选择的特定元件和它们被初始化的时间(在初始化时或在运行时)是基于系统性能考虑而选择的。
VFCS服务器在其主存储器中保持有几个超高速缓存,典型的例子包括1.一个用于内容提供者信息的超高速缓存。
2.一个用于内容提供者文件信息的超高速缓存。
3.一个包含VFCS文件系统的框架的部分的超高速缓存(即,VFCSVNODE数据,但一般不包含整个VNODE树)。
4.一个用于用来提高汇编和多路复合过程的性能的“预-取”块的超高速缓存。
VFCS服务器周期性地检查内容提供者数据表和文件元数据数据库,以确定这两个中的表目是否已经改变,并且,如果是,适当地更新其超高速缓存。周期性的检查也可以由一个由DS或序列服务器启动的通知机制来实现,以便在任何表目改变时、例如在一个新文件被上载时或在一个旧文件已经被修剪以节省存储器空间时通知所有VFCS服务器。当一个应用服务器尝试访问一个其文件元数据信息不在超高速缓存中的文件时,VFCS服务器确认该文件不能从SCDN访问,然后返回一个错误指示“文件未找到”。
在本发明的一个实施例中,VFCS可以保持有如下的超高速缓存1.内容提供者名字超高速缓存内容提供者名字和ID。
2.文件名字超高速缓存文件名字、ID、磁道数目、每个磁道的块数目、媒体文件的起始位置、目前驻留于共享存储系统中的块数目。
3.文件系统超高速缓存在一个VFCS VNODE树实施例中,树中的每个节点具有一个句柄。根形成树的“第一层”,其句柄是一个常数。树的“第二层”包括内容提供者节点,内容提供者ID用作句柄。树的“第三层”包括文件节点,文件ID用作句柄。
4.预-取块超高速缓存已经被预-取出来用在汇编和多路复合过程中的块。
在具有无限存储器的理想环境中,可以通过用支持对存储在通信站的任意文件的AS请求所必须的信息来预填充VFCS服务器的个人文件系统来最优化性能。但是,在更普通的有限存储器的情景中,如前所述,进行“选择性的和动态的初始化”和“选择性的和动态的超高速缓存”来实现最佳的可能的性能。VFCS服务器在它的初始化过程期间从共享的系统存储器1530读取内容提供者数据表和文件元数据数据库并把该数据的各部分超高速缓存到它的主存储器中。在服务于AS对于特定内容提供者文件的一个请求时,VFCS服务器将扩充它的个人文件系统来包括特定文件的属性。VFCS服务器从在VFCS服务器的初始化期间被超高速缓存的文件元数据获得附加文件属性信息。该附加文件特定信息被保存在VFCS服务器的个人文件系统中,直到服务器重新启动或当存储器低并且该文件已经很长一段时间没有被访问时。
VFCS初始化过程图22是依据本发明的一个实施例在VFCS初始化过程期间执行的VFCS服务器的操作的一个流程图。在这个示例中,网络附加存储器(NAS)设备用于共享的存储系统。内容提供者数据表和文件元数据数据库在操作2201中被安装以提供对它们的数据的访问。对于本示例来说,假设这些文件被安装在/mp/metadata上。为了访问在存储系统中可用的整个块集合,所有的内容卷在操作2202中被安装。对于这个解释来说,安装点是/mp/blockfiles,例如,/mp/blockfiles/v1,/mp/blockfiles/v2等。VFCS服务器通过把内容提供者数据表加载到超高速缓存中(例如,操作2203)来初始化内容提供者的名字超高速缓存。内容提供者名字超高速缓存包括内容提供者名字和ID。在操作2204中,VFCS服务器开始建立文件系统超高速缓存。在这个步骤,被输出的文件系统的结构可以被初始化。本发明的一个实施例可以使用UnixVNODE树来表示存储器中文件系统。这样,初始化包括对输出的根目录的根VFCS VNODE的创建和对这个目录的恒定句柄的分配。对于这个解释来说,输出的目录为/export。然后,如操作2205中所指示的,VFCS通过创建内容提供者目录来继续建立文件系统超高速缓存,即内容提供者VNODE数据和结构被初始化。例如,内容提供者目录采用/export/cp_name1、/export/cp_name2等的形式。每个目录都有一个VNODE并且每个目录的句柄为提供者的ID。例如,假设工作室(studio)X是一个内容提供者并且它的提供者ID为“123”。当一个应用程序使用它的名字访问该工作室X目录时,123的句柄被返回到该应用程序。应用程序也可以使用“123”来访问工作室X目录,在这种情况下,数字句柄123被返回。在操作2206中,VFCS初始化内容提供者文件名字超高速缓存。例如,VFCS服务器基于存储器可用性从文件元数据数据库获得每一个文件提供者的文件名和ID的一个完整的或部分的列表。VFCS服务器直到这些文件被访问后才为它们创建VNODE。在操作2207中,VFCS输出它的文件系统。这是“选择性的和动态的超高速缓存”的一个例子,即被选择用于填充并且出于性能原因确定它们何时被填充(在初始化时还是在运行时)的超高速缓存。
当文件被访问时在运行期间VFCS继续建立文件系统超高速缓存。当应用服务器访问一个特定文件、例如/export/cp_nameJ/file_nameX时,服务该请求的VFCS服务器在内容提供者文件_名列表中查找文件_名,为在两个/export/cp目录中的对应文件创建VFCS_VNODE,并为该文件获得块文件的列表。同时,VFCS服务器通过DSC负载均衡器向DS发出一个“准备”请求包。在DS下载所请求的内容部分、把这些部分存储为块、更新文件元数据数据库来反映这一点之后;并且在VFCS轮询文件元数据数据库并认识到这些块存在于存储系统中之后;VFCS服务器对其进行读取、汇编并多路复合,并将内容发送给请求的应用服务器。每一个VFCS服务器执行先行读取超高速缓存来提高性能。
VFCS文件访问过程图23显示了在运行时间期间内执行的VFCS服务器操作。当一个应用服务器请求对一个文件的访问时,在操作2301中,VFCS首先检查来看是否有为在VFCS文件系统中的文件准备的一个节点,其中VFCS服务器提出问题,是否为该文件存在一个VFCS节点?如果是,VFCS服务器进行到步骤2305,否则它进行到步骤2302。在步骤2302,VFCS检测它的文件名超高速缓存来判定用于该文件的一个表目是否存在于超高速缓存中(即,相关的文件元数据是否存在?)。如果没有相关的文件元数据存在,VFCS服务器进行到操作2303并读取文件元数据数据库,把该文件的相关的文件元数据超高速缓存到文件名超高速缓存中,然后进行到操作2304。但是,如果相关的文件元数据已经存在于文件名超高速缓存中,VFCS服务器立即进行到操作2304,为该文件创建VFCS文件系统节点。此后,VFCS直接进行到操作2305。
在操作2305中,VFCS文件服务器检查来看在预-取(瞬时)块超高速缓存中是否有所请求文件的任何块。如果没有这样的块,VFCS服务器进行到操作2306,在这里它从通信站的存储系统读取与所请求的文件相联系的块,把一个“准备”请求包发送到通信站的DSC来重新填充缺少的块,执行一个先行读取,然后进行到操作2307。但是,如果在预-取块超高速缓存中对于所请求的文件有一个或多个块,VFCS服务器直接从操作2305进行到操作2307。
在操作2307中,VFCS服务器汇编并多路复合这些块,并把此数据转发到应用服务器。VFCS可以执行先行读取超高速缓存来提高性能。进而,VFCS服务器实现包电子欺骗(packet spoofing)来把数据直接地从后端存储器运送到前端应用程序而没有进行缓冲器拷贝。
当被初始化时,VFCS文件系统在VFCS文件系统树的前两层中包含一个根节点和内容提供者目录。VFCS文件系统树的第三层包含内容提供者文件目录并且被动态地填充。如果当应用服务器请求该文件时内容提供者的文件的元数据不在超高速缓存中,VFCS服务器必须从文件元数据数据库读取文件的元数据,超高速缓存该信息,然后在VFCS文件系统的VNODE树中为该文件创建并附加一个VNODE。一旦文件被附加到VFCS文件系统,VFCS服务器向本地DS发送一个“准备”请求包,并执行“先行读取”操作,直到它到达文件的终端。
VFCS服务器超高速缓存的预-取块的数量依赖于VFCS服务器中的本地存储器可用性。当存储器运行慢时VFCS文件系统的第三层可能被修剪,预-取块超高速缓存可能被刷新。基于存储器可用性,VFCS服务器可以超高速缓存这些目录的一个完整的或部分的集合。利用有限的存储器,它仅仅为最频繁被访问的文件超高速缓存文件元数据,然后基于最近使用信息来定期地更新超高速缓存。
为了支持特定数量的内容提供者、假定XCP、特定Y个内容提供者文件、假定YF和数个并存的用户、假定ZU,为了最佳的可能的性能每一个都具有N个预-取块,VFCS服务器被配置为使用下面的方程表示的一个存储器大小以兆字节表示的存储器大小=VFCS服务器OS存储器需求+VFCS服务器运行时间存储器需求+XCP*(每一个内容提供者名字超高速缓存所需的存储器)+YF*(每一个文件名超高速缓存所需的存储器)+(1+XCP+YF)*(VNODE树的大小)+ZU*N*(块大小)内容公布和管理以及其它系统相关工具内容管理应用程序是允许如下操作的一组工具(1)SCDN的所有者(即,服务提供者)管理内容提供者帐户和(2)内容提供者管理它们在SCDN中的文件。这些工具访问和更新分布在整个SCDN的数据。内容管理应用程序使数据或请求包被传递到合适的SCDN通信站。
内容管理应用程序在客户机/服务器范例中执行,即,在内容提供者客户机系统上运行的客户机用于调用在(1)内容管理服务器(CMS)或(2)CMS和使用例如Java小程序或servlets的程序目标的内容提供者客户机系统的一个组合上;或者在其任意组合上执行的一个内容管理应用程序。
在SCDN中可能有一个或多个CMS。除典型的资源例如处理器和存储器外,每一个CMS都具有它自己的本地存储设备,在其上存储有各种内容管理相关数据库。
每一个内容提供者使用一个特定的CMS。服务提供者把由内容提供者使用的CMS分配给一个特定的通信站。这意味着被分配的通信站处理由那个内容提供者执行内容管理应用程序而产生的CMS请求。在一个实施例中,所分配通信站的DSC中的一个DS被它的负载均衡器选择来处理CMS的请求。除了存储在CMS的本地存储设备上的与内容管理应用有关的数据外,其他这样的数据被选择性地存储在通信站的存储系统中或者通信站的控制单元的本地存储设备中。
每一个内容提供者可以仅仅被分配给一个CMS但是,多于一个内容提供者可以被分配给同一个CMS。而且,一个CMS可以仅仅被分配给其中内容提供者可以把文件上载到SCDN中的一个通信站。例如,当一个内容提供者被分配给一个CMS时,CMS使用FDP“信息”包通过它的所分配的DS把内容提供者信息和CMS的IP地址传播到整个SCDN。一个内容使用统计积累客户机(相关通信站的资源管理子系统的一个部件)连接到CMS,以便为每一个内容提供者积累存储器和内容使用信息。内容管理服务器也使用FDP“信息”包来传播内容提供者数据表中的改变。
各种内容管理应用程序用于输入和管理内容提供者信息、内容的元信息和实际内容。应用程序也用于检索存储系统和内容的使用信息和性能统计。
内容管理应用程序工具内容管理应用程序包括位于CPC、CMS和SCDN通信站上的工具。这些工具可以是程序目标的形式,例如,Java小程序。下面将参照图20来展示一些典型的工具。
内容提供者管理客户机是为内容提供者和操作者提供用户界面以更新存储在CMS系统中的内容提供者表中的内容提供者信息的工具。
内容提供者管理服务器是管理内容提供者数据表并通过它的所分配通信站中的DS把信息包发送到SCDN的工具。DS在通信站的存储系统中创建它自己的内容提供者数据表。
内容管理客户机是为内容提供者提供用户界面以上载和删除它们的内容、检查存储器使用、保留存储器、检查内容使用等的工具。
内容管理服务器是作为内容管理客户机工具和分布服务器之间的桥梁的工具。它使用FDP协议(例如,使用“放置”、“分布”和“清除”命令)与其所分配通信站中的DS通信。当内容管理客户机工具上载一个新文件时,内容管理服务器使用FDP“放置”和“分布”包通过它的所分配的DS把该文件分布(即,插入)到SCDN中。内容管理服务器把内容提供者信息和内容分布标准存储在它的数据库中。在内容被分布到SCDN的同时,在处理分布请求中涉及的DS把与这些文件和它们的组成部分有关的信息存储在文件分布标准数据库和文件元数据数据库中。这些文件和它们的组成部分块也由在处理该请求中涉及的DS存储在SCDN中分布的内容储存库中。内容管理服务器使用FDP“清除”包来从SCDN删除一个文件。当SCDN中的DS接收到“清除”包时,它从文件分布标准数据库、文件元数据数据库删去相关信息,并从内容储存库中删去实际的内容块。
内容使用统计积累客户机是在每一个通信站的控制单元中实现的工具。它把内容使用信息从历史和统计储存库转发到分配了内容提供者的CMS系统上的内容使用统计积累服务器工具。内容使用统计积累服务器工具接收使用和统计数据并把这些数据存储在使用和统计数据库中。
所分配通信站的控制单元的存储器管理子系统周期性地把内容提供者存储器使用从内容数据储存库转发到内容提供者存储器工具代理。内容提供者存储器工具代理仅仅接收分配给它的内容管理服务器的内容提供者的存储器使用,它把存储器使用数据存储在内容提供者存储器使用表中。
收费工具和统计工具用来输出来自使用和统计数据库和使用和统计数据库的信息,这样服务和内容提供者都可以定制发票声明和与其顾客的其他通信。
数据库内容的示例图24是图20的内容管理和使用数据库的内容的示例。在该示例中使用了两个CMS、CMS 2410和CMS 2411,三个通信站、通信站2401、通信站2402和通信站2403以及两个内容提供者CPC-1和CPC-2。在这个例子中,将做下述假设1、CMS2410被分配给通信站24012、CMS2411被分配给通信站24033、CPC-1被分配给CMS24104、CPC-2被分配给CMS24115、CPC-1拥有内容C1(在下文简称为C1)6、CPC-2拥有内容C2(在下文简称为C2)7、C1已经被分布到通信站2401和通信站24028、C2已经被分布到通信站2403和通信站2402。
在这个例子中,对于CMS2410给定这些假设,则有1、内容提供者数据库包括CPC-12、内容提供者使用数据库包括在通信站2401、通信站2402和通信站2403上的CPC-1的存储器使用3、文件分布标准数据库包括C1的分布标准4、内容使用和统计数据库包括来自通信站2401、通信站2402和通信站2403的C1的使用信息5、因为C1没有分布到通信站2403,将没有来自通信站2403的记录对于CMS2411,则有1、内容提供者数据库包括CPC-22、内容提供者使用数据库包括在通信站2401、通信站2402和通信站2403上的CPC-2的存储器使用3、文件分布标准数据库包括C2的分布标准4、内容使用和统计数据库包括来自通信站2401、通信站2402和通信站2403的C2的使用信息5、因为C2没有分布到通信站2401,将没有来自通信站2401的记录对于通信站2401,则有1、内容提供者数据库包括CPC-1和CPC-2,因为内容提供者数据被复制到整个SCDN2、内容提供者使用数据库包括在通信站2401上的CPC-1和CPC-2的存储器使用
3、文件分布标准数据库包括C1的分布标准4、文件元数据数据库包括C1的文件元数据5、数据块包括C1的内容6、内容使用和统计数据库包括在通信站2401上的C1的使用信息对于通信站2402,则有1、内容提供者数据库包括CPC-1和CPC-22、内容提供者使用数据库包括在通信站2402上的CPC-1和CPC-2的存储器使用3、文件分布标准数据库包括C1和C2的分布标准4、文件元数据数据库包括C1和C2的文件元数据5、数据块包括C1和C2的内容6、内容使用和统计数据库包括在通信站2402上的C1和C2的使用信息对于通信站2403,则有1、内容提供者数据库包括CPC-1和CPC-22、内容提供者使用数据库包括在通信站2403上的CPC-1和CPC-2的存储器使用3、文件分布标准数据库包括C2的分布标准4、文件元数据数据库包括C2的文件元数据5、数据块包括C2的内容6、内容使用和统计数据库包括在通信站2403上的C2的使用信息频带外的信号传输和控制在本发明的一个实施例中,在每一个分布节点上为应用服务器提供插入模块以使用和定位“频带外”信号。该插入模块为了访问控制和增值服务可以调用远程控制模块。通过提供这样的一个基础设施,分布网络允许内容提供者在网络的边缘控制它们的内容,并提供动态增值服务。
访问控制包括由区域进行的鉴别和许可,由用户进行的并行访问的数目,等等。增值服务包括动态的限于局部的和面向目标的广告插入、动态预览和片尾插入以及更多。“频带外”信号还用作对内容提供者的通知。
权利要求
1.一种用于将大有效负载文件的内容分布到一个网络节点中的多个存储设备的方法,包括获得代表一个大有效负载文件的内容的多个块文件,以供存储在一个网络节点中的多个存储设备中;将所述多个块文件与所述多个存储设备相联系;基于所述联系将所述多个块文件存储在所述多个存储设备中;以及利用所述联系创建一个虚拟文件以供展示给一个请求所述文件内容的客户机,所述虚拟文件向所述客户机提供一个所述文件内容在所述网络节点中是连续的假象。
2.如权利要求1所述的方法,其中,所述获得多个块文件包括从一个用户获得所述大有效负载文件;评价所述大有效负载文件,以定位一个具有实质性内容的部分;通过确定所述实质性内容是否位于所述大有效负载文件的开始端来确定所述来自所述大有效负载文件的内容是否包括线性特性;如果所述内容包括所述线性特性,则产生一个磁道文件;如果所述内容不包括所述线性特性,则产生多个磁道文件;确定至少一个期望的块大小;以及如果所述内容包括线性特性,划分所述磁道文件以产生多个块文件,其中,所述块文件中的每一个在大小上对应于所述至少一个期望的块大小;以及如果所述内容不包括线性特性,划分所述多个磁道文件中的每一个以产生多个块文件,其中,所述块文件中的每一个在大小上对应于所述至少一个期望的块大小。
3.如权利要求2所述的方法,其中,通过选择一个块大小而使所述网络的最大传输单位内的空间使用率最大来确定所述期望的块大小。
4.如权利要求2所述的方法,其中,所述网络具有多个分布节点,并且通过选择一个块大小而使在所述网络的所述分布节点上的拥堵最小来确定所述期望的块大小。
5.如权利要求1所述的方法,其中,所述联系所述多个块文件包括在所述多个存储设备之间分布所述多个块文件,以使得所述多个存储设备在输入/输出操作期间被负载均衡。
6.如权利要求1所述的方法,进一步包括将所述联系存储在所述多个存储设备中的文件元数据中,所述联系包括用于从所述块文件重建所述大有效负载文件的信息。
7.如权利要求1所述的方法,其中,所述网络包括多个节点,并且所述多个块文件是从所述网络的其他节点获得的。
8.如权利要求6所述的方法,其中,所述创建一个虚拟文件包括从所述文件元数据中获得有关所述大有效负载文件的信息;使用所述信息来构造所述大有效负载文件的一个虚拟表示。
9.一种用于将大有效负载文件的内容分布到一个网络节点中的多个存储设备的装置,包括一个网络节点的第一服务器簇中的一个或更多第一服务器,获得代表一个大有效负载文件的内容的多个块文件,以供存储在所述网络节点中的多个存储设备中,所述一个或更多第一服务器将所述多个块文件与所述多个存储设备相联系,并基于所述联系将所述多个块文件存储在所述多个存储设备中;以及所述网络节点的第二服务器簇中的一个或更多第二服务器,利用所述联系创建一个虚拟文件以供展示给一个请求所述文件内容的客户机,所述虚拟文件向所述客户机提供一个所述文件内容在所述网络节点中是连续的假象。
10.如权利要求9所述的装置,其中,所述获得多个块文件包括第三服务器,从一个用户获得所述大有效负载文件,所述第三服务器评价所述大有效负载文件,以定位一个具有实质性内容的部分,并通过确定所述实质性内容是否位于所述大有效负载文件的开始端来确定所述来自所述大有效负载文件的内容是否包括线性特性,如果所述内容包括所述线性特性,则所述第三服务器产生一个磁道文件并将所述磁道文件发送到所述一个或更多第一服务器,而如果所述内容不包括所述线性特性,则所述第三服务器产生多个磁道文件并将所述多个磁道文件发送到所述一个或更多第一服务器;以及所述一个或更多第一服务器以一个或更多磁道文件的形式接收所述大有效负载文件,所述一个或更多第一服务器确定用于将所述一个或更多磁道文件划分称多个块文件的至少一个期望的块大小,其中,所述块文件之中的每一个块文件在大小上对应于所述至少一个期望的块大小。
11.如权利要求9所述的装置,其中,所述联系所述多个块文件包括在所述多个存储设备之间分布所述多个块文件,以使得所述多个存储设备在输入/输出操作期间被负载均衡。
12.如权利要求9所述的装置,其中,进一步包括所述一个或更多第一服务器将所述联系存储在所述多个存储设备中的文件元数据中,所述联系包括用于从所述块文件中重建所述大有效负载文件的信息。
13.如权利要求12所述的装置,其中,所述创建一个虚拟文件包括从所述文件元数据中获得有关所述大有效负载文件的信息;以及使用所述信息来构造所述大有效负载文件的一个虚拟表示。
14.一种用于在大有效负载交付期间使网络拥堵最小的方法,包括发送一个搜索请求,以确定一个网络中的哪些节点具有给一个请求节点的内容,所述网络具有多个节点;从具有所述内容的一个或更多响应节点之中的每一个节点接收对所述搜索请求的一个响应;从所述响应中确定所述响应节点中的哪些节点是从其下载所述内容的一个期望的节点集合;从所述期望的节点集合中下载所述内容;以及将所述下载的内容存储在所述请求节点上。
15.如权利要求14所述的方法,其中,所述内容的至少一部分被存储在所述响应节点之中的每一个节点中的多个块文件中。
16.如权利要求14所述的方法,其中,所述发送一个搜索请求包括所述请求节点向一个虚拟树中的相邻节点发送一个通知,以确定所述内容的存在,所述通知包括所述内容的分布标准。
17.如权利要求16所述的方法,其中,接收所述搜索请求的所述相邻节点中的每一个节点将所述搜索请求转发到与所述相邻节点相邻的除了所述请求节点之外的节点,其中,所述搜索请求被传播到所述网络中的所述多个节点之中满足所述分布标准的一个或更多节点。
18.如权利要求14所述的方法,其中,所述响应指定所述响应节点具有所述内容的哪一部分以及所述响应节点的性能特性。
19.如权利要求18所述的方法,其中,所述期望的节点集合包括与所述请求节点紧密邻近的节点,所述期望的节点集合包括由所述性能特性确定的被识别为最不拥堵的节点。
20.如权利要求15所述的方法,其中,从所述期望的节点集合中并行进行所述块文件的所述下载。
21.一种用于在大有效负载交付期间使网络拥堵最小的装置,包括一个包括多个节点的网络;以及第一服务器簇中的第一服务器,发送一个搜索请求以确定所述网络中的哪些节点具有给所述网络的一个请求节点的内容,所述第一服务器簇具有一个或更多第一服务器,所述第一服务器从具有所述内容的一个或更多响应节点中的每一个节点中接收对所述搜索请求的一个响应,所述第一服务器簇从所述响应中确定所述响应节点之中的哪些节点是从其下载所述内容的一个期望的节点集合,并且,所述第一服务器簇中的所述一个或更多第一服务器从所述期望的节点集合中下载所述内容并将所述下载的内容存储在所述请求节点上。
22.如权利要求21所述的装置,其中,所述内容的至少一部分被存储在所述响应节点中的每一个节点中的多个块文件中。
23.如权利要求21所述的装置,其中,所述发送一个搜索请求包括所述请求节点中的所述第一服务器向一个虚拟树中的相邻节点发送一个通知以确定所述内容的存在,所述通知包括所述内容的分布标准。
24.如权利要求23所述的装置,其中,接收所述搜索请求的所述相邻节点中的每一个节点中的第一服务器将所述搜索请求转发到与所述相邻节点相邻的除了所述请求节点之外的节点,其中,所述搜索请求被传播到所述网络中的所述多个节点之中满足所述分布标准的一个或更多节点。
25.如权利要求21所述的装置,其中,所述响应指定所述响应节点具有所述内容的哪一部分以及所述响应节点的性能特性。
26.如权利要求25所述的装置,其中,所述期望的节点集合包括与所述请求节点非常靠近的节点,所述期望的节点集合包括由所述性能特性确定的被识别为最不拥堵的节点。
27.如权利要求22所述的装置,其中,从所述期望的节点集合中并行进行所述块文件的所述下载。
28.一种用于管理一个内容交付网络中的多个服务器的方法,包括将一个或更多输入任务分布给一个网络节点中的一个或更多可用服务器,所述网络节点具有能够处理所述一个或更多输入任务的多个服务器,其中,所述一个或更多可用服务器包括所述多个服务器的一个运行子集;为所述网络节点的所述一个或更多可用服务器中的每一个服务器保持一个任务列表,所述任务列表包括分布给所述一个或更多可用服务器之中的所述每一个服务器的来自所述一个或更多输入任务的所有任务;以及将来自所述多个服务器之中的一个变得被指明是一个不可用服务器的服务器的所述任务列表中的所述所有任务分布到所述一个或更多可用服务器。
29.如权利要求28所述的方法,其中,所述一个或更多可用服务器观察彼此的心跳,并使用所述心跳来确定所述多个服务器中的至少一个服务器何时变得被指明是所述不可用服务器。
30.如权利要求29所述的方法,其中,如果所述不可用服务器是所述主服务器,则所述一个或更多可用服务器投票选出一个新的主服务器。
31.一种用于管理一个内容交付网络中的多个服务器的装置,包括一个具有能够执行同样任务的多个服务器的网络节点;一个负载均衡器,将一个或更多输入任务分布给所述网络节点中的一个或更多可用服务器,其中,所述一个或更多可用服务器是所述多个服务器的一个运行子集,所述多个服务器中的每一个服务器保持一个包含分布给它的所述输入任务的任务列表;以及一个主服务器,将来自所述多个服务器之中的一个变得被指明是一个不可用服务器的服务器的所述任务列表的所有任务分布到所述一个或更多可用服务器。
32.如权利要求31所述的装置,其中,所述一个或更多可用服务器观察彼此的心跳,并使用所述心跳来确定所述多个服务器之中的至少一个服务器何时变得被指明是所述不可用服务器。
33.如权利要求32所述的装置,其中,如果所述不可用服务器是所述主服务器,则所述一个或更多可用服务器投票选出一个新的主服务器。
34.一种用于初始化一个网络中的一个新节点的方法,包括向一个具有多个节点的网络添加一个新节点;自动向所述多个节点发送一个查询以确定要下载什么内容;从具有给所述新节点的所述内容的所述多个节点的一个子集接收对所述查询的回答;以及从具有所述内容的所述多个节点的所述子集下载所述内容的期望的部分。
35.如权利要求34所述的方法,其中,所述自动向所述多个节点发送所述查询包括通过向至少一个相邻节点发送一个通知来宣布在所述网络中所述新节点的内含物;将所述通知转发到与所述至少一个相邻节点相邻的节点,所述转发一直继续到所述网络中的所述多个节点中的每一个节点接收到所述通知。
36.如权利要求35所述的方法,其中,来自一个回答节点的所述回答之中的每一个回答包括所述新节点应该具有什么内容的标识;在所述回答节点中可用的所述内容的部分的标识;以及所述回答节点的性能特性。
37.如权利要求36所述的方法,其中,所述下载所述内容的所述期望的部分包括从识别为最少拥堵的紧密邻近中的所述回答节点下载所述块文件的一个期望的子集。
38.一种用于自动适应一个网络中的一个节点的方法,包括改变一个具有多个节点的网络中的一个改变节点的特性;由所述改变节点自动向所述多个节点中的每一个节点发出一个查询,以确定所述改变节点应该具有什么内容;从具有给所述改变节点的内容的所述多个节点之中的每个节点接收对所述查询的一个回答,所述回答包括要由所述改变节点学习的内容的一个列表;使用所述要被学习的内容列表中的信息产生要从所述改变节点中删除的内容的一个列表;使用所述要被学习的内容列表中的信息产生要被添加到所述改变节点上的内容的一个列表;从所述改变节点中删除在所述要被删除的内容列表中的项目;以及从具有给所述改变节点的内容的每个回答节点下载所述要被添加的内容列表中的每个项目。
39.如权利要求38所述的方法,其中,每个节点包括一个属性集,并且所述改变特性步骤包括用一个新的属性集替换所述改变节点的旧的属性集,以及其中所述自动向所述多个节点发送一个查询包括通过向相邻节点发送一个通知来宣布所述改变节点的新的属性集;将所述通知转发到与所述相邻节点相邻的节点,所述转发一直继续到所述网络中的每个节点接收到所述通知。
40.如权利要求38所述的方法,其中,每个节点包括一个属性集,并且所述改变特性步骤包括用一个新的属性集替换所述改变节点的旧的属性集,进一步包括使得接收所述查询的每个节点向相邻节点传播所述查询,以使得所述网络中的每一个节点接收所述查询,所述接收所述查询的节点评价所述改变节点的所述旧的属性集和所述新的属性集,以便为所述改变节点确定一个必要内容文件列表,并且所述接收所述查询的节点发送一个引导所述改变节点从所述必要内容文件列表中下载项目的回答。
41.如权利要求38所述的方法,其中,所述下载包括为所述要被添加的内容列表中的每个内容项目获得一个文件元数据;发送一个请求来确定具有所述内容项目的所述网络中的节点,所述内容项目的相同部分在一个或更多所述多个节点中是可得到的;从一个或更多响应节点接收响应,其中,所述响应节点是所述多个节点之中的具有所述内容项目的节点;从所述响应中确定所述响应节点的哪些节点是从其下载所述内容项目的一个期望的节点集合;将所述内容项目从所述期望的节点集合下载到所述改变节点上,所述内容项目包括多个块文件;以及将所述多个块文件以分布方式存储在所述改变节点的多个本地存储设备中。
42.一种用于自动适应一个网络中的一个节点的装置,包括一个具有多个节点的网络,每个节点具有一个或更多服务器;以及所述网络中的一个节点,被配置为在特性改变时成为一个改变节点,所述改变节点自动向所述多个节点中的每一个节点发出一个查询,以确定所述改变节点应该具有什么内容,所述改变节点从具有给所述改变节点的内容的所述多个节点中的每个节点接收对所述查询的一个回答,所述回答包括要由所述改变节点学习的内容的一个列表,所述改变节点使用所述要被学习的内容列表中的信息产生要被删除的内容的一个列表和要被添加的内容的一个列表,所述改变节点中的所述一个或多个服务器删除在所述要被删除的内容列表中的项目,所述改变节点中的所述一个或多个服务器从具有给所述改变节点的内容的所述回答节点下载所述要被添加的内容列表中的每个项目。
43.如权利要求42所述的装置,其中,每个节点包括一个用于标识的属性集,并且所述改变特性是用一个新的属性集对一个旧的属性集的替换,以及,其中所述自动向所述多个节点发送一个查询包括通过向相邻节点发送一个通知来宣布所述改变节点的新的属性集;以及将所述通知转发到与所述相邻节点相邻的节点,所述转发一直继续到所述网络中的每个节点接收到所述通知。
44.如权利要求42所述的装置,其中,每个节点包括一个用于标识的属性集,所述改变特性是一个新的属性集对一个旧的属性集的替换,并且进一步包括接收所述查询的所述多个节点中的每一个节点向其相邻节点传播所述查询,以使得所述网络中的每一个节点接收所述查询,所述接收所述查询的节点评价所述改变节点的所述旧的属性集和所述新的属性集以便为所述改变节点确定一个必要内容文件列表,并且所述接收所述查询的节点发送一个引导所述改变节点从所述必要内容文件列表中下载项目的回答。
45.如权利要求42所述的装置,其中,所述下载包括所述改变节点中的所述一个或更多服务器中的一个服务器为所述要被添加的内容列表中的每个内容项目获得一个文件元数据;所述服务器发送一个请求来确定具有所述内容项目的所述网络中的节点,所述内容项目的相同子集在一个或更多所述多个节点中是可得到的;所述服务器从一个或更多响应节点中接收响应,其中,所述响应节点是所述多个节点之中的具有所述内容项目的节点;所述改变节点的所述一个或更多服务器从所述响应中确定所述响应节点之中的哪些节点是从其下载所述内容项目的一个期望的节点集合;所述改变节点的所述一个或更多服务器将所述内容项目从所述期望的节点集合下载到所述改变节点上,所述内容项目包括多个块文件;以及所述改变节点的所述一个或更多服务器将所述多个块文件以分布方式存储在所述改变节点的多个本地存储设备中。
46.一种用于从不连续分段的块文件中产生一个大有效负载文件的方法,包括在一个网络节点上接收对一个大有效负载文件的请求;获得有关汇编所述大有效负载文件的信息;从与所述网络节点相联系的多个存储设备中获得所述大有效负载文件的多个块文件;使用所述汇编信息从所述多个块文件中创建所述大有效负载文件的一个虚拟表示;以及响应于所述请求来发送所述大有效负载文件。
47.如权利要求46所述的方法,其中,所述汇编信息被包含在存储在所述节点的所述多个存储设备中的一个文件元数据数据库。
48.如权利要求46所述的方法,其中,所述块文件以不连续形式存储在所述多个存储设备中。
49.如权利要求46所述的方法,其中,所述虚拟表示创建步骤包括创建所述多个块文件的一个虚拟汇编,并且进一步包括根据所述汇编信息的所述多个块文件的表示的线性叠加。
50.一种用于以在多个网络节点之间分布的内容的各部分来满足对所述内容的一个客户机请求的方法,包括在第一节点上从一个请求内容的客户机接收第一请求,其中,所述第一节点包括一个网络的多个节点中的一个节点,所述第一节点具有所述内容的一部分,其中,所述内容在所述多个节点中的一个或更多节点之间被分布在块文件的子集中;使用在所述第一节点中可得到的所述内容的一个文件元数据中的数据来准备所述内容的一个虚拟图象,所述文件元数据具有有关重新汇编所述文件的信息,所述虚拟图象向所述客户机提供一个所述内容在所述第一节点上可完全得到的假象;从在所述第一节点上可得到的所述内容的所述部分开始,开始所述内容向所述客户机的传输;在所述传输向前进展的同时,获得所述内容的未驻留部分,所述获得未驻留部分包括发送一个第二请求,以确定所述多个节点之中的具有所述内容的所述未驻留部分的节点,其中,所述多个节点中的一个或更多节点可以具有所述内容的相同部分;从具有所述内容的每个响应节点接收一个响应,所述响应指定所述内容的部分和所述响应节点的性能特性;从所述响应中确定所述响应节点之中的哪些节点是从其下载所述内容的所述未驻留部分的一个期望的节点集合;以及从所述想要的节点集合中下载所述内容的所述未驻留部分,并将所述未驻留部分存储在所述请求节点上。
51.一种用于从不连续分段的块文件中产生一个大有效负载文件的装置,包括一个具有多个节点的网络;在所述多个节点之中的每一个节点中的多个存储设备;以及所述网络的一个节点的第一服务器簇中的第一服务器,接收对一个大有效负载文件的内容的请求,所述第一服务器簇具有一个或更多第一服务器,所述第一服务器获得有关汇编所述大有效负载文件的信息,所述第一服务器从所述节点的所述多个存储设备中获得所述大有效负载文件的多个块文件,所述第一服务器使用所述汇编信息从所述多个块文件中创建所述大有效负载文件的一个虚拟表示,并响应于所述请求来发送所述大有效负载文件。
52.如权利要求51所述的装置,其中,所述汇编信息被包含在存储在所述节点的所述多个存储设备中的一个文件元数据数据库中。
53.如权利要求51所述的装置,其中,所述块文件以不连续形式存储在所述多个存储设备中。
54.如权利要求51所述的装置,其中,所述虚拟表示包括所述多个块文件的一个虚拟汇编,所述虚拟汇编包括根据所述汇编信息的所述多个块文件的表示的线性叠加。
55.一种用于将内容分布到多个网络节点的方法,包括从一个客户机获得一个具有内容的大有效负载文件以供在一个具有多个节点的网络中分布,所述客户机为所述内容提供分布标准;将所述内容划分成多个块文件;以及将所述多个块文件的一个子集分布到多个合格节点,其中,所述合格节点中的每一个节点符合由所述客户机设置的所述分布标准。
56.如权利要求55所述的方法,其中,所述划分所述内容包括评价所述大有效负载文件以定位一个具有实质性内容的部分;通过确定所述实质性内容是否位于所述大有效负载文件的开始端来确定来自所述大有效负载文件的所述内容是否包括线性特性;如果所述内容包括所述线性特性,产生一个磁道文件;如果所述内容不包括所述线性特性,产生多个磁道文件;确定至少一个期望的块大小;如果所述内容包括线性特性,划分所述磁道文件以产生多个块文件,其中,所述块文件中的每一个块文件在大小上对应于所述至少一个期望的块大小;以及如果所述内容不包括线性特性,划分所述多个磁道文件中的每一个磁道文件以产生多个块文件,其中,所述块文件中的每一个块文件在大小上对应于所述至少一个期望的块大小。
57.如权利要求55所述的方法,进一步包括将所述多个块文件存储在多个本地存储设备中,以使得所述多个块文件分布在所述多个本地存储设备上。
58.如权利要求55所述的方法,其中,所述分布所述多个块文件的一个子集包括一个启动节点通过向相邻节点发送一个通知来宣布所述大有效负载文件的所述内容的存在;所述启动节点的所述相邻节点将所述通知转发给与所述相邻节点相邻的节点,其中,所述通知的传播一直持续到所述网络中的全部所述多个节点都接收到所述通知;以及所述合格节点中的每一个节点从具有所述内容的所述多个节点的一个或更多节点中下载所述块文件的一个期望的子集。
59.如权利要求58所述的方法,其中,所述块文件的所述期望的子集是从距离所述合格节点最近的最不拥堵的节点中进行所述下载的。
60.如权利要求58所述的方法,其中,所述下载所述块文件的所述期望的子集是从所述网络的多个节点中并行下载的。
61.一种用于将内容分布到多个网络节点的方法,包括从一个客户机获得一个包括文件内容的大有效负载文件以供在一个具有多个节点的网络中分布,所述客户机为所述文件内容提供分布标准,所述分布标准具有关于所述多个节点中的哪些节点被授权具有所述内容的信息;将所述文件内容划分成多个具有使所述内容的回放最大化的块大小的块文件;将所述多个块文件存储在多个本地存储设备中,以使得所述多个块文件分布在所述多个本地存储设备上,从而在输入/输出操作期间负载均衡所述多个本地存储设备;以及将所述多个块文件的一个子集从所述本地存储设备分布到适合于接收所述文件内容的所述多个节点中的每一个节点,其中,所述合格节点是那些符合由所述客户机设置的所述分布标准的节点,其中,接收所述多个块文件的所述子集的每个合格节点将所述子集分布到所述接收节点的多个本地存储设备中。
62.一种用于将内容分布到多个网络节点的装置,包括一个具有多个节点的网络,所述多个节点中的每一个节点具有能够相互进行通信的多个部件,所述多个部件包括第一服务器簇中的一个或更多第一服务器;以及第三服务器,从一个客户机获得一个具有内容的大有效负载文件以供在所述网络中分布,所述客户机为所述内容提供分布标准,所述第三服务器将所述大有效负载文件发送到所述第一服务器簇中的所述一个或更多第一服务器中的一个第一服务器,所述第一服务器将所述内容划分成多个块文件并将所述多个块文件的一个子集分布到多个合格节点,其中,所述合格节点中的每一个节点符合由所述客户机设置的所述分布标准。
63.如权利要求62所述的装置,其中,所述多个部件进一步包括第四服务器,用于控制所述节点的活动。
64.如权利要求63所述的装置,其中,所述多个部件进一步包括第二服务器簇中的一个或更多第二服务器,以及用于将所述内容供应给外部客户机的第五服务器簇中的一个或更多第五服务器,所述一个或更多第五服务器具有到所述第二服务器簇中的所述一个或更多第二服务器的通信链路。
65.如权利要求62所述的装置,其中,所述第三服务器将所述大有效负载文件发送到所述第一服务器包括所述第三服务器评价所述大有效负载文件以定位一个具有实质性内容的部分;通过确定所述实质性内容是否位于所述大有效负载文件的开始端来确定来自所述大有效负载文件的所述内容是否包括线性特性;如果所述内容包括所述线性特性,产生一个磁道文件并将所述磁道文件发送到所述第一服务器;以及如果所述内容不包括所述线性特性,产生多个磁道文件并将所述多个磁道文件发送到所述第一服务器。
66.如权利要求65所述的装置,其中,所述第一服务器划分所述内容包括确定至少一个期望的块大小;如果所述内容包括线性特性,划分所述磁道文件以产生多个块文件,其中,所述块文件中的每一个块文件在大小上对应于所述至少一个期望的块大小;以及如果所述内容不包括线性特性,划分所述多个磁道文件中的每一个磁道文件以产生多个块文件,其中,所述块文件中的每一个块文件在大小上对应于所述至少一个期望的块大小。
67.如权利要求62所述的装置,进一步包括所述多个部件进一步具有多个共享存储设备,其中,所述第一服务器将所述多个块文件存储在所述多个共享存储设备中,以使得所述多个块文件分布在所述多个共享存储设备上。
68.如权利要求62所述的装置,其中,所述分布所述多个块文件的一个子集包括一个启动节点中的一个第一服务器通过向相邻节点发送一个通知来宣布所述大有效负载文件的所述内容的存在;所述启动节点的所述相邻节点将所述通知转发给与所述相邻节点相邻的节点,其中,所述通知的传播一直持续到所述网络中的全部所述多个节点都接收到所述通知;以及所述合格节点中的每一个节点中的所述第一服务器簇中的一个或更多第一服务器从具有所述内容的所述多个节点的一个或更多节点中下载所述块文件的一个期望的子集。
69.如权利要求68所述的装置,其中,所述块文件的所述期望的子集是从距离所述合格节点最近的最不拥堵的节点中进行所述下载的。
70.如权利要求68所述的装置,其中,所述下载所述块文件的所述期望的子集是从所述网络的多个节点中并行下载的。
全文摘要
大有效负载文件被有选择地分割成块,并将这些块分布到在网络边缘的适合于具有这些数据的多个分布通信站。每个合格通信站基于由内容提供者限定的诸如网络位置和环境、使用、流行性和其他分布标准的信息来决定本地保存多少内容和保存内容的哪些部分。一个大有效负载文件的不同部分可以从不同节点得到,然而,当一个用户例如通过一个应用服务器请求访问大有效负载文件时,虚拟文件控制系统产生一个整个文件存在于所连接的节点上的假象。然而,由于在请求时只有大有效负载文件的选择部分可以实际驻留在该节点的存储器中,所以在分布通信站的一簇分布服务器可以在应用服务器正在服务于用户时下载文件的未驻留部分。下载可以是并行的,并且通常从最不拥堵的节点中进行下载。添加到网络的新节点从网络中的其他节点中学习它们应该具有什么内容并在不中断网络操作的情况下以期望的数量将所需要的内容从最近和最不拥堵的节点下载到其本地存储设备上。每个节点管理其本地存储器,并基于诸如使用模式的信息来决定要修剪的内容。
文档编号G06F17/30GK1481635SQ01820814
公开日2004年3月10日 申请日期2001年10月26日 优先权日2000年10月26日
发明者S·Y·辛, D·C·-H·陈, -H 陈, S Y 辛 申请人:普里斯梅迪亚网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1