背景技术
[0001] 数字内容的提供者需要将他们的产品分发给消费者的可靠且有效的方法。许多内容提供者缺少为满足来自广泛分布的终端用户的高标准需求所必需的
基础设施。缺少这种基础设施可使为服务
质量变低和在线体验普遍变差。
[0002] 内容分发网络(Content delivery network,CDN)保持出现在因特网的各处并且将内容提供者的内容对象作为服务来提供。在这个设备中,内容提供者将它的内容对象的分发转移给CDN。随后,该CDN以比集中式分配系统可能具有的可靠性和效率更高的可靠性和效率来启动向终端用户分配大量的内容。
发明内容
[0003] 公开了在内容分发网络中分配内容对象的技术。在一个
实施例中,CDN分配
服务器检测内容对象的可得到性并且确定内容对象是否是用于分配的候选。该分配服务器可以响应于提供者使新的或者更新的内容可在CDN内的内容
站点或者
位置处得到来检测内容对象的可得到性。该分配服务器获取候选的内容对象的标识信息,并且确定要在CDN内分配的内容对象的
选定部分。该选定部分可以是位于内容对象中的预
定位置处的预定数量的字节,这些字节的大小和位置可以根据特定于内容的映射数据来确定。该分配服务器可以在没有终端用户
请求的情况下将内容对象的选定部分推送给一个或更多个CDN边缘服务器。
[0004] 在一个实施例中,公开了一种CDN中分配内容的方法。在分配服务器处接收内容对象在CDN的第一位置处可得到的指示。该指示可以是当新的内容对象或者更新的内容对象上载到CDN源服务器时所触发的事件。该分配服务器可以从源服务器获得关于内容对象的信息并且可以确定内容对象是否是用于分配的候选。该分配服务器还可以将关于内容对象的信息与一组映射数据进行比较。如果确定内容对象是用于分配的候选,则内容对象的选定部分可以基于映射数据进行标识以便分配。该分配服务器能够从源服务器取回内容对象的选定部分并且可以确定要接收该内容对象的选定部分的多个边缘服务器。在多播通信中该内容对象的选定部分可以发送给多个边缘服务器。
[0005] 在另一实施例中,公开了一种内容分配服务器。该内容分配服务器包括连接到内容分发网络(CDN)的消息接发子系统。该消息接发子系统可以将事件消息与多个CDN边缘服务器交换。该内容分配服务器还包括可以存储映射数据或者在CDN中的其它地方可得到的映射数据的引用的
存储器。该映射数据可以包括内容标识符和对应于该内容标识符的字节值。该内容分配服务器可以包括从消息接发子系统接收表示内容对象在CDN的第一位置是可得到的事件消息的一个或更多个处理器。该一个或更多个处理器可以确定该内容对象是否是用于定位在CDN的边缘服务器的候选并且可以获得与该内容对象有关的标识符。使用标识符和映射数据,内容分配服务器可以从第一位置获得部分内容对象。该内容分配服务器可以标识多个接收边缘服务器并且可以在CDN上发送该部分内容对象。
[0006] 在又一个实施例中,公开了一种内容分发系统。该内容分发系统包括分配服务器和布置在一个或更多个多播组内的多个边缘服务器。分配服务器包括在内容分发系统的第一位置处检测内容对象的可得到性的消息
接口。检测该内容对象的可得到性可以在不用首先接收内容对象的分发的请求的情形下执行。该分配服务器还包括确定内容对象是否是用于定位的候选并且获取与内容对象有关的映射信息的目标分析器。当确定内容对象是用于定位的候选时该目标分析器基于映射信息可以从第一位置取回一部分内容对象。该分配服务器还包括用于根据内容提供者信息来确定目标多播组以接收部分内容对象的多播组管理器。该多播组管理器可以将该部分内容对象发送到与其它CDN工作异步的边缘服务器的多播组。
[0007] 多播组中的每个边缘服务器可以包括接收来自终端用户计算机的内容请求和将所请求的内容对象发送到终端用户计算机的请求接口。该边缘服务器还可以包括接收包含部分内容对象的多播消息的CDN接口。在每个边缘服务器的字节存储区可以配置为存储部分内容对象。该部分内容对象可以包括随着相应的完整内容对象的类型而改变的字节数量和字节选择。存储
控制器可以将从分配服务器接收到的部分内容对象增加到字节存储区并且可以响应于接收内容请求而从字节存储区取回数据。如果确定字节存储区没有包含与内容请求有关的部分内容对象,则存储控制器可以产生CDN事件。
[0008] 本公开的其他应用方面根据以下提供的详细说明将变得明显。需要理解的是,虽然显示了各种实施例,但该详细说明和具体示例仅仅是为了说明而必然不是想限制本公开的范围。
附图说明
[0009] 图1示出了内容分配系统的实施例。
[0010] 图2示出了出现CDN存在点的实施例。
[0011] 图3示出了内容分配服务器的实施例。
[0012] 图4示出了示例性定位数据。
[0013] 图5示出了示例性映射数据。
[0014] 图6示出了示例性多播消息。
[0015] 图7示出了分配部分内容对象的示例性方法。
[0016] 图8示出了边缘服务器的一个实施例。
[0017] 图9示出了保持部分对象内容存储区的示例性方法。
[0018] 图10示出了响应内容请求的示例性方法。
[0019] 图11示出了使在多播边缘服务器组中的部分对象内容存储协调的示例性方法。
[0020] 在这些附图中,相似的组件和/或特征可以具有相同的附图标记。在一些情况中,通过用破折号和进一步区分相似元件的第二附图标记跟着第一附图标记来标识相同类型的元件。如果仅仅使用第一参考标记,则该说明适用于由第一附图标记
指定的任何相似元件。
具体实施方式
[0021] 接下来的说明只是提供优选的示例性实施例,并且该优选的示例性实施例不是想限制本发明的范围或者可应用性。更确切地说,接下来的说明将使本领域技术人员能够实施这种优选的示例性实施例。本领域技术人员将认识到在不脱离所附
权利要求书中提出的本发明的精神和范围的情形下可以对元件的功能和布置进行各种改变。
[0022] 首先参考图1,其是示出内容分配系统100的实施例的
框图,在该内容分配系统100中内容始发站106将内容对象的分发转移到内容分发网络(content delivery network,CDN)。内容始发站106产生和/或分配内容对象,并且可以包括内容提供者108和内容站点110。CDN经由终端用户系统102在因特网104上将内容对象分发到终端用户128。
[0023] 如图所示,CDN可以包括源服务器112、分配服务器(也称为“控制服务器”)116和各种存在点120(points of presence,POP)。POP 120可以配置在内容分配系统100的各处并且可以在特定的地理区域中和/或通过特定业务提供者将内容对象提供到终端用户系统102。例如,POP 120可以指定为将内容对象供应到特定接入网络上、特定城市中或者特定城市中的特定接入网络上的终端用户128以便于有效的分发和促进良好的用户体验。正如这里所使用的,内容对象是任何内容文件或者内容流并且可以包括例如视频、图片、数据、音频、
软件和/或文本。在这
说明书中,术语“内容对象、内容、内容流和/或内容文件”可以可交替的方式使用。
[0024] 当内容提供者108产生新的内容或者对现有的内容更新时,它们可以通过CDN将内容对象上载到用于分配的源服务器112。源服务器112包括保存一个或更多个内容提供者108的内容对象的副本的存储器114并且可以用作CDN内的内容对象的来源。在一些实施例中,CDN的元件可以监测内容站点110并且当新的和/或更新的内容对象变得可得到时可以将它们复制到源服务器112。
[0025] 当终端用户128通过它各自的终端用户系统102来请求分发内容时,该请求可以经由因特网104直接或者间接地传递到内容站点110。终端用户系统102可以是个人电脑、媒体播放机、手持式计算机、因特网设备、电话、IPTV机顶盒、流式收音机或者接收和处理内容对象的任何其它的装置。内容站点110可以是可用网络浏览器浏览内容的网络站点。一些或者所有的内容站点110还可以用除了网络浏览器以外的
应用软件来
访问。
[0026] 当内容请求被接收时,可以将该内容请求从内容站点110重定向到CDN位置。这可以包括制订分发路径和将该分发路径嵌入到与网页或者其它的机制有关的URL。一旦内容的请求传递到CDN,它可以被分派给POP 120,POP 120进而管理所请求的内容对象到终端用户系统102的分发。
[0027] 如果内容对象在指定的POP位置是不可得到的,则内容对象的请求可以朝向CDN的核心传播并且最终可以从在源服务器112的存储器114被完成。在某种意义上,内容对象通过CDN拖拉(pull)到POP 120,该内容对象可以从POP 120分配给发出请求的终端用户系统102。在请求之后,完整内容对象可以缓存在核心CDN和网络边缘之间的一个或更多的位置。随后的内容对象的请求可以从该所缓存的位置被完成。
[0028] 将内容对象从源服务器112拖拉到发出请求的终端用户系统102也许是耗时和资源密集的。另一方面,在CDN边缘处保存每个内容对象的副本是低效率的,因为许多内容对象只是偶尔被请求。此外,如果所有对象永久地存储在边缘位置处,则所得到的系统将具有有限的可扩展性。
[0029] 分配服务器116使向终端用户128快速分发内容对象的需求与有效地利用网络资源的需求达到平衡。当内容提供者108将新的或者
修改过的内容对象上载到存储器114时分配服务器116可以监视在源服务器112处的内容对象的状态。在各种实施例中,分配服务器116可以连接到CDN的消息接发系统118并且可以在源服务器112处出现内容相关的事件时通过WAN 122接收通知。例如,消息接发系统118可以是基于
高级消息队列协议(Advanced Message Queuing Protocol,AMQP)的
中间件。CDN消息接发可以是发布和订阅、请求-响应或者其它的链接,分配服务器116通过该链接对源服务器112处的内容相关事件进行监测、检测和/或警报。
[0030] 当新的内容对象被增加或者现有的内容对象被改变时,分配服务器116进行分析以确定该改变是否应该反映在CDN中。确定是否根据源服务器112处的事件进行作用可以基于内容提供者的需求、内容对象的类型、地理考量、网络考量、终端用户考量或者许多因素的组合。例如,内容提供者108可能希望将它的内容对象指向特定地理区域中的用户,该用户将使用诸如音乐播放器、视频播放器、文档阅读器等特定类型的软件应用以特定数据格式来访问内容。
[0031] 如果分配服务器116确定CDN事件是可动作的,它可以从源服务器112获取关于内容对象或者内容对象本身的一部分的元数据。使用这个信息,分配服务器116可以确定分配到CDN中的POP位置的部分内容对象。部分内容对象可以包括少量字节或者基于内容的类型所确定的其它数据单元。例如,如果内容对象是窗口媒体视频(Window Media Video,WMV)文件,分配服务器116可以选择表示编
解码器的字节、
帧大小和与内容再现有关的其它属性。在一些实施例中,分配服务器116保存特定于内容的映射,通过该特定于内容的映射来确定的相关数据单元的位置。
[0032] 当从源服务器112获取内容对象的相关部分时,分配服务器116确定在CDN中该内容对象应该分配在哪里。这个操作可以单独进行或者它可以与确定在源服务器112的事件是否是可动作的操作一起进行。例如,确定事件是否可动作可能导致进一步确定CDN的哪部分被影响。因此,如果公司X希望瞄准洛杉矶市场来分配移动装置的内容,则分配服务器116可以同时确定与公司X内容有关的新文件事件是可动作的并且通过分析所确定的新内容对象的部分应该分配给服务于适当的地理区域、
硬件平台、软件平台等的POP120。
[0033] 在一些实施例中,服务器116将一个或更多个多播数据包中的部分内容发送给POP 120。需要注意的是,与请求驱动的操作不同,116可以响应于出现在源服务器112处的事件来将部分内容拖拉到POP 120。有利地,该处理可以与其他的CDN操作异步地进行并且可以避免拖拉数据(或者模拟拖拉)以将部分内容移动到边缘位置的需求。
[0034] 在POP 120处的边缘服务器接收多播包并且可以将部分内容对象增加到本地的数据存储区。因为多播包常常仅包括很少字节的内容对象,因此对应整个内容库的部分内容对象可以容易地保存在本地数据存储区中。同样,因为边缘服务器可以在对CDN操作的影响最小的情形下来有效地增加、更新或者移除,因此CDN中的可扩展性被保持。此外,当内容请求被接收时,部分内容对象可以迅速地分配到发出请求的终端用户系统102并且被客户机软件使用以准备接完整内容对象。例如,为了启动客户机软件、选择适当的编解码器、调整阅读器窗口的大小、更新文件特性等,WMV内容对象的相关字节可以直接地传递到终端用户系统。以这种方式,即使当必须从远程位置取回完整内容对象时,CDN的所
感知的响应度提高。
[0035] 接着参考图2,示出了可以是分散在CDN各处的许多个POP 120中的一个POP 120的实施例的框图。在该实施例中,POP 120包括内容请求接口220、边缘服务器选择功能224和均具有相应的内容存储区232的多个边缘服务器230。如以上结合图1所述,当内容的请求移交到CDN时,它可以与对所请求的内容对象到终端用户的分发进行处理的特定POP120相关。
[0036] 指定的POP 120通过内容请求接口220接收内容请求。边缘服务器选择功能224将请求分派给负责将内容对象发送给发出请求的终端用户系统102的边缘服务器230。边缘服务器选择功能224可以通过重定向该请求,经由域名服务(domain name service,DNS)解析来从POP处的边缘服务器230组中选择边缘服务器(例如,230-2)或者通过其它已知的机制选择边缘服务器。
[0037] 可以在选择边缘服务器230的处理中通过边缘服务器选择功能224来将各种参数纳入考虑。影响特定边缘服务器的选择的参数示例可以包括内容对象特性、分派给特定内容提供者的服务器、优质的服务(QoS)、性
能量度、CDN边缘服务器230的容量和/或边缘服务器230和终端用户系统102之间的路由效率。需要注意每个POP位置可以包括许多的边缘服务器。
[0038] 一旦内容的请求被分派,所选择的边缘服务器230确定对应于所请求的内容的部分内容对象在其关联的内容存储区232中是否是可得到的。如果部分内容对象是可得到的,它可以快速地发送给请求者以便可以开始准备接收完整内容对象和提高终端用户128的体验。当部分内容对象被发送时,完整内容对象可以从POP 120内的一个或更多个缓存位置取回,或可被所选择的边缘服务器230存取。以这种方式,所请求的内容对象以有效的、本地化的方式分配给终端用户128。
[0039] 如果部分内容对象在所分派的边缘服务器230的内容存储区232中是不可得到的,则所请求的内容对象可以从远程位置取回。远程位置可以是源服务器112或者在相同或者不同的POP 120中的另一个CDN边缘服务器。然后,所请求的内容对象可以存储在可被所选择的边缘服务器230存取的缓存器中并且分配给发出请求的终端用户128。对于完整内容对象,边缘服务器230可以用作缓存代理服务器并且可以将在其多层缓存器中不可得到的内容对象的请求传递到核心网络。
[0040] 作为部分内容收回处理,所选择的边缘服务器230可以产生至分配服务器116的事件或
信号,该分配服务器116的部分目标内容存储区232需要被更新。当新的边缘服务器230被增加至POP时,例如,它的内容存储区232需要与分配服务器116的当前状态协调。替代地,当边缘服务器230在离线后返回到服务时,它的内容存储区232需要增量更新(incremental update)。边缘服务器选择功能224保证当更新未决时无效数据不被供应。
[0041] 接着参考图3,示出了分配服务器300的实施例的功能框图。分配服务器300可用于内容分配系统100并且包括消息接发子系统310、内容对象分析器320和多播组管理器350。消息接发子系统310可以将消息发送到包括源服务器112、POP 120和边缘服务器230的CDN的其它元件和从CDN的其它元件接收消息。该消息可以使用私有协议或者诸如AMQP等标准化协议由中间件来产生并且可以遵循发布和订阅、请求-响应或者其它的通信样式。在一个实施例中,分配服务器300在源服务器112订阅事件并且将它的事件通过代理程序发布到边缘服务器230,但是在本发明范围内可以进行许多变化。
[0042] 消息接发子系统310将所关心的CDN事件传送给内容对象分析器320。CDN事件可以包括文件创建事件、文件更新事件、策略更改事件或者与内容对象的定位和/或分配有关的其它事件。例如,当内容提供者108将内容对象上载到源服务器112时,源服务器文件系统可以产生文件创建事件。文件创建事件可以传播到分配服务器300并且由作为内容相关的文件系统事件的订阅者的消息接发子系统310接收。作为另一个示例,分配服务器300可以根据内容提供者的分配策略周期性地请求更新并且接收更新信息的响应。
[0043] 当检测到内容相关事件时,消息接发子系统310通知内容对象分析器320。内容对象分析器320可以从源服务器112请求关于内容对象的信息。例如,内容对象分析器320可以请求新的或者改变的对象的元数据。在一些情况中,元数据是由内容提供者108产生并且可以包括关于该类文件的信息和适用于CDN内的它的分配的交易规则或策略。替代地或者另外地,内容对象分析器320可通过在内容对象所处的服务器上执行处理来获取关于内容对象的相关信息。例如,内容对象分析器320可以从在源服务器112处进行的文件分析处理来推断输出。
[0044] 内容对象分析器320利用内容对象信息来确定内容对象是否是定位在CDN内的部分对象的候选。在一个实施例中,内容对象分析器320将该信息与保存在分配服务器116的定位数据330相比较。定位数据330可以反映交易规则、客户服务协议和与来自内容提供者的特定类别的对象是否应该分配和部分对象分配应该发生在什么CDN位置处有关的其它判定数据。
[0045] 图4示出了诸如可以与分配服务器300一起使用的示例性定位数据400。为了方便起见,定位数据400显示为具有表格格式但是可以是任何合适的数据结构。提供者ID和内容位置栏可用于标识在特定内容站点或者CDN位置处可得到的对应特定内容提供者108的内容对象。内容类型栏可以用于将定位数据400中的项目与诸如视频、音乐、
电子书、文档等内容的特定类型相关联。内容定位和多播组栏可以表示指定内容是否应该定位在CDN中,如果是这样的话,它应该定位在哪里。
[0046] 内容对象分析器320将关于新的/更新的内容对象的信息与定位数据400匹配并且确定是否采取进一步的动作。例如,基于该示例性定位数据,如果确定新的/更新的内容对象是由提供者Alpha上载到位置O1的视频对象,则内容对象分析器320可以确定该对象的一部分应该分配给多播组M1、M2、M3和M4。另一方面,如果新的/更新的内容对象由提供者Beta上载到位置O2,则不需要进行部分对象定位。如先前所述的,可以基于用户协议、目标市场、需求程度、内容种类、目标计算平台或者这些因素的任何组合来做出关于定位在CDN中的部分对象的决定。
[0047] 当做出放置内容的决定时,内容对象分析器320确定应该分配内容对象的哪个部分。该确定可以基于保存在分配服务器300的映射数据340来做出。映射数据340可用于通过分配服务器300来标识用于取出的内容的相关部分。然后可以将这部分或者这部分内容对象分配给由定位数据330标识的多播组。
[0048] 图5示出了诸如可以与分配服务器300一起使用的示例性映射数据500。正如定位数据400,映射数据500以表格格式示出但可以是任何合适的数据结构。内容ID栏包括对应于内容对象的类型的数据。在该示例中,内容ID表示唯一地标识内容对象的类型(例如,Doc.L、Video.X、Audio.Q等)的文件形象(magic)信息并且可以选择性地反映诸如容器类型、音频编解码器和/或
视频信号编解码信息等附加信息。然而,目前描述的实施例不限于特定形式的内容标识。
[0049] 内容对象分析器320使用所获取的关于新的/更新的内容对象的信息来从映射数据340取回项目。例如,使用示例性映射数据500,如果新的/更新的对象的内容标识符是0xF78B,内容对象分析器320将确定部分内容对象应该包括从文件的起始取得的6个字节(偏移量=0)。另一方面,如果新的/更新的对象的内容标识符是0x30B2,对应于内容类型音频.Q,则内容对象分析器320将确定部分内容对象应该包括在新的/更新的内容对象的第一字节(偏移量=1)之后的3个字节。以这种方式,映射数据340可以根据内容的类型来指定内容对象中相关字节的数量和相关字节的位置。使用来自映射数据的结果,内容对象分析器320可以从源服务器112获取部分内容对象。
[0050] 多播组管理器350从内容对象分析器320接收部分内容对象和多播组,并且组装一个或更多个数据包以传输到边缘服务器230。例如,使用多播组信息,多播组管理器350可以将包含部分内容对象的数据包传输到一个或更多个POP 120位置处的边缘服务器
230。
[0051] 图6示出了诸如可以由多播组管理器350产生的示例性多播包600。正如所示,多播包600包括多播组地址、序列ID、请求名称和部分内容对象有效
载荷。多播组地址可以与定位数据330中的多播组项目对应并且可以标识边缘服务器230以接收部分内容对象有效载荷。序列ID可以表示对于特定内容集合、特定源服务器等分配服务器300关于部分内容对象的的当前状态。如下所述,序列ID可用于与边缘服务器相协调或者利用边缘服务器更新处理。内容名称与由终端用户系统102使用的标识符对应,以请求CDN中的内容对象,并且内容名称可以例如基于对象的URI或者其它的标识符。
[0052] 图7是示出用于分配CDN中的部分内容对象的示例性方法700的
流程图。方法700可以由工作在如图1所示的CDN内的分配服务器116来进行。在一些实施例中,方法700由执行程序指令的一个或更多个处理器来执行,以控制分配服务器300的操作,如结合图3所描述的操作。程序指令和数据元素可以存储在诸如
随机存取存储器(random-access-memory,RAM)、
只读存储器(read-only memory,ROM)、闪速存储器、磁存储器、光存储器等计算机可读存储介质上。
[0053] 在模
块710,在分配服务器处接收表示内容对象在CDN中的第一位置处可得到的消息。该消息可以是当内容提供者将新的内容增加给源服务器或者修改现有的内容对象时在CDN中触发的事件或者通知。替代地,该消息可以是对由CDN启动的针对用户网络内的位置的内容检查的响应。新的或者更新的内容可以从用户网络转移到CDN中的位置。
[0054] 在模块720,分配服务器获取关于新的或者更新的内容对象的信息。该信息可以包括文件元数据、标识符、指纹、杂乱信号(hash)等。在模块730,基于该信息,分配服务器确定该内容是否是在CDN中部分对象定位的候选。确定该内容是否是用于定位的候选可以由内容对象分析器320基于诸如内容提供者、内容的类型、内容的位置、交易规则或者因素和布置逻辑的其它任何组合等来自定位数据330的准则来做出。如果确定该内容不是部分对象定位的候选,该方法结束。
[0055] 如果确定该对象是用于定位的候选,在模块740,分配服务器确定用于分配的内容对象的一个或更多个部分。在各种实施例中,内容对象的部分由内容对象分析器320使用映射数据340来选择,使得字节数量和字节位置是基于内容的类型。诸如应用软件的行为等与终端用户系统102有关的其它需要考虑的事项也可能影响部分内容对象的选择。在模块750,分配服务器选择一个或更多个多播组以接收该部分内容对象。该多播组可以基于定位数据330来选择并且可以反映与内容提供者有关的交易规则的应用。
[0056] 在模块760,分配服务器将部分内容对象发送到所选定的多播组的边缘服务器。以这种方式,部分内容对象被推送到边缘位置而不是响应于内容请求而被拖拉。推送该部分内容对象不需要接收内容请求或者模拟数据拖拉并且可以与其它CDN操作异步的方式而完成。通过对处于边缘位置的部分内容对象进行定位,即使当从其它CDN位置获得完整内容对象时,也可以提高整体的用户体验。
[0057] 图8是诸如可以位于内容分配系统100的POP 120的边缘服务器800的一个实施例的功能框图。如图所示,边缘服务器800包括CDN接口810、数据存储控制器820、优化部分对象内容存储区830和内容请求接口840。
[0058] CDN接口810从分配服务器接收多播包(诸如图6所示)并且可以提取序列ID、请求名称和部分对象有效载荷或者其它数据元素。数据存储控制器820将部分对象存储在优化内容存储区830中并且用来自多播包的信息对本地序列ID进行更新。基于对象的URI或者其它的标识符,该对象可以使用杂乱信号来从内容存储区830取回。例如,如果多播包包含由来自VIDEO.FLV的两个字节所组成的部分内容对象,则数据存储控制器820在对应于VIDEO.FLV的项目中将两个字节部分写入到内容存储区830。数据存储控制器820还将多播包的序列ID记录为内容存储区830的状态的指示。需要注意的是,部分对象被增加至内容存储区830的方法可以与边缘服务器800的其它操作异步并且不依赖于终端用户请求。同样,从CDN的观点来看,部分内容对象从核心网络推送(而非拖拉)到边缘位置。
[0059] 内容请求接口840接收和处理来自终端用户系统的内容请求。当请求被接收时,内容请求接口840将所请求的对象的标识符传递给数据存储控制器820。数据存储控制器820确定对应于所请求的内容的部分内容对象在内容存储区830中是否是可得到的。例如,数据存储控制器820可以尝试将所请求的内容与内容存储区830中的可得到的字节的索引(index)匹配。如果是匹配的,控制器820取回对应于所请求的内容的部分对象并且迅速地将它发送给请求者。如先前所指出的,部分内容对象可以被选择以使终端用户系统能够通过例如启动合适的软件、确定与内容对象一起使用的合适的编解码器、调整阅读器的尺寸和位置等来开始准备接收完整内容对象。
[0060] 如果相应的部分内容对象在内容存储区830中是不可得到的,则边缘服务器800可以检查在CDN的一个或更多个缓存层中是否找到了所请求的对象。缓存层可以相对于各个POP 120而布置以便将内容对象保持在CDN边缘附近从而使它们的可得到性最大化。如果在缓存层中未找到所请求的对象,它可以从合适的源服务器取回并且为响应于随后的请求而保留在一个或更多个中间缓存级中。在这个情况下,边缘服务器800用作将内容从CDN内的位置分发到终端用户系统的处理中的传递(pass-through)装置。
[0061] 边缘服务器800还可以直接或者间接地发信号给分配服务器116,所请求的内容的部分内容对象在所述分配服务器116的内容存储区830中是不可得到的。在一些实施例中,边缘服务器800包括消息接发系统118,边缘服务器800通过该消息接发系统118链接到分配服务器116和CDN的其它元件。使用该消息接发系统时,当部分对象在内容存储区830中是不可得到的时,数据存储控制器820可以触发事件,并且分配服务器116可以通过进行如这里描述的协调处理来对该事件作出响应。替代地,分配服务器116可以在CDN缓存级监测事件,以确定什么时侯特定边缘服务器800或者多播组的协调是合适的。
[0062] 图9是示出保持部分内容存储区的示例性方法900的流程图。方法900可以由工作在诸如图1所示的内容分发系统100等CDN内的边缘服务器230来进行。在一些实施例中,方法900由执行程序指令的一个或更多个处理器进行以控制如图8所述的边缘服务器800的操作。程序指令和数据元素可以存储在诸如随机存取存储器(random-access-memory,RAM)、只读存储器(read-only memory,ROM)、闪速存储器、一个或更多个磁存储器、光存储器等计算机可读存储介质上。
[0063] 在模块910,边缘服务器接收包括部分内容对象的多播数据包。该数据包可以与多播包600相似并且可以包括具有部分内容字节的各种标识符。在模块920-930,该边缘服务器提取标识符和相应字节的内容对象并且将它们记录在它的内容存储区中。这可以包括将内容对象的名称与相应字节关联并且更新部分对象内容存储区的序列标识符。当处理完成时,该部分内容对象可获得,以从边缘服务器分配到终端用户系统。
[0064] 图10是示出对内容请求作出响应的示例性方法1000的流程图。方法1000可以由工作在诸如图1所示的内容分发系统100等CDN内的边缘服务器来进行。在一些实施例中,方法1000由执行程序指令的一个或更多个处理器进行以控制如图8所述的边缘服务器800的操作。程序指令和数据元素可以存储在诸如随机存取存储器(random-access-memory,RAM)、只读存储器(read-only memory,ROM)、闪速存储器、一个或更多个磁存储器、光存储器装置等计算机可读存储介质上。
[0065] 在模块1010,内容对象的请求在边缘服务器被接收。该请求可以发送到作为如图2所示的处于POP位置120处的边缘服务器选择功能224的一部分的边缘服务器。在模块
1020,边缘服务器确定所请求的内容的部分对象是否是可得到的。这可以包括搜索对应于所请求内容的项目的内容存储区。如果发现项目,在模块1050,边缘服务器将特定于内容的字节从它的内容存储区发送给终端用户系统,内容请求从该终端用户系统接收。
[0066] 如果部分内容对象是不可得到的,在模块1030,边缘服务器可以发送CDN消息接发系统上的消息,以表明其不能提供部分内容对象。如模块1040所显示的,该消息可以在不同的缓存级和/或CDN部分搜索所请求内容时出现。一旦确定相关部分内容对象,在模块1060检查处于边缘位置的完整内容对象的可得到性。如果在该边缘处内容对象是不可得到的,则从其它的CDN存储器请求该内容对象,并且在模块1070,边缘服务器将所请求的对象发送给终端用户系统。
[0067] 图11是使多播边缘服务器组的部分对象内容存储区协调的示例性方法1100的流程图。方法1100可以通过诸如图3示出的分配服务器300来执行并且可以包括执行程序指令的一个或更多个处理器。该程序指令可以与合适的数据元素一起存储在如先前描述的计算机可读存储介质上。
[0068] 在模块1110,检测边缘服务器事件。当部分内容对象在边缘位置不可得到时可以从CDN消息接发系统接收到该事件或者当边缘服务器从诸如更深的缓存级或者另一个POP位置等CDN位置请求内容时可以触发该事件。在模块1120,分配服务器从以下边缘服务器请求内容存储标识符:其属于与相关于事件的边缘服务器相同的多播组。例如,分配服务器可以在边缘服务器地址上进行查找以获取多播组地址然后将状态请求发送给组地址。
[0069] 基于来自边缘服务器的信息,在模块1130,分配服务器可以确定分配哪个部分内容对象。在一些实施例中,在模块1140,分配服务器在对当前的序列ID的每个响应中使序列ID匹配并且根据各个内容存储区的状态经由边缘服务器选择方法将部分内容更新发送给各个边缘服务器。例如,如果单个边缘服务器处于离线并且在返回到服务后需要更新,则分配服务器可以将更新包发送给在边缘服务器的存在点处的边缘服务器选择处理。在另一个实施例中,分配服务器确定来自边缘服务器响应的最低序列ID并且基于该最低标准(lowest common denominator)将更新包发送给整个多播组。当边缘服务器接收多播更新包时,它取回部分内容有效载荷并且相应地更新它的本地内容存储区的项目。以这种方式,通过操作分配服务器,在一个或更多个边缘位置的本地内容存储区与分配在CDN内的部分内容的最新集合相协调。
[0070] 正如本领域技术人员将理解的,本发明可以其它具体的形式实施。本领域技术人员将认识到或者仅仅使用常规实验即能够确定这里描述的本发明的具体实施例的许多等效实施方式。这种等效实施方式将由权利要求包括。