大有效负载文件的分段的实时并行交付方法和设备的制作方法

文档序号:6475859阅读:258来源:国知局
专利名称:大有效负载文件的分段的实时并行交付方法和设备的制作方法
技术领域
本发明涉及一种用于大有效负载文件的分段的实时并行交付的系统和方法。特别地,本发明提供一种用于存储和向远程用户发送例如包含诸如音频、视频和/或其他数据的媒体内容的文件的有效体系结构和技术。
背景技术
在电信网络通信和交换中的进展正以极大的速度向前推进。然而,在位置之间传送大的文件(例如,诸如音频和/或视频文件的媒体内容)仍然是会花费相当多的时间的一项任务。例如,在向一个用户交付大的媒体文件、例如电影时,在可以开始使用该文件(例如,观看电影)之前,传送时间可以在很多分钟到数小时的数量级上。
用于避免在向用户展示媒体内容中的这种延迟的一种常规技术是在用户“附近”的网络中的各个位置复制该内容的拷贝。虽然这可以解决延迟问题,但它是一种昂贵的解决方案,因为这需要过多的存储空间来存储该媒体文件的多个拷贝。它还需要一个媒体管理应用程序来供操作员管理内容的复制拷贝。存储器管理员必须仔细地管理存储器资源,以确保各个地点不会充满。如果一个地点的存储器用尽,则将新内容复制到该地点的尝试将失败。
其他已知的技术包括应用级代理超高速缓存,例如网络超高速缓存和流型超高速缓存。这种解决方案不需要部署难以管理的数目的存储器。然而,只有当期望的内容被超高速缓存在一个在申请用户附近的位置时该解决方案才起作用。如果用户要求未被超高速缓存的内容,则该内容必须从另一个位置中检索,而这常常带有不可接受的延迟。
常规内容交付系统的另一个问题是,每个系统处理器或节点必须处理数个同时进行的进程或线程。这些多个线程和进程常常需要对存储在文件中的共享数据进行原子访问。如果这些线程或进程在一单个机器上运行,则可以使用由操作系统提供的锁定机制、例如互斥通信或旗语来实现原子性。然而,这样的锁定机制在一簇机器之间更加难以实现。此外,在使用网络文件系统(NFS)来在一簇机器之间共享文件时,文件锁定不可靠。对这个问题的一种解决方案是开发一个锁定管理器来许可对其他进程或线程的锁定。然而,设计一个可以处理故障(failover)的锁定管理器是困难的。由于锁定管理器必须记住它的客户,所以重构在故障之前的状态可能是一个挑战。
所需要的是一种克服了已知系统的局限性的用于分布大文件的系统和方法。

发明内容
本发明是一种处理大文件在诸如全球因特网的网络上的分布的系统、方法和计算机程序产品。本发明的可伸缩内容交付网络(SCDN)将多个分布中心或通信站放在网络上。并行下载机制确保一个被请求的文件及时地存在于一个通信站上以供用户消费。这个机制用于为可以用于交付大文件、例如在视频点播中遇到的那些文件的可读写综合网络文件系统解决内容超高速缓存和存储问题,这个问题通常被认为是工业上的一个难解决的问题。
本发明的并行下载机制根据其中包含的数据的性质将文件分成被称为磁道(track)的更小单位。磁道被进一步分成被称为块文件的更小的相同尺寸的单位。这个划分建立了并行下载的基础。在并行下载中,网络中的一个通信站从数个其他通信站并行地并以不邻接的方式下载块文件,从而实现高性能。另外,通信站从具有更高网络带宽的通信站下载较多的块文件,从具有低网络带宽的通信站下载较少的(或不下载)块文件。对哪些通信站具有高或低网络带宽的判定在运行时动态地完成。
并行下载中的并行处理在两级中实现进程级和线程级。在每个分布中心,多个分布服务器负责取出每个通信站中的随选数据。一簇分布服务器存在于任一通信站中并共享下载一个文件的工作负荷,执行进程级并行处理。此外,一单个分布服务器产生出数个线程来取出块文件,执行线程级并行处理。
并行下载中涉及的各个线程和进程需要原子访问存储在共享文件中的元数据。序列服务器为多个线程或进程提供一个无锁定(lock-free)机制来原子访问数据。它允许客户机获得对数据的顺序访问,或弄清楚序列是否已经被违反,以便可以重试其操作或采取校正行动。序列服务器通过将一个随机“序列数”与每个共享数据项相关来实现这一点。共享数据项是一个单元或块存储器索引或标志,指示所请求的块文件是被下载、未下载还是目前正在下载。当客户机向序列服务器请求共享数据项的值并表明其修改该值的意图时,序列服务器递增与该数据相关的序列数,并将数据以及(递增的)序列数返回客户机。客户机修改数据值(即,标志),并将其与序列数一起返回给序列服务器。序列服务器将返回的序列数与它目前所具有的该数据项的序列数进行比较。如果数不同,意味着别的客户机已经同时请求了数据项的值并且带有修改它的意图。换句话说,第一客户机的序列已经被违反在它试图执行一个读-修改-写操作时,它不具有对该数据的独占访问。序列服务器因此拒绝来自第一客户机的更新请求,并通知客户机该序列违反。第一客户机然后必须在需要时采取校正行动。根据客户机之间的上下文和约定,它或者通过再次请求一个新的读和一个新的序列数来重试操作,或者它让另一个客户机执行该操作。
本发明的系统包括网络上的多个分布中心或通信站。每个分布中心包括一个具有多个分布服务器的分布服务器簇、一个负载均衡器和一个序列服务器。分布中心进一步包括一个控制单元、一个与一个或多个应用服务器接口的虚拟文件控制系统簇、一个存储系统、一个存储开关和一个通信站内控制相关开关。
本发明在分布中心只存储文件的一部分。然后,当请求一个文件时,可以采用文件的本地存储的部分立即开始交付。在文件的本地存储的部分正在被交付时,分布中心可以从一个或多个其他分布中心取出文件的剩余部分。然后可以只响应于用户请求来汇编该文件。这减少了所需要的本地文件存储量,因为文件在每个分布站点都未被反射。
依据本发明,汇编文件的方法包括如下步骤基于一个请求来确定哪些内容组分(component)(即,块文件)是汇编文件所必需的;如果所有内容组分在第一节点都不存在,发送一个搜索请求以确定哪些其他节点具有内容组分;从其他节点接收对搜索请求的回答,来自一个响应节点的每个回答指示哪些内容组分可从响应节点得到;确定包括从其下载内容组分的至少一个节点的一个期望的集合;从期望的集合下载内容组分;以及,从下载的内容组分来汇编文件。要下载的内容组分或块文件的数量至少部分地基于与文件相关联的元数据来确定。
当一个分布中心从其他分布中心请求块文件时,采用一个分层树结构在分布中心之间有效地传送数据,同时限制请求必须被发送到的节点的数量。例如,分布中心的属性对于其相邻分布中心是已知的。类似地,任何文件请求包括被请求文件的分布标准。这允许每个分布中心比较属性并只将文件请求通过树结构发送给适当的分布中心。例如,具有包括“只限美国”的分布标准的文件不需要被发送到位于欧洲并具有属性“欧洲”的分布中心。
本发明还包括一个包含计算机可用介质的计算机程序产品,在介质中包含有计算机可读程序代码装置(means),用于使一个应用程序在计算机上执行,以响应于从用户发送给具有多个相连节点的网络中的第一节点的请求来汇编一个文件。计算机可读程序代码装置包括第一计算机可读程序代码装置,用于使计算机基于请求来确定哪些内容组分是汇编文件所必需的;第二计算机可读程序代码装置,用于在所有内容组分在第一节点上都不存在时,使计算机发送一个搜索请求以确定哪些其他节点具有内容组分;第三计算机可读程序代码装置,用于使计算机从其他节点接收对搜索请求的回答,来自一个响应节点的每个回答指示哪些内容组分可从响应节点得到;第四计算机可读程序代码装置,用于使计算机确定包括从其下载内容组分的至少一个节点的一个期望的集合;第五计算机可读程序代码装置,用于使计算机从期望的集合下载内容组分;以及第六计算机可读程序代码装置,用于使计算机从下载的内容组分来汇编文件。
本发明的优点包括多个线程或进程通过并行下载文件的一部分来以高性能下载一个文件的能力、以及在不同的机器上运行的多个线程或进程在其之间同步并行下载的能力。本发明的这些和其他特征和优点将在下面参考附图详细描述。


在附图中,类似的标号指示相同或大致相同的单元。此外,标号最左边的数位指示首先使用该标号的附图的编号。附图显示了本发明,并与说明书一起进一步用于解释本发明的原理,并使相关领域的技术人员能够作出和使用本发明。在附图中图1显示了依据本发明的一个实施例的可伸缩内容交付网络(SCDN)100;图2显示了依据本发明的一个实施例来安排网络100的节点的分层树结构;图3是依据本发明的一个实施例的样本属性位图;图4依据本发明的一个实施例的分布中心114的方框图;图5是依据本发明的一个实施例的分布中心114的更详细的方框图;图6是显示依据本发明的一个实施例的分布服务器簇406的方框图;图7显示了依据本发明的一个实施例的文件用块文件在网络100中的多个分布中心114之间的分布;图8显示了依据本发明的一个实施例的块文件在网络100中的多个分布中心114之间的管理;图9显示了依据本发明的一个实施例搜索回答是如何被负载均衡到分布中心114中的不同分布服务器504的;图10显示了依据本发明的一个实施例如何由分布服务器504执行并行下载的;图11显示了依据本发明的一个实施例的块文件下载的时线;图12是显示依据本发明的一个实施例的用于检索一个有效负载文件的块文件以供重新汇编的步骤的流程图;图13是显示依据本发明的一个实施例的序列服务器的操作的流程图;以及图14是提供本发明的一个代表性的实施环境的计算机系统1400的方框图。
具体实施例方式
本发明针对一种用于存储和分布大文件的方法和系统。特别地,本发明提供了用于处理、存储和向用户供应诸如媒体内容的文件以用于教育、娱乐、商业或任何其他目的的高效的体系结构和技术。依据本发明的方法、系统和计算机程序产品创建了一个将目录展示和数据存储分离开的先进的可读写综合网络文件系统。该方法和系统包括在不显著延迟向用户展示内容的情况下文件的划分、分布和重新汇编。本发明还包括综合文件系统的创建和包括卷、目录和文件的文件系统目标的分布。
本发明的一个实施例提供了一种用于在计算机网络(例如,诸如全球因特网的因特网)中划分和分布文件(称为“有效负载”或“内容”)改进的机制。本发明的另一个实施例提供了一种创建多个内容节点(也称为通信站或分布中心)的综合文件系统视图的方法。本发明的另一个实施例提供了一种分布、复制和同步诸如卷、目录和文件的文件系统目标的更新的方法。在下面的描述中,阐述了许多具体细节以提供本发明的实施例的更全面的描述。这些描述并不意味着限制。例如,这里参考了因特网协议和UNIX,但可以使用任何包协议并且可以使用任何操作系统。
术语“文件”在这里用于意味着一个数字数据或信息集合。对于术语“文件”,想要其既包括一个完全的文件,也包括一个文件的任何期望的部分。实例文件包括字处理文档、工作簿、数据库、电子表格、数字图象(例如,JPEG、TIF、GIF、位图等等)、电影(例如,MPEG文件)、音乐(例如,MP3和WAV文件)等等以及其任何部分。
本发明以访问文件系统目标的方式提供了最终用户系统,而不使由最终用户用来发送数据的网络超负载。在一个实施例中,系统通过将文件分解成多个部分(段或磁道)并将这些部分和其他文件系统目标存储在遍及网络分布的位置(例如,节点)中来完成这一点。利用一种提供文件系统目标和数据部分的智能管理的流程优化技术来分布遍及网络存储的文件各部分和其他文件系统目标。这样,文件系统目标和文件各部分被存储在使将内容交付给最终用户系统所花时间最少的位置中。这些位置使与将数据交付给最终用户系统相关的等待时间最少,在这里被称为网络的“边缘”。
在实现本发明的各个方面的网络的边缘的每个节点被配置为,当文件的各部分实际上存储在遍及网络的其他节点上时,看起来该节点好像具有本地存储的文件。这在不消耗系统资源的情况下极大地增大了每个网络节点的虚拟存储容量。节点以使数据传送效率最大同时使带宽消耗最小的方式分布和复制数据块和其他文件系统目标。当最终用户系统发出对内容(例如,一个文件)的请求时,将该请求发送给最近的节点,该节点以需要最少时间和成本的方式从其他节点引入所请求内容的非常驻数据。最终结果是每个网络节点可以到达众多的或所有的文件系统目标(卷、目录和文件),而不必在本地存储和保持这些目标中的每一个的全部内容。
本发明提供了用于划分一个文件以供存储以及然后重构该文件以供交付的高效方法和系统。划分一个大文件的进程被称为“程序分块”,将在下面详细描述。本发明还提供了一种从多个节点生成一个综合文件系统的方法。本发明进一步提供了一种在网络节点之间分布、复制和同步文件系统目标的方法,并提供了一种用于群集一组虚拟文件系统的方法和系统。一组虚拟文件系统的这种群集通过负载均衡提高了可靠性和可用性,同时增大了I/O带宽。
并行下载是在本发明的可伸缩内容交付网络(SCDN)中采用的机制,以确保一个被要求的文件及时地存在于通信站中以供用户消费。这个机制用于解决用于交付诸如那些在视频点播中遇到的大文件的内容超高速缓存和存储问题。
在网络中,根据其中包含的数据性质将文件分成被称为“磁道”的更小的单位。磁道进一步被划分成被称为“块文件”的更小的相同尺寸的单位。术语“内容组分”在这里用于意味着一个更大文件的一个或更多块文件。这个划分建立了在两级实现的并行下载的基础进程级和线程级。注意,每个进程可以包括多个线程。在网络中,被称为分布服务器的部件负责取出每个通信站中的随选数据。一个分布服务器与其他分布服务器共同存在于其通信站中以共享取一个特定磁道的工作负载。通信站中的所有分布服务器进行合作以便一起取出块文件,执行一个进程级并行处理。此外,一单个分布服务器产生出数个线程来取出块文件,执行线程级并行处理。
I.概述图1提供了依据本发明的一个实施例的用于交付大有效负载的可伸缩内容交付网络(SCDN)100的视图。网络100可以是一个诸如因特网的网络,在概念上包括一个网络核心102(即,主干)、范围在距离核心102“近”和“远”之间的中间网络段104。“近”和“远”与距离有关,想要指示距离核心102的相对路径等待时间(分别为短或长),这种等待时间一般取决于被横穿以到达形成网络100的核心102的高速主干并通过其传递大量网络通信的中间网络集线器(hub)(例如,开关、路由器等等)。注意,每个中间网络集线器在将通信传送到下一网络集线器之前可以执行一些有限的处理,这增加了等待时间。出于例示目的,段104A和104C被指示为距离核心102远,而段104B被指示为距离核心102近。
网络100包括多个内容提供者客户机(CPC)106、多个最终用户客户机(EUC)108和一个或更多内容管理服务器(CMS)110,所有这些都位于网络边缘112之外。这种结构是例示性的而非限制性的。例如,内容提供者客户机106、最终用户客户机108和/或内容管理服务器110可以位于网络中的任何地方,包括网络边缘之外、在网络边缘上或在网络内的任何位置、例如网络段104或核心102内。
多个分布中心或通信站114放在遍及网络100的各个位置。分布中心114负责管理内容交付。
一般地,每个内容提供者客户机106可以被连接(或指定)到一个内容管理服务器110,该内容管理服务器110依次连接到一个指定的分布中心114。或者,内容提供者客户机106可以连接(或指定)到任何分布中心114。在这种环境中,可以使用由网络100支持的任何连接。这种连接的例子包括物理链路(在任何有线或无线媒体上)、数据链路、逻辑链路、永久虚拟电路、交换虚拟电路、面向连接的协议、无连接协议或任何其他直接或间接网络连接和/或协议及其组合,但不限于这些。
内容提供者客户机106可以是一个用于管理网络中的内容的应用程序,或者它可以是一个连接到分布中心114中的虚拟文件控制系统(未显示)的一般的文件系统客户机。内容所有者通过一个相应的内容提供者客户机106创建、重命名、移动、删除和管理卷和目录。内容所有者还通过他或她的内容提供者客户机106上载、读取、更新和管理网络100中的文件。最终用户客户机108提供最终用户对网络100中的文件的内容访问。例如,最终用户客户机108可以是在一个最终用户的本地设备上运行的任何类型的浏览器(包括但不限于网络浏览器或任何文件系统浏览器)。可以使用支持最终用户客户机108的任何类型的最终用户设备,包括但不限于计算机(例如,个人计算机、工作站或服务器)、机顶盒、电视机、电话或手持计算设备(例如,管理器、个人数据助手、掌上设备等等)网络边缘112可以远离网络核心102。然而,核心和边缘之间的距离(即,路径等待时间)可以不是均一的,对于一给定内容提供者客户机106或最终用户客户机108可以变化相当大。本发明的一个实施例为各个最终用户客户机108放置了用于在网络100的边缘112保留有效负载从而减少和消除等待时间的多个分布中心(DC)114A-114G。将来自内容所有者的有效负载内容从一个分布中心114推向在网络100的边缘112的其他分布中心114。从包含所期望内容的最近的分布中心114(经由网络文件系统客户机或应用服务器)为一个寻求访问特定有效负载内容的最终用户提供服务。由路径因素引起的等待时间被最小化,因为内容经由位于网络边缘112的多个分布中心114被分布给最终用户(例如,一个相应的最终用户客户机108)。因此,分布包含从一个内容提供者客户机106获得任何文件系统目标和在地理上将这些目标或每个目标的各部分放在通常接近于网络边缘定位的分布中心114。
图1的网络100中的分布中心114A-114G例如以如图2所示的树的形式虚拟布置。这个虚拟树的布置主要用于控制信息和信号在网络100的节点(即,分布中心114)之间的通信。数据下载可以从具有期望的数据的网络中的任何节点、最好是从最近的节点(在网络距离上)来执行。图2的节点A到I代表多个分布中心114(例如,分布中心114A-114G加上两个其他的节点H和I)。节点以逻辑顺序安排。例如,假设节点B代表欧洲-英国,则欧洲中的逻辑子节点可以为欧洲-法国(例如,节点D)和欧洲-德国(例如,节点E),欧洲-法国的子节点可以是欧洲-意大利(例如,节点H)。在这个例子中,树的左边代表欧洲,右边代表亚洲。节点A是根节点,可以代表一个中央控制通信站(例如,图1中的中央控制通信站114A)。
如下所述,当一个分布中心114从其他分布中心114请求块文件时,采用分层树结构来在分布中心之间高效地传送数据,同时限制请求所必须发送到的节点的数量。例如,分布中心的属性(例如,位置、访问权限、树中的父和子节点、一般内容等等)对于所有其他分布中心是已知的。类似地,任何文件请求包括所请求文件的分布标准(例如,文件类型,截止时间,等等)。这允许每个分布中心来比较属性并只将文件请求通过树结构发送给适当的分布中心。例如,一个具有包括“只限美国”的分布标准的文件不需要被发送给位于欧洲的并具有属性“欧洲”的分布中心。
在一个或多个实施例中,树中的每个节点具有一个代表节点名字的唯一的属性集。一个节点的属性集被存储在节点中,并且可以在任何方便的数据结构中表示。例如,属性集可以表示为一个可变位图(位图是一个目标、例如一个数的二进制表示)。每个节点还包含节点的子、孙、曾孙等(即,从作为根节点的该节点发出的所有节点-直系子代)中的每一个的属性集的表示。这个表示被称为“属性的积累(rollup)集”,可以使用任何方便的数据结构来存储。因此,一个节点的积累集是其子节点的积累集的表示。例如,可以使用作为所有节点的子节点的积累属性(rolled up)位图的组合的“积累位图”。“积累位图”可以被定义为节点的子节点的积累属性的“二进制OR”(又称逐位OR)。
图3是依据本发明的一个实施例的属性位图和积累位图的图示。出于图示的目的,位图300、310、320、330、340和350使用16位,但由于位图是可变的,所以它们可以根据需要而变化,以识别每个节点并提供其他必需的信息。位图300代表图2的节点B的属性集,并且,作为其标识,使其位1、4和13设置为1以及使所有其他位设置为0。例如,将位1设置为表明节点B是A的子节点,将位4设置为代表欧洲,将位13设置为代表英国。位图310代表图2的节点D、B的一个子节点的属性集,并使其位1、4和14设置为1,使其所有其他位设置为0。位14例如代表法国。位图320代表图2的节点E、也是B的一个子节点的属性集,并使其位1、4和15设置为1,使其所有其他位设置为0。位15例如可以代表德国。位图330代表图2的节点H、D的一个子节点的属性集,并使其位1、4和16设置为1,使其所有其他位设置为0。位16例如可以代表意大利。如前面所讨论的,节点D的积累位图(例如,340)将是节点H的属性位图(因为H不具有任何子节点),节点B的积累位图(例如,350)将是位图310、320和330的二进制OR。二进制OR的结果是在位图310、320和330中设置的所有位也在积累位图350中设置(即,位1、4、14、15和16)。
内容管理服务器110可以连接到树上的任何节点。因此,虽然内容管理服务器110和分布中心114典型地将不设在同一位置,但内容管理服务器110给内容所有者一个将文件系统目标引入分布中心114并管理网络100中的文件系统目标的载体(vehicle)。内容管理客户机106可以直接连接到一个分布中心114以执行由内容管理服务器110提供的类似的功能。在一个实施例中,内容管理服务器110是处理内容所有者的文件系统目标以供在网络100中分布的计算机。在另一个实施例中,内容管理服务器110例如可以是允许网络100中的文件系统目标的管理、分布、访问和控制的工具(例如,与机器无关的目标)的子集;因此,这些工具可以被嵌入内容所有者的计算机中来用于网络中的大有效负载文件的处理和分布。在又一个实施例中,内容提供者客户机106可以是一个直接连接到分布中心114的虚拟文件控制系统的标准文件系统客户机,同时处理工具可以嵌入到虚拟文件控制系统中。在内容提供者客户机106将一个文件系统目标加载到内容管理服务器110之后,内容管理服务器110可以处理该目标并将其发送给分布中心114。
II.分布中心图4和5显示了一个代表性的分布中心114。注意,分布中心114也被称为通信站(STN)或数据中心。分布中心114包括分布服务器簇(DSC)406、应用服务器簇(ASC)408、控制单元(CU)402、共享存储系统414、存储开关412和通信站内控制相关开关410。控制单元402包括一个本地存储器404。分布服务器簇406利用通信链路407和411通过存储开关412与存储系统414进行通信。应用服务器簇408使用通信链路409和413通过存储开关412与存储系统414进行通信。控制单元402、分布服务器簇406和应用服务器簇408都通过与存储开关412通信的通信站内控制相关开关410进行通信。
A.应用服务器簇如图5所示,应用服务器簇408包括负载均衡和路由选择块506、多个应用服务器508、负载均衡和路由选择块510和虚拟文件控制系统(VFCS)服务器512。在第一实施例中,应用服务器508实际上不是分布中心114的一部分,仅仅以这种方式例示以便于解释。在这个实施例中,应用服务器508典型地与数据中心中的分布服务器114位于同一位置。应用服务器508是本发明的网络100的用户。例如,应用服务器508可以是流型视频服务器。分布中心114用作对流型视频服务器的接口。在这个例子中,流型视频服务器将实际使用分布中心114和网络100来检索要交付的内容(或媒体有效负载)。同样,负载均衡和路由选择块506典型地也不是分布中心114的一部分,而是外部的,并且管理进入应用服务器的通信量。
在第二实施例中,应用服务器508是以软件实现的,实际上可以是分布中心114的一部分。
VFCS服务器512经由负载均衡和路由选择块510从应用服务器508接收文件请求。VFCS服务器512然后提供对分布服务器簇406的接口以取出所请求的文件。所请求的文件然后经由VFCS服务器512返回应用服务器508。以这种方式,分布中心114用作应用服务器508的文件或目录系统。
B.分布服务器簇如图5所示,多个分布服务器504可以在分布中心114中群集在一起,以均衡其工作负载。分布服务器簇406尤其提供系统容错和可伸缩性。虽然在一个分布中心114中有多个分布服务器504,但它们作为对其他分布中心的一个接口。负载均衡器502向外部网络提供分布服务器504的接口。负载均衡器502在了解每个分布服务器的当前工作负载的情况下将请求调度给分布服务器504。
图6是分布服务器簇406的图示。分布服务器簇406包括多个分布服务器504-1到504-N(合称为504)和一个本地均衡器502。每个分布服务器504经由开关412访问共享存储系统414中的存储卷603-1到603-V(合称为603)上的数据(例如,块文件)。分布服务器簇406中的分布服务器504(例如,分布服务器504-1)可以经由作为出站通信量604的组分的请求向相邻的分布中心504的分布服务器504发出一个请求(例如,搜索请求)。类似地,相邻分布中心114的分布服务器504可以经由作为入站通信量606的组分的请求向分布服务器簇406内的分布服务器504发出一个请求(例如,学习请求)。负载均衡器502将入站通信量606调度到分布服务器504-1到504-N中的一个。负载均衡器502可以实现为一个与标准路由器进行各种拓扑组合的负载均衡路由器,并且还可以处理来自分布服务器504的出站通信量604。
每个分布服务器504将其请求(搜索,学习,等等)视为要执行的工作。工作在每个相应的分布服务器504的存储器(例如,随机存取存储器)中的工作队列601-1到601N(合称为601)中存储和管理。分别对应于工作队列601-1到601-N的工作队列图象602-1到602-N(合称为602)被存储在存储系统414的数据库中。如下面所讨论的,分布中心的控制单元402管理存储系统414中的这个和数个其他数据库。注意,仅仅为了方便图示才将包含工作队列图象602的数据库映射到存储卷603上。对于本领域普通技术人员来说显然的是,工作队列图象数据库和其他网络100相关数据库可以被映射到任何可用的存储卷上。
每个分布服务器504周期性地在存储系统414中的控制单元数据库中登记一个“心跳(heartbeat)”。周期性地,每个分布服务器504可以在数据库中检查其他分布服务器的心跳。在启动(例如,加电)期间,分布服务器簇406中的每个分布服务器504投票赞成一个“主服务器”。如果例如分布服务器504-1缺少了h个心跳,其中h是一个可配置的参数,则假设分布服务器504-1不再起作用。主服务器然后将与分布服务器504-1相关的工作重新分布给分布服务器簇406内的有效的(即,活动的)分布服务器504。如果主服务器停止工作,则所有活动的分布服务器504投票赞成一个新的主服务器。新的主服务器然后重新分布前一主服务器遗留的工作,如果有的话。
在控制单元数据库不再可访问的情况下,分布服务器504正常工作,除非其工作队列被反映到每个单个分布服务器504的本地存储单元(未显示)。在此期间,或者分布服务器的工作队列数据库不能被访问,或者分布服务器崩溃。如果任一个事件发生,则特定分布服务器将最终需要被重新启动。然后将读出和重新恢复在故障之前在其本地存储器(即存储系统414)中保存的所有工作。
III.文件的分布和检索并行下载是在网络100中采用的确保一个所要求的文件及时出现在一个分布中心114以供用户消费的机制。在并行下载中,根据其中包含的数据性质将文件分成被称为“磁道”的更小的单位。磁道进一步被划分成被称为“块文件”的更小的相同尺寸的单位。这个划分建立了在两级实现的并行下载的基础进程级和线程级。分布服务器504共享取一个特定磁道的工作负荷。分布中心114中的所有分布服务器504可以进行合作以便一起取出块文件,执行一个进程级并行处理。此外,一单个分布服务器504可以产生出数个线程来取出块文件,执行线程级并行处理。
为了使存储器使用最小化,文件不作为一个整体存储在每个分布中心114中。对于每个磁道,只有其少量块文件被前置。剩余的块文件根据需要从具有块文件的其他分布中心114取出。这个概念在图7中进行了显示。在图7中,一特定文件的磁道已经被分成多个块文件,并分布给网络100中的五个分布中心114-1到114-5。由于该特定文件在每个分布中心的不同观看方式,分布的比例在分布中心114之间是不同的。例如,分布中心114-1存储全部十个文件块,而通信站114-4只存储一个块。
在操作中,如果分布中心114-1被调用来交付文件,则它可以没有延迟地这样做,因为所有块都是本地存储的。类似地,虽然分布中心114-2只本地存储了文件的前五块,但它也可以没有长时间延迟地交付文件。这是通过交付(本地存储在分布中心114-2的)前五块同时从分布中心114-1取出剩余五块来完成的。其他分布中心114的操作类似。例如,分布中心114-4交付唯一的局部存储的块文件,同时从一个或多个其他分布中心114取出其余九个块文件。
A.文件分布协议(FDP)网络100中的分布中心114通过一个被称为文件分布协议(FDP)的协议相互通信。FDP的子集(即,准备、搜索和获取)包含在并行下载中。图8-10显示了网络100中的分布中心114如何通过采用FDP交换数据来相互通信。
首先,由应用服务器簇408(参见图5)中的一个虚拟文件控制系统(VFCS)服务器响应于一个用户请求产生一个PREPARE(准备)请求。PREPARE请求从VFCS服务器512经由开关410发送到分布服务器504。PREPARE请求触发一个分布服务器504来产生一个搜索一特定文件的磁道的缺少块文件的线程。如果为整个文件发出一个PREPARE请求,服务于请求的分布服务器504将产生与该特定文件中的磁道数目同样多的线程来分别取出每个磁道的块文件。然后,每个线程向网络100发出一个SEARCH(搜索)请求,要求来自存储有期望的磁道的分布中心114的回答。从其他分布中心114返回的回答将对它们为期望的磁道所拥有的块文件的范围编码。回答可以到达分布服务器簇406中的任何一个分布服务器504,而不必仅仅到达发送搜索的初始分布服务器504。
接收一个搜索回答的分布服务器504然后向回答的分布中心114发送一个GET请求,要求回答的分布中心114发送回答的分布中心所拥有的块文件的范围。这在图8中进行了例示,图8例如显示了从分布中心114-1、114-2、114-3和114-5接收搜索回答的请求分布中心114-4。对于它所接收的每个搜索回答,分布服务器114-4产生一个从相应的分布中心114取出块文件的线程。由于网络中的分布中心114对于一特定磁道可以具有重叠的块文件范围,所以有可能许多搜索回答可以是用于块文件的同一范围的。序列服务器505(参见图5)确保只有一个线程试图从任何其他分布中心下载一特定块文件。
由于负载均衡器502对不同分布中心114发送的搜索回答进行负载均衡,所以搜索回答将被均匀地发送给同一分布中心114上的不同分布服务器504。这在图9中进行了图示。在搜索回答到达一个不同于搜索请求的启动者的分布服务器504的情况下,接收者分布服务器504将自动从回答的分布中心114取出块文件,其中假设同一分布中心上的一个分布服务器504启动了该搜索。因此,这个分布服务器可以与也接收到对同一请求的搜索回答的其他分布服务器并行地取出块文件。下面描述不同进程和线程如何使用序列服务器505来在其间划分取出与一个磁道有关的块文件的工作负载的细节。接收搜索回答的所有分布服务器504进行合作来取出块文件,直到所有所需的块文件都被下载。这在图10中进行了图示。
B.块文件并行下载块文件为分布服务器504提供了足够的间隔尺寸来共享其负载。由线程采用块文件锁定机制来主张从一个远程分布中心114取出一块的权利。这些块文件中的每一个可以相对于一个分布中心114中的所有分布服务器504上的每一个线程在全局级上锁定。当被委托取出同一范围的块文件时,分布服务器504上的不同线程首先尝试为下一个缺少的块文件获得锁定。如果一个线程成功获得锁定,则它着手从发出搜索回答的同等的分布中心取出该块。如果一个线程未能获得下一个缺少的块文件的锁定,这意味着有它自己的进程中的另一个线程或另一个分布服务器504已经获得该锁定。在遇到一个锁定的情况下,线程着手尝试获得下一个缺少的块文件的锁定。
图11是显示不同进程如何共享其负载的时线。在这个环境中,一个进程可以包括一个线程或类似的操作。注意,因为一个进程可以包括一个或多个线程,所以在讨论由一个线程或进程实现的功能时,术语“进程”和“线程”可以互换使用。为了容易图示,假设搜索回答大约在同一时间到来。如图所示,分布服务器DS1接收到两个搜索回答。分布服务器DS2和DS3都只接收到一个搜索回答。对于每个回答,产生一个线程来与一个回答分布中心114对等。线程然后进行合作来从对等的分布中心114下载块文件。注意,线程1未能竞争到块文件1、2和3,因为线程2、3和4在获得锁定方面更快。线程1赢得了对块4、5、6、8、9和10的锁定并将其下载。线程2只成功获得了对块文件1和8的锁定。最快的线程、线程1完成了大多数下载。
C.文件服务操作图12是显示依据本发明的一个实施例的用于服务文件的步骤的流程图。在步骤1202中,一个分布服务器从VFCS服务器512接收一个PREPARE请求(响应于一个用户请求)。在步骤1204中,分布服务器504响应于PREPARE请求产生一个线程来服务该请求。在步骤1205,该线程以被称为DSSearchReplyCollector的在分布服务器504中的另一个线程进行登记。基于DSSearchReplyCollector,分布服务器504(在步骤1208)确定是否已经有另一个线程来服务一个先前的覆盖已经被请求的块文件的范围的请求。如果是,PREPARE请求被撤消,该方法在步骤1226结束。否则,该线程被视为有效,该方法继续进行到步骤1210。
在步骤1210,线程向其他分布中心发出SEARCH请求,以搜索所请求的块文件。在步骤1212,线程等待对SEARCH请求的回答。在步骤1214,将等待间隔与一个预定的超时期间进行比较。如果超时期间已经结束,该方法进行到步骤1216。否则,线程继续等待。超时期间用于测量一个搜索请求是否已经花了太长的时间来获得回答。如果具有期望的块文件的其他分布中心距离搜索分布中心非常远或者如果搜索回答都被发送给簇406中的其他分布服务器504,则会发生这种情况。
在步骤1216,启动GET请求来从回答的分布中心取出所请求的块文件。为每个GET请求启动一个新的线程。注意,在一个最佳实施例中,步骤1216可以在步骤1214之前执行。即,即使搜索线程仍然在等待来自远方的分布中心的另外的回答,也可以启动GET请求。
在步骤1218,确定是否仍然缺少任何所请求的块文件。即,如果超时期间已经结束并且仍然不知道一些块文件在何处,则搜索线程采取行动来从已知具有期望的块文件的先前指定的分布中心取出剩余的块文件。这在步骤1220中指示出。在其他分布服务器504已经获得搜索回答的情况下,本地线程将与那些分布服务器504中的线程进行合作来执行并行下载。在这两种情况下,步骤1222都等待所有线程结束。
为了对诸如分布服务器504的故障的情况进行容错,在所产生的取出块文件的线程的返回之后,在步骤1224运用一个“明智”测试。如果有由一个出故障的分布服务器引起的任何缺少的块文件,该线程将产生一个新的线程来从一个指定的分布中心114取出缺少的块。这由对步骤1220的返回所指示。
在取出了所有被请求的块文件之后,该方法在步骤1226结束。
IV.序列服务器在每个分布中心114,有许多同时发生的进程或线程。例如,有在一个应用服务器簇408中的不同物理机器上运行的多个VFCS(虚拟文件控制系统)服务器512,每个VFCS服务器512具有多个线程。类似地,有在不同物理机器上运行的多个分布服务器504,每个分布服务器504具有多个线程。这些多个线程和进程经常需要对共享数据进行原子访问。例如,当多个分布服务器504线程在下载块文件时,最好只有一个线程下载同一块文件。
如果线程或进程在一单个机器上运行,则可以使用由操作系统提供的锁定机制、例如互斥通信或旗语来实现原子性。然而,这样的锁定机制在一簇机器之间不起作用。虽然由一个共享文件系统提供的文件锁定可以用作一簇机器之间的锁定机制,但通常使用的网络文件系统(NFS)不具有可靠的文件锁定。如果使用一个向线程许可锁定的单独的锁定管理器进程,则难以处理诸如在一个客户机获得锁定然后消失时的故障情况。在本发明的一个最佳实施例中,序列服务器505为在一簇的不同机器上运行的线程和进程提供一个无锁定的方法来对数据进行原子访问。无锁定的访问便于故障处理。
A.序列服务器描述如上所述,序列服务器505为在不同机器上运行的多个线程或进程提供一个无锁定的机制来自动访问数据。它允许客户机获得对数据的顺序访问或发现该序列是否已经被违反,以使得客户机可以重试其操作或采取校正行动。序列服务器通过将一个随机“序列数”与每个共享的数据项相关来实现这一点。当客户机向序列服务器505请求共享数据项的值并表明其修改该值的意图时,序列服务器505递增与该数据相关的序列数,并将数据以及(递增的)序列数返回客户机。客户机修改数据值,并将其与序列数一起返回给序列服务器505。序列服务器505然后将返回的序列数与它目前所具有的该数据项的序列数进行比较。如果数不同,意味着别的客户机已经同时请求了数据项的值并且带有修改它的意图。换句话说,第一客户机的序列已经被违反在它试图执行一个读-修改-写操作时,它不具有对该数据的独占访问。序列服务器505因此拒绝来自第一客户机的更新请求,并通知客户机该序列违反。第一客户机然后必须在需要时采取校正行动。根据客户机之间的上下文和约定,它或者通过再次请求一个新的读和一个新的序列数来重试操作,或者它仅仅让另一个客户机执行该操作。
图13是显示两个线程如何使用序列服务器505来在一个共享数据项上执行原子读-修改-写操作的流程图。步骤1301-1306代表第一线程,步骤1307-1312代表第二线程。在步骤1301和1307,这两个线程都从序列服务器505请求该数据和一个序列数。响应于来自线程1的请求,序列服务器505递增序列数,并将数据和序列数首先返回线程1(步骤1302)。然后,响应于来自线程2的请求,它再次递增序列数,并将数据和新的序列数返回线程2(步骤1308)。其结果是,这两个线程都具有该数据,但具有不同的序列数。
接着,如步骤1303和1309所示,两个线程都修改数据,并返回修改的数据和给其的序列数。在步骤1304和1310,序列服务器505将线程返回的序列数与当前值进行比较。如果序列数匹配,如同线程2的情况一样,则序列服务器505接受新数据(参见步骤1311和1312)。如果序列数不匹配,如同线程1的情况一样,则序列服务器505拒绝新数据(参见步骤1305和1306)。线程1然后返回步骤1301并重试这一系列步骤。以这种方式,保证了每个线程的读-修改-写操作的原子性。
下面提供一个例子来解释原子访问的需要和序列服务器505的操作。作为背景,当一个文件要被存储时,有一个被称为文件“程序分块”的将文件分成多个块以及描述块的元数据的进程。程序分块在2001年5月17日申请的美国专利申请No.09/681,665中更加详细地描述了。分布服务器504以与真实数据的状态相一致的方式更新与一个块文件相关的元数据。换句话说,在时间上的任何瞬时,元数据必须精确地代表真实性。否则,在元数据不反映真实性的(小)间隔期间,存在着另一个线程可以访问不精确的元数据并且采取不正确的行动的风险。
在一个例子中,分布服务器504将一个存储器索引分配给每个块文件。存储器索引用于确定到文件的全路径。这个概念用于允许不同的块文件被存储在不同的存储设备上以获得更高的性能。例如,如果有n个存储设备,存储器索引为从1到n,分布服务器504以在存储设备之间均衡负载的方式将索引分配给块文件。在一个实施例中,采用循环法分布来实现负载均衡。
此外,在这个例子中,分布服务器504使用下面的约定存储器索引0意味着该块文件在磁盘上不存在;负的存储器索引意味着该块正在被写或删除,但操作还未完成(换句话说,它现在忙,其他设备此时不能使用该块);以及,正的索引数意味着该块文件在磁盘上可得到,该数可以用于确定文件的全路径名。
在没有序列服务器的情况下,(由分布服务器504)下载并将一个块文件保存到存储系统414中的一组本地存储卷中的算法如下读出该块的存储器索引如果索引是0{/*块不存在*/i=get_new_index()
将索引设置到-i/*负意味着忙*/下载块文件再次检查存储器索引/*在另一个线程也在做同一事情的情况下*/如果索引是-i{将索引设置到+i}否则{删除该文件/*因为别的线程也正在下载它*/}}注意,如果两个线程为同一块文件运行上述算法,则将发生下面的事件序列

由于存储在元数据中的最终的数是2,因此有一个在存储器索引1下载的孤立文件,在元数据中没有它的记录。在多个线程试图下载一个文件时(如同响应于一个SEARCH-REPLY(搜索回答)在分布服务器504中所发生的),存在着具有这种孤立文件的可能。
这个问题的出现是因为两个测试-和-设置操作—首先从0到-1然后从-1到+1不是原子的。因此,需要一种机制,使得多个线程可以在需要时自动访问数据。序列服务器5050提供了一种在不使用锁定的情况下实现原子访问的方式。
B.序列服务器操作基本思想是使所有线程通过序列服务器505访问存储系统414中的存储器索引。如上所述,序列服务器505将一个随机序列数与每个存储器索引相关。例如

当一个线程在存储器索引上进行“带有修改意图的读”时,序列服务器505递增序列数,并返回索引值以及(递增的)序列数。线程然后可以修改该值,并将新值与序列数一起返回序列服务器505。序列服务器505检查序列数是否匹配该存储器索引的当前序列数。如果是,它接受该修改的值。如果否,这意味着或者别的线程已经在中间读取了该值,或者序列服务器505刚刚从一次崩溃中恢复,已经产生了新的序列数。在任何一种情况,序列服务器505拒绝更新并返回一个失败。线程然后必须根据它正在尝试做的什么操作以某些方式处理该失败。它可以不做任何事,或者可以休眠一小段预定的或随机的时间,然后重试读-修改-更新。
序列服务器505在存储器(例如,随机存取存储器)中存储存储器索引,在本地磁盘上或存储系统414中的文件中存储一个拷贝。对索引的任何改变也在“直写”的基础上在文件中更新。序列数不存储在文件中。在崩溃的情况下,序列服务器505仅仅被重新启动,并从文件读出存储器索引,产生新的序列数。
当序列服务器505用于对存储器索引元数据的原子更新时,下载和保存一个块文件的算法变为从序列服务器读出该块的存储器索引“index”和序列数“Seq”
如果index是0{/*块不存在*/i=get_new_index()结果=在序列服务器以Seq将index设置为-i{/*负意味着忙*/}如果结果是okay{/*Seq与在序列服务器的数相匹配,并设置index*/}下载块文件从序列服务器读出该块的存储器索引“index”和“Seq”在序列服务器以Seq将存储器索引设置为+I}否则{退出/*其他人正在下载该块*/}}现在,如果两个线程为同一块文件运行上述算法,则将发生下面的事件序列

C.故障设计有一些要处理的故障模式将存储器索引设置为一个负数(意味着该块被认为是忙)的序列服务器505的故障和客户机(线程)的故障。序列服务器505的故障是直接的,因为没有锁定。采用常规技术监视序列服务器505的心跳。如果序列服务器505停止运转(例如,其心跳消失),它可以仅仅被重新启动。在它重新启动时,它从文件(如果存在的话)读入存储器索引,并产生一个新的(随机)序列数的集合。如果任何客户机试图以旧的序列数更新存储器索引,则操作将失败,客户机将必须以通常方式进行重试。
如果在为存储器索引设置了一个负数(指示一个未完成的操作)之后客户机崩溃,其他客户机不能永远等待存储器索引改变到0或一个正数(表明一个完成的操作)。序列服务器505处理这个情况如下。假定客户机A为一特定块文件将存储器索引设置为-1,然后停止运转。如果另一个客户机、假定客户机B读出存储器索引并发现它为-1,则如果可以的话(取决于它正在做的工作)它以其正常的行动过程继续。例如,它可以转移到下载下一个块文件。然而,如果客户机B直到这个负数改变之后才能继续,则它休眠一段足够表明客户机A已经停止运转的时间,然后假定A已经停止运转。这之后的行动过程再次取决于客户机B正在试图做什么。例如,如果它正在做一个明智检查以查看是否已经下载了所有块,则它继续前进并下载该块。
V.计算环境本发明可以以软件、硬件或其组合来实现,并且可以采用一个或多个计算机系统或其他处理系统来实现。可以用于实现例如内容管理服务器110、内容提供者客户机106、分布通信站114、控制单元402、分布服务器504、应用服务器508、序列服务器505或任何其他计算平台(这里也被称为“机器”或“服务器”)的计算机系统的一个例子是如图14所示的计算机系统1400。计算机系统1400包括一个或多个处理器、例如处理器1404。处理器1404连接到一个通信基础结构1406(例如,总线或网络)。可以用这个例示计算机系统来描述各个实施例。然而,在阅读了这个描述之后,如何使用其他计算机系统和/或计算机体系结构实现本发明对于相关领域的普通技术人员来说变得显而易见。
计算机系统1400还包括一个主存储器1408、最好是随机存取存储器(RAM),还可以包括一个辅助存储器1410。辅助存储器1410例如可以包括一个硬盘驱动器1412和/或一个代表软盘驱动器、磁带驱动器、光盘驱动器等的可移动存储驱动器1414。可移动存储驱动器1414以一种公知的方式从可移动存储单元1418读和/或向其写。可移动存储单元1418代表软盘、磁带、光盘等等。如同所理解的,可移动存储单元1418包括其中存储有计算机软件和/或数据的计算机可用存储介质。
辅助存储器1410还可以包括其他类似的用于允许计算机程序或输入数据被装入计算机系统1400的装置。这种装置例如可以包括可移动存储单元1422和接口1420。这样的例子可以包括程序盒式磁带及盒式磁带接口(例如在电视游戏设备中找到的)、可移动存储芯片(例如EPROM或PROM)和相关插座以及其他允许将软件和数据从可移动存储单元1422传送到计算机系统1400的可移动存储单元1422和接口1420。
计算机系统1400还可以包括一个通信接口1424。通信接口1424允许软件和数据在计算机系统1400和外部设备之间传送。通信接口1424的例子可以包括调制解调器、网络接口(例如一个以太网卡)、通信端口、PCMCIA插槽和卡等等。经由通信接口1424传送的软件和数据是采取信号1428的形式的,信号1428可以是能够由通信接口1424接收的电子、电磁、光学或其他信号。这些信号1428经由通信路径(即,信道)1426提供给通信接口1424。这个信道1426将信号1428载入和载出计算机系统1400,并且可以用电线或电缆、光纤、电话线、移动电话链路、RF链路和其他通信信道来实现。
在本发明的一个实施例中,信号1428可以输送由在计算机系统1400上运行的进程产生的文件内容或各种信号,以便取出/发送块文件和管理文件有效负载的汇编。
在这个文本中,术语“计算机程序介质”和“计算机可用介质”被用于普遍地指诸如可移动存储驱动器1414、安装在硬盘驱动器1412中的硬盘和信号1428的介质。这些计算机程序产品是用于向计算机系统1400提供软件的装置。本发明包括这种计算机程序产品。
计算机程序(也称为计算机控制逻辑)被存储在主存储器1408和/或辅助存储器1410中。计算机程序也可以通过通信接口1424接收。如这里所讨论的,这种计算机程序在执行时使计算机系统1400执行本发明的特征。特别地,计算机程序在执行时使处理器1404执行本发明的特征。因此,这种计算机程序代表计算机系统1400的控制器。
VI.结论虽然上面已经描述了本发明的各种实施例,但应该理解,这是以例子的方式展示的,而非限制性的。在不偏离本发明的精神和范围的情况下在其中作出各种详细修改对于相关领域的技术人员来说是显而易见的。因此,本发明不应该被上述例示性的实施例限制,而是仅仅依据下面的权利要求书及其等效方案来限定。
权利要求
1.在具有多个连接节点的网络中汇编文件以响应从用户发送到第一节点的请求的一种方法,包括如下步骤基于所述请求来确定哪些内容组分是汇编此文件所必需的;如果所有内容组分在第一节点上都不存在,发送一个搜索请求以确定哪些其他节点具有内容组分;从所述其他节点接收对所述搜索请求的回答,来自一个响应节点的每个回答指示哪些内容组分可从所述响应节点得到;确定从中下载这些内容组分的至少一个节点的一个期望的集合;从期望的集合中下载这些内容组分;以及从下载的内容组分中来汇编此文件。
2.如权利要求1所述的方法,其中所述内容组分是块文件,以及其中所述第一确定步骤包括至少部分地基于与此文件相关的元数据来确定所必需的块文件的数量。
3.如权利要求1所述的方法,其中所述发送步骤进一步包括参考一个属性集合和一个积累属性集合来识别多个节点之中的每一个节点。
4.如权利要求1所述的方法,其中在一个虚拟树中组织这些节点,并且所述发送步骤包括向虚拟树中的相邻节点发送一个通知以确定这些内容组分的存在,其中所述通知包括至少一个内容组分的分布标准。
5.如权利要求4所述的方法,其中所述发送步骤进一步包括向满足分布标准的网络中的至少一个节点传播搜索请求。
6.如权利要求4所述的方法,其中所述发送步骤进一步包括由接收到所述搜索请求的每个相邻节点将所述通知发送到与每个相邻节点是邻居关系的除了从中接收到所述搜索请求的相邻节点之外的邻近节点。
7.如权利要求1所述的方法,其中所述接收步骤包括从所述其他节点中接收对所述搜索请求的回答,来自一个响应节点的每个回答指示哪些内容组分可从所述响应节点中得到以及所述响应节点的性能特性。
8.如权利要求1所述的方法,其中所述下载步骤包括从第一响应节点中下载内容组分的第一部分,同时并行地从第二响应节点中下载内容组分的第二部分。
9.如权利要求1所述的方法,其中所述第二确定步骤包括确定从中下载内容组分的至少一个节点的一个期望的集合,其中所述至少一个节点是至少部分地基于第一节点的邻近来选择的。
10.如权利要求1所述的方法,其中所述下载步骤包括在所述第一节点上生成代表从具有内容组分的至少一个节点对一个内容组分的请求的进程。
11.如权利要求10所述的方法,其中所述下载步骤包括在所述第一节点生成多个进程,每个进程代表从所述多个节点中的一个节点对一个内容组分的请求。
12.如权利要求11所述的方法,其中所述下载步骤进一步包括将一个标志与要下载的每个内容组分相关,所述标志指示一个相关的内容组分是已经被下载、还未被下载还是当前正在被下载;将一个唯一的序列数与每个标志相关;响应于读出所述标志以确定所述相关的内容组分是否已经被下载的所述多个进程中的一个进程,递增所述序列数并将所述递增的序列数传送到所述读出进程;响应于所述读出进程的修改所述标志以指示所述相关的内容组分当前正在被下载的请求,将传送到所述读出进程的所述递增序列数和与所述标志相关的所述递增序列数进行比较;如果传送到所述读出进程的所述递增序列数匹配与所述标志相关的所述递增序列数,接受对所述标志的所述修改;以及如果传送到所述读出进程的所述递增序列数不匹配与所述标志相关的所述递增序列数,拒绝对所述标志的所述修改,从而当不止一个进程尝试下载同一内容组分时,避免竞争条件。
13.一种包含计算机可用介质的计算机程序产品,在所述介质中包含有计算机可读程序代码装置,用于使一个应用程序在计算机上执行,为响应于从用户发送给具有多个相连节点的网络中的第一节点的请求而汇编一个文件,所述计算机可读程序代码装置包括第一计算机可读程序代码装置,用于使计算机基于所述请求来确定哪些内容组分是汇编文件所必需的;第二计算机可读程序代码装置,用于在所有内容组分在第一节点上都不存在时使计算机发送一个搜索请求,以确定哪些其他节点具有内容组分;第三计算机可读程序代码装置,用于使计算机从所述其他节点接收对所述搜索请求的回答,来自一个响应节点的每个回答指示哪些内容组分可从所述响应节点得到;第四计算机可读程序代码装置,用于使计算机确定包括从中下载内容组分的至少一个节点的一个期望的集合;第五计算机可读程序代码装置,用于使计算机从期望的集合中下载内容组分;以及第六计算机可读程序代码装置,用于使计算机从下载的内容组分中汇编此文件。
14.如权利要求13所述的计算机程序产品,其中所述内容组分是块文件,以及其中所述第一计算机可读程序代码装置包括用于至少部分地基于与此文件相关的元数据来确定所必需的块文件的数量的装置。
15.如权利要求13所述的计算机程序产品,其中在一个虚拟树中组织这些节点,以及其中所述第二计算机可读程序代码装置包括用于向虚拟树中的相邻节点发送一个通知以确定内容组分的存在的装置,其中所述通知包括至少一个内容组分的分布标准。
16.如权利要求13所述的计算机程序产品,其中所述第三计算机可读程序代码装置包括用于从所述其他节点接收对所述搜索请求的回答的装置,来自一个响应节点的每个回答指示哪些内容组分可从所述响应节点得到以及所述响应节点的性能特性。
17.如权利要求13所述的计算机程序产品,其中所述第五计算机可读程序代码装置包括用于从第一响应节点下载内容组分的第一部分、同时并行地从第二响应节点下载内容组分的第二部分的装置。
18.如权利要求13所述的计算机程序产品,其中所述第四计算机可读程序代码装置包括用于确定从中下载内容组分的至少一个节点的一个期望的集合的装置,其中所述至少一个节点是至少部分地基于第一节点的邻近来选择的。
19.如权利要求13所述的计算机程序产品,其中所述第五计算机可读程序代码装置包括用于在所述第一节点上生成多个进程的装置,每个进程代表从所述多个节点中的一个节点对一个内容组分的请求;用于将一个标志与要下载的每个内容组分相关的装置,所述标志指示一个相关的内容组分是已经被下载、还未被下载还是当前正在被下载;用于将一个唯一的序列数与每个标志相关的装置;用于响应于读出所述标志以确定所述相关的内容组分是否已经被下载的所述多个进程中的一个进程来递增所述序列数并将所述递增的序列数传送到所述读出进程的装置;用于响应于所述读出进程的修改所述标志以指示所述相关的内容组分当前正在被下载的请求而将传送到所述读出进程的所述递增序列数和与所述标志相关的所述递增序列数进行比较的装置;用于在传送到所述读出进程的所述递增序列数匹配与所述标志相关的所述递增序列数时接受对所述标志的所述修改的装置;以及用于在传送到所述读出进程的所述递增序列数不匹配与所述标志相关的所述递增序列数时拒绝对所述标志的所述修改的装置,从而当不止一个进程尝试下载同一内容组分时,避免竞争条件。
20.一种基于计算机的系统,用于响应于从用户发送给具有多个相连节点的网络中的第一节点的请求来汇编一个文件,所述系统包括用于基于所述请求来确定哪些内容组分是汇编此文件所必需的装置;用于在所有的内容组分在第一节点上都不存在时发送一个搜索请求以确定哪些其他节点具有内容组分的装置;用于从所述其他节点接收对所述搜索请求的回答的装置,来自一个响应节点的每个回答指示哪些内容组分可从所述响应节点得到;用于确定从中下载内容组分的至少一个节点的一个期望的集合的装置;用于从期望的集合下载内容组分的装置;以及用于从下载的内容组分中汇编文件的装置。
21.如权利要求20所述的基于计算机的系统,其中所述内容组分是块文件,以及其中所述第一确定装置包括用于至少部分地基于与此文件相关的元数据来确定所必需的块文件的数量的装置。
22.如权利要求20所述的基于计算机的系统,其中在一个虚拟树中组织这些节点,以及其中所述发送装置包括用于向虚拟树中的相邻节点发送一个通知以确定内容组分的存在的装置,其中所述通知包括至少一个内容组分的分布标准。
23.如权利要求20所述的基于计算机的系统,其中所述接收装置包括用于从所述其他节点接收对所述搜索请求的回答的装置,来自一个响应节点的每个回答指示哪些内容组分可从所述响应节点得到以及所述响应节点的性能特性。
24.如权利要求20所述的基于计算机的系统,其中所述下载装置包括用于从第一响应节点下载内容组分的第一部分、同时并行地从第二响应节点下载内容组分的第二部分的装置。
25.如权利要求20所述的基于计算机的系统,其中所述第二确定装置包括用于确定从中下载内容组分的至少一个节点的一个期望的集合的装置,其中所述至少一个节点是至少部分地基于第一节点的邻近来选择的。
26.如权利要求20所述的基于计算机的系统,其中所述下载装置包括用于在所述第一节点上生成多个进程的装置,每个进程代表从所述多个节点中的一个节点对一个内容组分的请求;用于将一个标志与要下载的每个内容组分相关的装置,所述标志指示一个相关的内容组分是已经被下载、还未被下载还是当前正在被下载;用于将一个唯一的序列数与每个标志相关的装置;用于响应于读出所述标志以确定所述相关的内容组分是否已经被下载的所述多个进程中的一个进程而递增所述序列数并将所述递增的序列数传送到所述读出进程的装置;用于响应于所述读出进程的修改所述标志以指示所述相关的内容组分当前正在被下载的请求而将传送到所述读出进程的所述递增序列数和与所述标志相关的所述递增序列数进行比较的装置;用于在传送到所述读出进程的所述递增序列数匹配与所述标志相关的所述递增序列数时接受对所述标志的所述修改的装置;以及用于在传送到所述读出进程的所述递增序列数不匹配与所述标志相关的所述递增序列数时拒绝对所述标志的所述修改的装置,从而当不止一个进程尝试下载同一内容组分时,避免竞争条件。
全文摘要
一个可伸缩的内容交付网络(SCDN)采用一个并行下载机制来确保一个被请求的文件及时地存在于一个通信站上以供用户消费。这个机制用于为诸如视频点播的应用解决内容超高速缓存和存储问题,这个问题通常被认为是工业上的一个难解决的问题。在网络中,根据其中包含的数据的性质将文件分成被称为磁道的更小单位。磁道被进一步分成被称为块文件的更小的相同尺寸的单位。这个划分建立了并行下载的基础。序列服务器为多个线程或进程提供一个无锁定机制来原子地访问数据。序列服务器允许客户机获得对数据的顺序访问,或弄清楚序列是否已经被违反,以便可以重试其操作或采取校正行动。本发明的优点包括处理大文件的分布和进程定序的能力。
文档编号G06F17/30GK1481636SQ01820815
公开日2004年3月10日 申请日期2001年10月26日 优先权日2000年10月26日
发明者D·C·-H·陈, D C -H 陈, S·Y·辛, 辛, R·塔库尔, 舛, T·伊萨克森, 松, W·D·格罗普, 格罗普 申请人:普里斯梅迪亚网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1