分层高速缓存填充的制作方法

文档序号:13950619阅读:193来源:国知局
分层高速缓存填充的制作方法

相关申请的交叉引用

本公开要求享有于2015年4月30日提交的序列号为62/155,430且代理人案号为netf/0094usl的美国临时专利申请、以及于2016年3月10日提交的序列号为15/067,099且代理人案号为netf/0094us的美国专利申请的权益。这些相关申请的主题通过引用结合于此。

本发明的实施例一般地涉及计算机网络上的数据传输,并且更具体地,涉及分层高速缓存填充。



背景技术:

许多基于web的应用通过互联网以分布式的方式提供诸如流式音频和/或流式视频之类的服务。一般而言,这种应用通过在位于一个或多个网络位置的多个服务器上分发每个内容标题(例如,音频文件或视频文件)的多个副本来进行操作。通过在多个服务器之间镜像内容,该内容可以被大量用户访问,而这些用户不需要经历显着的等待时间。此外,维护特定内容标题的多个副本使得基于web的应用在关于特定服务器的硬件或软件故障发生时能够快速且无缝地恢复。

为了进一步减少与向用户提供内容标题相关联的延迟时间和总体网络需求,其上存储内容标题的服务器通常在地理上分布在由web应用服务的一个或多个区域中。web应用然后被配置为将每个用户引导到位于用户附近的特定服务器,以便更有效地向用户提供内容标题。

管理在大的地理区域内或跨越不同地理区域分布的服务器上所存储的内容标题可能带来若干挑战。具体地,将给定的内容标题复制到位于大地理区域的多个服务器可能会消耗大量的网络资源,例如,带宽。网络资源的消耗增加了基于web的应用的成本,特别是当全部或部分网络基础设施是由第三方提供的时候。另外,用于将给定内容标题复制到多个服务器的传统技术通常会导致最先接收内容标题的服务器在带宽使用和处理负载方面经历显着的波动,例如,当其他网络服务器以对内容标题的副本的请求“淹没(flood)”最先接收内容标题的服务器时。这种波动会对这些“初始的”服务器的性能产生负面影响,这会降低通过初始的服务器向访问基于web的应用的用户提供的服务的质量和/或导致初始的服务器经历软件和/或硬件故障。

如前所述,用于在服务器网络上分发内容的改进技术将是有用的。



技术实现要素:

本发明的一个实施例提出了一种用于在服务器网络内复制文件的方法。该方法包括确定区域服务器集群中所包括的一个或多个区域主服务器,并且使得每个区域主服务器从填充源获取文件。该方法还包括:针对区域服务器集群中所包括的至少一个本地服务器集群,确定至少一个本地服务器集群中所包括的一个或多个本地主服务器,并且使得每个本地主服务器从一个或多个区域主服务器中的一个区域主服务器中获取文件。

除此之外,另外的实施例提供了被配置为实施上述方法的控制服务器和非暂态计算机可读介质。

所公开的技术的至少一个优点是可以经由特定的内容服务器层以可预测的、分散式的和高度容错的方式在网络中复制每个文件,而不需要维护主索引的实体。另外,可以将预定延迟分配给每层,以便防止较低层淹没较高层所包括的内容服务器,这降低了通过网络基础设施复制新文件或现有文件时的服务器负载波动的严重性。此外,因为每层所包括的内容服务器是基于与文件相关联的标识符来确定的,所以每个文件可以经由不同的内容服务器序列通过网络基础设施传播。因此,网络和处理负载被更均匀地分布在内容服务器之间,这提高了通过内容服务器向访问基于web的应用的用户提供的服务的整体质量。

附图说明

为了能够以更详细的方式理解本发明的上述特征,可以通过参考实施例(其中一些在附图中示出)来提供对上面简要总结的本发明的更具体的描述。然而应当注意,附图仅示出了本发明的典型实施例,因此不应被视为限制了本发明的范围,因为本发明可以承认其它同等有效的实施例。

图1示出根据本发明的各种实施例的用于将内容分发到内容服务器和端点设备的网络基础设施;

图2是根据本发明的各种实施例的可以结合图1的网络基础设施实现的内容服务器的框图;

图3是根据本发明的各种实施例的可以结合图1的网络基础设施实现的控制服务器的框图;

图4示出了根据本发明的各种实施例的图1的内容服务器在地理上是如何分布的;

图5a-5c示出了根据本发明的各种实施例的用于在图1的地理上分布的内容服务器的不同层之间复制文件的技术;和

图6a和图6b示出了根据本发明的各种实施例的用于在地理上分布的内容服务器之间复制文件的方法步骤的流程图。

具体实施方式

在下面的描述中,阐述了许多具体细节以提供对本发明的更透彻的理解。然而,可以在没有这些具体细节中的一个或多个细节的情况下实践本发明对于本领域技术人员是显而易见的。

图1示出了根据本发明的各种实施例的用于向内容服务器110和端点设备115分发内容的网络基础设施100。如图所示,网络基础设施100包括内容服务器110、控制服务器120和端点设备115,其中的每一个经由通信网络105连接。

每个端点设备115经由网络105与一个或多个内容服务器110(也称为“高速缓存”或“节点”)通信以下载内容,例如文本数据、图形数据、音频数据、视频数据以及其他类型的数据。在本文也被称为“文件”的可下载内容然后被呈现给一个或多个端点设备115的用户。在各种实施例中,端点设备115可以包括计算机系统、机顶盒、移动计算机、智能手机、平板电脑、控制台和手持式视频游戏系统、数字录像机(dvr)、dvd播放器、连接的数字电视、专用媒体流式传输设备(例如机顶盒)和/或具有网络连接性并且能够向用户呈现内容(例如,文本、图像、视频和/或音频内容)的任何其他技术上可行的计算平台。

每个内容服务器110可以包括web服务器、数据库和服务器应用217,其被配置为与控制服务器120通信以确定由控制服务器120跟踪和管理的各种文件的位置和可用性。每个内容服务器110还可以与填充源130和一个或多个其他内容服务器110通信,以便用各种文件的副本“填充”每个内容服务器110。另外,内容服务器110可以对从端点设备115接收到对文件的请求进行响应。然后可以从内容服务器110或经由更广泛的内容分发网络来分发文件。在一些实施例中,内容服务器110使得用户能够进行认证(例如,使用用户名和密码)以访问存储在内容服务器110上的文件。尽管在图1中仅示出单个控制服务器120,但是在各种实施例中,多个控制服务器120可以被实施来跟踪和管理文件。

在各种实施例中,填充源130可以包括在线存储服务(例如,简单存储服务,云存储等),其中包括数千或数百万个文件的文件目录被存储和访问,以便填充内容服务器110。尽管在图1中仅示出了单个填充源130,但是在各种实施例中,可以实现多个填充源130以服务对文件的请求。

图2是根据本发明的各种实施例的可以结合图1的网络基础设施100来实现的内容服务器110的框图。如图所示,内容服务器110包括但不限于中央处理单元(cpu)204、系统盘206、输入/输出(i/o)设备接口208、网络接口210、互连212以及系统存储器214。

cpu204被配置为检索并执行存储在系统存储器214中的编程指令,例如服务器应用217。类似地,cpu204被配置为存储应用数据并从系统存储器214中获取应用数据。互连212被配置为促进在cpu204、系统盘206、i/o设备接口208、网络接口210和系统存储器214之间传输数据(例如,编程指令和应用数据)。i/o设备接口208被配置为从i/o设备216接收输入数据,并且经由互连212将输入数据发送到cpu204。例如,i/o设备216可以包括一个或多个按钮、键盘、鼠标和/或其他输入设备。i/o设备接口208还被配置为经由互连212从cpu204接收输出数据,并将输出数据发送到i/o设备216。

系统盘206可以包括一个或多个硬盘驱动器、固态存储设备或类似的存储设备。系统盘206被配置为存储与内容目录相关联的诸如文件218(例如,音频文件、视频文件和/或字幕)之类的非易失性数据。然后文件218可以由一个或多个端点设备115经由网络105获取。在一些实施例中,网络接口210被配置为遵照以太网标准进行操作。

系统存储器214包括服务器应用217,服务器应用217被配置为服务从端点设备115和其他内容服务器110接收的对文件218的请求。当服务器应用217接收到对文件218的请求时,服务器应用217从系统盘206获取相应的文件218,并经由网络105将文件218发送到端点设备115或内容服务器110。服务器应用217还被配置为从控制服务器120请求指令,例如可以从填充源130、特定内容服务器110等请求特定文件的(一个或多个)位置和/或(一个或多个)时间。

图3是根据本发明的各种实施例的可以结合图1的网络基础设施100来实现的控制服务器120的框图。如图所示,控制服务器120包括但不限于中央处理单元(cpu)304、系统盘306、输入/输出(i/o)设备接口308、网络接口310、互连312以及系统存储器314。

cpu304被配置为检索并执行被存储在系统存储器314中的编程指令,诸如控制应用317。类似地,cpu304被配置为存储应用数据并且从存储在系统盘306中的系统存储器314和数据库318中获取应用数据。互连312被配置为促进cpu304、系统盘306、i/o设备接口308、网络接口310和系统存储器314之间的数据传输。i/o设备接口308被配置为通过互连312在i/o设备316和cpu304之间传输输入数据和输出数据。系统盘306可以包括一个或多个硬盘驱动器、固态存储设备等。系统盘206被配置为存储与内容服务器110、(一个或多个)填充源130和文件218相关联的信息的数据库318。

系统存储器314包括控制应用317,控制应用317被配置为访问存储在数据库318中的信息并且处理该信息以确定特定文件218将在网络基础设施100中所包括的内容服务器110之间被复制的方式。例如,当要向内容服务器110填充新文件218的副本时,从数据库318访问与内容服务器110相关联的标识符(id)(被称为服务器id)的列表。然后,控制应用317结合与新文件218相关联的文件id来处理服务器id,以确定新文件218将如何以及在何时在网络基础设施100所包括的内容服务器210之间被复制,如下文结合图4-6进一步详细描述的。

如本文先前所描述的,对分布在大的地理区域上的内容服务器110上所存储的内容(例如音频和视频文件)进行管理会带来各种挑战。具体而言,为了服务具有不同网络和处理能力的各种各样的端点设备115,可以以多个(例如,10个或更多)不同的比特率对每个内容标题进行编码。因此,诸如电影或电视节目的单个内容标题可以与多个文件218相关联(每个文件218以不同的比特率对内容标题进行编码),其中每个文件218可以由被配置为将内容标题提供给端点设备115的内容服务器110存储。

因此,尝试用内容标题的大目录(其中每个内容标题都与多个文件218相关联)填充内容服务器110可能消耗大量的网络资源。因此,如果每个内容服务器110直接从第三方源(例如,填充源130)和/或通过第三方网络获取文件218,则可能导致显著的访问和带宽费用。

另一方面,通过尝试仅使用最先接收文件218的少量本地内容服务器110来填充内容服务器110以最小化对第三方源/网络的使用可能会给初始的(一个或多个)内容服务器110带来过度的负担。当其他内容服务器110以对文件218的请求来淹没(一个或多个)内容服务器110时,这样的负担可能导致初始的内容服务器110上的网络和处理负载波动。

因此,在各种实施例中,每个文件218可以经由内容服务器110的特定的层在网络基础设施100内被复制,其中网络服务器110可以基于包括在网络基础设施100中的服务器id和与文件218相关联的文件id进行精确计算。因为文件218将位于其中的内容服务器110可以基于服务器id和文件id被精确计算,所以文件218的访问是确定性的,这减少或消除了高速缓存未命中的发生。每层所包括的内容服务器110的数量可以例如基于具体文件218的流行度和对具体文件218的需求通过为每个文件218或每个层指定复制因子来控制。因此,内容服务器110在本地被填充的程度可以被调整,这减少了第三方网络和存储费用。此外,因为每层中所包括的内容服务器110是基于文件id来确定的,所以可以经由不同的内容服务器110序列在网络基础设施100内复制每个文件218。因此,网络和处理负载被更均匀地分布在内容服务器110之间,这提高了经由内容服务器110向访问基于web的应用的用户提供的服务的整体质量。

在一些实施例中,多个文件218按类别分组,并且将唯一文件id分配给与每个类别相关联的文件218。例如,与内容标题a(例如,电影或电视节目)相关联的文件218可以被分配第一文件id,而与内容标题b相关联的文件218被分配第二文件id。另外,在一些实施例中,不同的文件id被分配从而以不同的比特率对内容标题分别进行编码。也就是说,在这样的实施例中,与内容标题a和第一比特率相关联的文件218可以被分配第一文件id,而与内容标题a和第二比特率相关联的文件218可以被分配第二文件id。这样的实施例使得能够将与特定类别相关联的完整的一组文件218一起存储在一个或多个内容服务器110中的每一个上。

另外,在一些实施例中,将唯一的文件id分配给每个文件218。例如,与内容标题a和第一比特率相关联的文件218中的每个文件可以被分配不同的文件id。这样的实施例使得能够将与特定类别相关联的文件218分发到多个内容服务器110上,例如,以使得文件218能够并行地传输到特定的端点设备115。此外,在一些实施例中,唯一文件id被分配给文件218的粒度可以随类别而变化。

在各种实施例中,与特定文件218相关联的文件id被编码在javascript对象表示法(json)对象中。javascript对象表示法(json)是以通常与javascript脚本语言兼容的方式表示被称为“对象”的数据结构的一种转换。对象可以包括一个或多个元素,其中每个元素用键指定。每个元素可以是字符串、数字、另一对象、数组、布尔值或空。数组是由方括号“[”和“]”划定的元素的有序列表。数组中的元素用逗号分隔。下面在表1中给出与文件218相关联的示例json对象。

表1:示例json对象

在上面给出的示例json对象中,第一个和最后一个大括号表示对象的开始和结束,“视频”是由方括号“[”和“]”划定的视频数组的关键字。数组包括两个元素,每个元素都用大括号表示。第一个这样的元素是包括具有如所示的值的“id”字段、“title(主题)”字段,“boxart(网址)”字段和“synopsis(剧情简介)”字段的对象。类似地,数组中的第二个元素具有如所示的值。因此,在这个示例中,指定了与第一文件218(“美丽心灵的永恒阳光”)相关联的文件id23432和与第二文件218(“面具”)相关联的文件id23521。

此外,在一些实施例中,内容服务器110可以通过将包括存储在数组中的多个文件id的json对象传送到控制应用317来请求下载指令(例如,下载位置、时间延迟等)。表2中给出了包含这种文件id数组的示例json对象。

表2:示例json数组

图4示出了根据本发明的各种实施例的图1的内容服务器110在地理上是如何分布的。如图所示,内容服务器110可以被组织成各种集群,包括区域集群410、本地集群420和清单集群430。

例如,在图4所示的示例性地理分布中,内容服务器110被组织到区域集群410-1和区域集群410-2中。在一些实施例中,每个区域集群410可以与不同的城市、州、国家、时区、大陆等相关联。每个区域集群410包括一个或多个本地集群420。例如,区域集群410-1包括本地集群420-1和本地集群420-2,区域集群410-2包括本地集群420-3、本地集群420-4和本地集群420-5。每个本地集群420包括一个或多个清单集群430,每个清单集群430包括一个或多个内容服务器110。例如,图4中所示的每个清单集群430包括五个内容服务器110。然而,每个清单集群430中可以包括任何数量的内容服务器110。此外,网络基础设施100中可以包括任何数量的区域集群410、本地集群420、清单集群430和内容服务器110。

图5a-5c示出了根据本发明的各种实施例的用于在图1的地理上分布的内容服务器110的不同层之间复制文件218的技术。为了满足峰值流量需求和冗余需求,可以在每个区域集群410所包括的内容服务器110上复制每个文件218的多个副本。因此,在各种实施例中,控制应用317可以执行一个或多个哈希运算(例如,下面描述的一致性哈希运算),以在多个内容服务器110之间均匀地复制文件218,而不需要预先计算文件应该被存储的位置并且不需要将内容服务器110的索引存储在中央服务器中。虽然本文描述的技术是结合特定的哈希运算来实现的,但是可以使用任何技术上可行的操作或技术来选择层中所包括的内容服务器110,其中特定的文件218通过层中的这些内容服务器110被复制。

在各种实施例中,控制应用317可以通过对与内容服务器110相关联的每个服务器id执行哈希运算(例如,应用md5消息摘要算法)来生成针对特定区域集群410所包括的每个内容服务器110的哈希值。控制应用317然后对得到的哈希值进行排序以形成哈希数据结构(例如,哈希环、哈希表等)。为了确定哪些内容服务器110将被用来在区域集群410上复制特定文件218,控制应用317然后通过将相同的(或不同的)哈希运算应用于与文件218关联的文件id来生成针对文件218的哈希值。

然后,控制应用317将与文件218相关联的哈希值与哈希数据结构进行比较,并选择具有最接近文件218的哈希值的哈希值的内容服务器110作为该特定文件218的区域主服务器510。此外,如果为文件218和/或区域主服务器510层指定复制因子(rf)>1,则控制应用317(例如,基于哈希值)在哈希数据结构中选择接下来的一个或多个另外的内容服务器110作为区域主服务器510。在一些实施例中,控制应用317通过从与为区域集群410选择的第一区域主服务器510相关联的哈希值处开始、绕着哈希环或者沿着哈希表“行走”来选择哈希数据结构中的下一内容服务器110,直到选择了期望数量的区域主服务器510。

一旦选择了与区域集群410相关联的区域主服务器510,就基于从控制应用317接收的指令,立即从填充源130提取515文件218,如图5a所示。为了清楚地进行解释,在图5a中示出的每个区域集群410中仅示出了一个区域主服务器510。然而,在rf>1的实施例中,针对特定文件218选择了多个区域主服务器510,并且这些区域主服务器510可立即从填充源130提取文件218。

接下来,控制应用317过滤哈希数据结构以仅包括位于特定的本地集群420中的内容服务器110。控制应用317然后选择过滤后的哈希数据结构中所包括的一个或多个接下来的内容服务器110来作为本地集群420的本地主服务器520。例如,参考图5b,当确定本地集群420-1的一个或多个本地主服务器520时,控制应用317将过滤哈希数据结构以排除未被包括在本地集群420-1中的所有内容服务器110。然后,控制应用317通过过滤后的哈希数据结构中剩余的哈希值选择下一内容服务器110作为本地集群420-1的本地主服务器520。此外,如果针对文件218和/或针对本地主服务器520层指定了rf>1,则控制应用317选择过滤后的哈希数据结构中所包括的一个或多个接下来的内容服务器110作为本地集群420-1的本地主服务器520。控制应用317然后针对区域集群410中所包括的每个本地集群420重复该过程。

如图5b所示,本地主服务器520从区域主服务器510提取文件218。控制应用317还向本地主服务器520提供关于如何以及何时可以提取文件218的指令。在一些实施例中,为了防止(一个或多个)区域主服务器510被对文件218的请求所压倒,控制应用317指示与每个本地集群420相关联的本地主服务器520在从(一个或多个)区域主服务器510提取文件218之前等待第一预定时间段(例如,在(一个或多个)区域主服务器510从填充源130提取515文件之后的1到3个小时)。另外,控制应用317可以指示本地主服务器520仅在比第一预定时间段更长的第二预定时间段(例如,在(一个或多个)区域主服务器510从填充源130提取515文件218之后的2到4个小时)之后从更昂贵的源(例如,填充源130)提取文件218。实施第二预定时间段(其后,本地主服务器520可以从更昂贵的源提取文件)在降低网络成本和减少由于与相应的区域主服务器510相关联的网络问题、软件/硬件故障等而出现的长延迟之间达成平衡。此外,在一些实施例中,本地主服务器520可以从与不同区域集群410相关联的区域主服务器510获取文件218。

可选地,控制应用317可以再次过滤哈希数据结构以仅包括位于特定清单集群430中的内容服务器110。控制应用317然后选择过滤后的哈希数据结构中所包括的一个或多个接下来的内容服务器110作为清单集群430的清单主服务器530。例如,参考图5c,当确定清单集群430-1的一个或多个清单主服务器530时,控制应用317可以过滤哈希数据结构以排除未被包括在清单集群430-1中的所有内容服务器110。然后,控制应用317通过过滤后的哈希数据结构中剩余的哈希值选择下一内容服务器110作为清单集群430-1的清单主服务器530-3。此外,如果为文件218和/或清单主服务器530层指定了rf>1,则控制应用317可以选择过滤后的哈希数据结构中所包括的一个或多个接下来的内容服务器110作为清单集群430-1的清单主服务器530。控制应用317然后针对区域集群410中所包括的每个清单集群430重复该过程。另外,控制应用317针对基础设施网络100中所包括的每个区域集群410重复确定区域主服务器510、本地主服务器520和清单主服务器530的整个过程。

如图5c所示,清单主服务器530从本地主服务器520提取535文件218。在一些实施例中,为了防止(一个或多个)本地主服务器520被对文件218的请求所压倒,控制应用317指示与每个清单集群430相关联的清单主服务器530在从(一个或多个)本地主服务器520提取文件218之前等待第一预定时间段(例如,在(一个或多个)本地主服务器520从区域主服务器510获取525文件218之后的1到3个小时)。此外,控制应用317可以指示清单主服务器530在第二预定时间段(例如,在(一个或多个)本地主服务器520从一个或多个区域主服务器提取525文件218之后的2到4个小时)之后从更昂贵的源(例如,(一个或多个)区域主服务器510)提取文件218。此外,控制应用317可以指示清单主服务器530在第三预定时间段(例如,在(一个或多个)本地主服务器520从(一个或多个)区域主服务器510提取525文件218之后的4到6个小时)之后从填充源130提取文件218。

一旦特定的清单集群430内的清单主服务器530接收到文件218的副本,清单集群430中所包括的每个非主服务器540就可以从清单主服务器530中提取文件218。有利的是,清单集群430内的非主服务器540和清单主服务器530之间的提取通常不会引起任何第三方网络或存储费用。在一些实施例中,控制应用317指示非主服务器540在从清单主服务器530中提取文件218之前等待可选的第一预定时间段(例如,在(一个或多个)清单主服务器530从(一个或多个)本地主服务器530中提取535文件218之后的1到3个小时)。此外,控制应用317可以指示非主服务器540在从更昂贵的源(例如,(一个或多个)本地主服务器520、(一个或多个)区域主服务器510和填充源130)提取文件218之前等待。

为了避免“热邻居”问题(其中依次位于哈希数据结构中的内容服务器110接收多个流行文件218并且因此遭受性能的下降),控制应用317在生成哈希数据结构之前可选地将每个服务器id与多个值组合。例如,控制应用317可以将每个服务器id与固定范围的1000个常数组合。控制应用317然后对每个组合执行哈希运算以生成针对每个内容服务器110的1000个哈希值。因此,每个内容服务器110将在哈希数据结构中多次出现,这极大地降低了相同子集的内容服务器110将接收多个流行文件218的可能性。下面提供了一个示例。

在具体示例中,假设特定的区域集群410包括20个内容服务器。为了创建哈希数据结构(例如,哈希环),控制应用317将这20个服务器id中的每一个服务器id与固定范围的常数(例如,1至1000)组合,将哈希运算应用于每个组合,并且对生成的20000个哈希值进行排序以产生哈希环。进一步假设内容服务器110从a到t被命名,产生的哈希环可以包括以下哈希值:

00000000:d

00003064:a

00005662:s

00007174:n

00009947:a

00012516:t

00015577:q

00016652:r

00021625:l

00025057:q

00028665:k

23451234:f

23453753:r

23456802:q

23459919:i

23462687:a

23463273:i

23466229:t

23471069:m

23475876:g

23476011:t

(哈希环循环回到开始)

在给定rf=3的情况下,控制应用317然后对与文件218相关联的文件id执行哈希运算,并选择在哈希环上遇到的前3个内容服务器110。例如,假设对文件id执行哈希运算产生哈希值00015500,则控制应用317将选择q作为主内容服务器110,因为00015577是在00015500之后遇到的第一个内容服务器110,因此将选择r和l作为副本内容服务器110。

图6a和图6b示出了根据本发明的各种实施例的用于在地理上分布的内容服务器110上复制文件218的方法步骤的流程图。尽管结合图1-5c的系统描述了方法步骤,但是本领域技术人员将理解,被配置为以任意顺序执行方法步骤的任何系统都落入本发明的范围内。

如图6a所示,方法600在步骤605处开始,其中控制应用317通过对与内容服务器110的特定区域集群410中所包括的每个内容服务器110相关联的服务器标识符(id)执行第一哈希运算来生成诸如哈希环或哈希表之类的哈希数据结构。在步骤610处,控制应用317通过对与文件218相关联的文件id执行第二哈希运算来生成哈希值。在一些实施例中,第一哈希运算和第二哈希运算是相同的(例如,md5哈希运算)。然而,在各种实施例中,第一哈希运算和第二哈希运算可以包括不同的运算。此外,在一些实施例中,第一哈希运算和/或第二哈希运算可以包括修改服务器id和/或文件id的一个或多个变换。

在步骤615处,控制应用317通过将第一哈希值与哈希数据结构进行比较来确定区域集群410中所包括的一个或多个区域主服务器510。在各种实施例中,一个或多个区域主服务器510由区域集群410中所包括的内容服务器110的子集组成。然后,在步骤620处,控制应用317使得每个区域主服务器510从填充源130提取文件218。例如,控制应用317可以通过响应于从区域主服务器510接收到json数组而向每个区域主服务器510发出指令并且通过指定文件id,来使得区域主服务器510提取文件218。

接下来,在步骤625处,控制应用317选择区域集群410中所包括的内容服务器110的本地集群420。在步骤630处,控制应用317过滤哈希数据结构以基于针对文件id生成的哈希值确定本地集群420中所包括的一个或多个本地主服务器520。在各种实施例中,一个或多个本地主服务器520由本地集群420中所包括的内容服务器110的子集构成。在步骤635处,控制应用317然后使得每个本地主服务器520在从区域主服务器510提取文件218之前等待预定时间段。在一些实施例中,本地主服务器520在从区域主服务器510提取文件218之前需要等待的预定时间对于每个本地主服务器520是相同的,而在其它实施例中,预定时间可以随本地主服务器520而变化。

在步骤640处,控制应用317确定是否需要为另外的本地集群420确定一个或多个本地主服务器520。如果控制应用317确定需要为另外的本地集群420确定一个或多个本地主服务器520,则方法600返回到上述的步骤625。如果控制应用317确定不需要为另外的本地集群420确定(一个或多个)本地主服务器520,则方法600进行到图6b所示的步骤645,在步骤645处,控制应用317选择内容服务器110的清单集群430。

在步骤650,控制应用317过滤哈希数据结构以基于哈希值确定清单集群430中所包括的一个或多个清单主服务器530。在各种实施例中,一个或多个清单主服务器530由清单集群430中所包括的内容服务器110的子集构成。

因为(一个或多个)区域主服务器510、(一个或多个)本地主服务器520和(一个或多个)清单主服务器530是基于服务器id和文件id来确定的,所以文件218在基础设施网络100中被复制的位置以及可以从每个位置提取文件218的时间可以由具有服务器id和文件id的记录的任何内容服务器110确定。因此,可以以分散式的、高度容错的方式通过基础设施网络100复制文件218,而不需要诸如控制服务器217之类的实体来维护主索引。

在步骤655处,控制应用317使得每个清单主服务器530在从本地主服务器520获取文件218之前等待预定时间段。在一些实施例中,清单主服务器530在从本地主服务器520获取文件218之前需要等待的预定时间对于每个清单主服务器530是相同的,而在其他实施例中,预定时间可以随清单主服务器530而变化。

在步骤660处,控制应用317确定是否需要为另外的清单集群430确定一个或多个清单主服务器530。如果控制应用317确定需要为另外的清单集群430确定一个或多个清单主服务器530,则方法600返回到上述的步骤645。如果控制应用317确定不需要为另外的清单集群430确定清单主服务器530,则方法600进行到步骤665,在步骤665处,控制应用317使得每个非主服务器540在从清单主服务器530提取文件218之前等待预定时间段。在一些实施例中,非主服务器540在从清单主服务器530提取文件218之前需要等待的预定时间对于每个非主服务器540是相同的,而在其他实施例中,预定时间可以随非主服务器540而改变。

在步骤670处,控制应用317确定是否需要为另外的文件218确定(一个或多个)区域主服务器510、(一个或多个)本地主服务器520和/或(一个或多个)清单主服务器530。如果控制应用317确定需要为另外的文件218确定(一个或多个)区域主服务器510、(一个或多个)本地主服务器520和/或(一个或多个)清单主服务器530,则方法600返回到步骤610。如果控制应用317确定不需要为另外的文件218确定(一个或多个)区域主服务器510、(一个或多个)本地主服务器520和/或(一个或多个)清单主服务器530,则方法600终止。

总而言之,控制应用对多个服务器id执行哈希运算以生成哈希数据结构。控制应用然后对文件id执行哈希运算,并将哈希值与哈希数据结构进行比较以选择一个或多个区域主服务器。然后针对每个本地集群和清单集群过滤哈希数据结构,以便分别确定将通过其复制文件的本地主服务器和清单主服务器。控制应用还向每个本地主服务器层、清单主服务器层和非主服务器层分配预定的延迟,以便控制通过基础设施网络复制文件的速率。

所公开的技术的至少一个优点是可以经由特定层的内容服务器以可预测的、分散式的和高度容错的方式在网络中复制每个文件,而不需要维护主索引的实体。另外,可以通过基于每个层或基于每个文件指定复制因子来例如基于文件的流行性和需求性控制每个层中所包括的通过其来复制文件的内容服务器的数量。此外,可以将预定的延迟分配给每一层,以便防止较低层淹没较高层所包括的内容服务器,这降低了服务器负载波动的严重性。此外,因为每一层所包括的内容服务器是基于与文件相关联的标识符来确定的,所以每个文件可以经由不同的内容服务器序列通过网络基础设施传播。因此,网络和处理负载更均匀地分布在内容服务器之间,这提高了通过内容服务器向正在访问基于web的应用的用户提供的服务的整体质量。

已经为了说明的目的呈现了各种实施例的描述,但并不旨在穷举或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域普通技术人员将是显而易见的。

本实施例的方面可以体现为系统、方法或计算机程序产品。因此,本公开的方面可以采用如下形式:完全是硬件实施例、完全是软件实施例(包括固件、驻留软件、微代码等)、或组合软件和硬件方面(在本文中可全部被一般地称为“电路”、“模块”或“系统”)的实施例。此外,本公开的方面可以采用体现在一个或多个计算机可读介质中的计算机程序产品(具有体现在上面的计算机可读程序代码)的形式。

可以使用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于电的、磁的、光的、电磁的、红外的或半导体系统、设备或装置,或前述各项的任何合适的组合。计算机可读存储介质的更具体的示例(非详尽列表)将包括以下项:具有一条或多条线的电连接、便携式计算机软盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪速存储器)、光纤、便携式光盘只读存储器(cd-rom)、光存储设备、磁存储设备、或前述各项的任何合适的组合。在本文档的上下文中,计算机可读存储介质可以是可以包含或存储由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合使用的程序的任何有形介质。

以上参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本公开的方面。应当理解,流程图和/或框图种的每个块以及流程图和/或框图中的块的组合可以通过计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器以形成机器,从而指令(其经由计算机的处理器或其它可编程数据处理装置执行)使得一个或多个流程图和/或框图的块中指定的功能/动作能够被实现。这样的处理器可以是但不限于通用处理器、特殊用途处理器、专用处理器、或现场可编程阵列。

附图中的流程图和框图说明了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。就这一点而言,流程图或框图中的每个块可以表示代码的模块、段或部分,其包括用于实现(一个或多个)指定逻辑功能的一个或多个可执行指令。还应指出的是,在一些替代的实施方式中,块中所述的功能可以不按附图中指出的顺序发生。例如,取决于所涉及的功能,连续示出的两个块实际上可以基本上同时被执行,或者这些块有时可以以相反的顺序被执行。还应指出的是,框图和/或流程图中的每个块和框图和/或流程图中的块的组合可以由执行指定功能或动作的专用的基于硬件的系统或专用的硬件和计算机指令的组合来实现。

上文已经参考具体实施例对本发明进行了描述。然而,本领域的普通技术人员将会理解,在不脱离如所附权利要求所阐述的本发明的较广阔的精神和范围的情况下,可以对实施例进行各种修改和改变。例如但不限于,虽然本文的许多描述涉及具体类型的文件、哈希运算和服务器层,但是本领域的技术人员将会理解,这里描述的系统和技术适用于其他类型的数据文件、算法和层级结构。因此,前面的描述和附图被认为是说明性的而不是限制性的。

尽管上文指出了本公开的实施例,但是可以在不脱离本发明的基本范围的情况下想出本公开的其它和另外的实施例,并且本发明的范围由所附权利要求来确定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1