用于内容分布的服务器选择的制作方法
【专利摘要】本发明涉及用于内容分布的服务器选择。在实施例中,一种方法包括:接收第一服务器计算机的第一路由表;接收第二服务器计算机的第二路由表;从客户端计算机接收对关于保存媒体项目标题的内容服务器的信息的请求,其中所述请求包括客户端计算机的客户端互联网协议地址;至少部分基于客户端互联网协议地址、第一路由表及第二路由表,评估第一服务器计算机到客户端计算机比第二服务器计算机到客户端计算机更接近;至少部分基于评估第一服务器计算机比第二服务器计算机更接近客户端计算机,向客户端计算机发送客户端计算机的第一地址,其中第一地址识别存储在第一服务器计算机上的媒体项目标题。
【专利说明】用于内容分布的服务器选择
[0001]利益声明
[0002]本申请要求于2013年9月24日提交的美国临时申请61/881599的优先权。
【技术领域】
[0003]本公开一般涉及数据通信网络。更具体地,本公开涉及用于评估内容服务器计算机到客户端计算机的接近度的技术。
【背景技术】
[0004]本节中描述的方法是可实行的方法,但不必是以前设想或实行的方法。因此,除非另外指出,否则不应仅凭借其包含在本节中而假设本节中描述的任何方法适用于现有技术。
[0005]通过客户端计算机,用户可选择电影或其他媒体在用户的客户端计算机或与客户端计算机连接的设备上观看和/或收听。客户端计算机可从分布于一个或多个互联网络上的一个或多个内容服务器计算机请求和下载内容。
[0006]客户端计算机观测的吞吐量和延迟基于很多因素。例如,吞吐量和延迟内容数据可穿过的网络的数量、所穿过的任何网络的带宽、所穿过的任何网络的网络拥塞、以及客户端计算机与内容服务器计算机之间的距离的影响。因此,用户体验的体验质量基于一天中的时间、当前互联网服务提供商以及客户端计算机正在从其下载内容的特定内容服务器计算机而变化很大。
[0007]维护内容服务器计算机的内容提供商可试图通过在更多内容服务器计算机上托管内容来提升用户的体验质量。但是,客户端计算机仍然会不注意地不必要地选择从内容服务器计算机下载内容,在该内容服务器计算机中,内容可能穿过多个有限的拥塞的网络。因此,即使其他内容服务器计算机可能是足够且可用的,用户的体验质量也会受到损害。
[0008]内容提供商可试图通过在内容分布网络(“⑶N”)上托管内容来增加用户的体验质量。通常,⑶N是部署于跨越一组分布于各地的网络的多个数据中心中的服务器计算机的大型分布式系统。CDN的目的是向客户端计算机传递高可用性高性能内容。但是,在CDN上托管内容与其他解决方案相比可能非常昂贵。而且,当更便宜的内容服务器计算机足够且可用时,客户端计算机可选择从昂贵的CDN下载内容,CDN根据有多少数据转移到客户端计算机来向内容提供商索取费用。
【发明内容】
[0009]所附权利要求可作为本发明的
【发明内容】
。
【专利附图】
【附图说明】
[0010]在附图中:
[0011]图1示出了在示例性实施例中的包括分布于多个互联网络的控制服务器计算机、内容服务器计算机及客户端计算机的系统。
[0012]图2示出了在示例性实施例中的控制服务器计算机。
[0013]图3示出了在示例性实施例中的响应于接收对关于保存媒体项目标题的内容服务器计算机的信息的请求,评估和选择最近的一个或多个内容服务器计算机的流程。
[0014]图4示出了根据示例性实施例的评估哪些保存所请求的媒体项目的拷贝的内容服务器计算机最接近客户端计算机的流程。
[0015]图5示出了在示例性实施例中的用于对于特定客户端计算机为被评估为最近的内容服务器计算机分配等级的流程。
[0016]图6示出了在示例性实施例中的用于排序每个等级中的最近内容服务器计算机的流程。
[0017]图7是示出了在其上可实现实施例的计算机系统。
【具体实施方式】
[0018]为进行解释,在以下描述中阐述了多个具体细节以便提供对本发明的全面理解。但是,显然本发明可没有这些具体细节而实践。在其他示例中,熟知的结构和设备以方框图形式示出以避免不必要地模糊对本发明。
[0019]此处按照以下提纲来描述实施例:
[0020]1.0 概述
[0021]2.0网络拓扑结构
[0022]2.1控制服务器计算机
[0023]2.2 网站
[0024]2.3内容服务器计算机
[0025]2.4客户端计算机
[0026]3.0流程概述
[0027]4.0控制服务器计算机组件及流程
[0028]4.1内容服务器数据库
[0029]4.2路由表存储库
[0030]4.3接近度评估单元
[0031]4.3.1前缀及CIDR块记法
[0032]4.3.2 AS-Path 属性
[0033]4.3.3多出口鉴别器属性
[0034]4.3.4地理位置属性
[0035]4.3.5利用社区属性
[0036]4.3.6为内容分布网络确定接近度
[0037]4.4基于费用分组内容服务器计算机
[0038]4.4.1 等级
[0039]4.4.2等级分配单元
[0040]4.5负载平衡
[0041]4.6容错性及配置
[0042]4.7为同一标题的多个文件独立评估接近度
[0043]5.0实现机制——硬件概述
[0044]6.0本公开的其他方面
[0045]1.0 概述
[0046]描述了评估内容服务器计算机到客户端计算机的接近度的方法。在实施例中,该方法包括:接收第一服务器计算机的第一路由表;接收第二服务器计算机的第二路由表;从客户端计算机接收对关于保存媒体项目标题的内容服务器的信息的请求,其中该请求包括客户端计算机的客户端互联网协议地址;至少部分基于客户端互联网协议地址、第一路由表及第二路由表,评估第一服务器计算机到客户端计算机比第二服务器计算机到客户端计算机更接近;至少部分基于评估第一服务器计算机比第二服务器计算机更接近客户端计算机,向客户端计算机发送至客户端计算机的第一地址,其中第一地址识别存储在第一服务器计算机上的媒体项目标题。在实施例中,该评估包括评估第一服务器计算机在物理位置上到客户端计算机比第二服务器计算机到客户端计算机更接近。
[0047]在实施例中,该方法包括:接收第三服务器计算机的第三路由表;至少部分基于客户端互联网协议地址、第一路由表及第三路由表,评估第一服务器计算机到客户端计算机与第三服务器计算机到客户端计算机一样接近;至少部分基于评估第一服务器计算机到客户端计算机与第三服务器计算机到客户端计算机一样接近,向客户端计算机发送第二地址,其中第二地址识别存储在第三服务器计算机上的媒体项目标题。
[0048]在实施例中,客户端计算机是第一客户端计算机,请求是第一请求,客户端互联网协议地址是第一客户端互联网协议地址;该方法进一步包括:从第二客户端计算机接收对关于保存媒体项目标题的内容服务器的信息的第二请求,其中该第二请求包括第二客户端计算机的第二客户端互联网协议地址;至少部分基于第二客户端互联网协议地址、第一路由表及第二路由表,评估第二服务器计算机到第二客户端计算机比第一服务器计算机到第二客户端计算机更接近;至少部分基于评估第二服务器计算机到第二客户端计算机比第一服务器计算机到第二客户端计算机更接近,向第二客户端计算机发送至第二客户端计算机的第二地址,其中第二地址识别存储在第二服务器计算机上的媒体项目标题。
[0049]在其他实施例中,本发明包括计算机装置和配置为执行上述步骤的计算机可读介质。
[0050]2.0网络拓扑结构
[0051]通过客户端计算机,用户可选择媒体项目(例如,电影、有声书、图像、音乐或其任意部分)在用户的客户端计算机上观看和/或收听。客户端计算机可从分布于一个或多个互联网络的内容服务器计算机请求和下载该媒体项目。客户端计算机在客户端计算机与内容服务器计算机之间观测的吞吐量和延迟基于很多因素,例如,所穿过的网络的数量、所穿过的任何网络的带宽、所穿过的任何网络的网络拥塞、以及客户端计算机与内容服务器计算机之间的距离。因此,客户端计算机可通过从距离客户端计算机最近的内容服务器计算机请求和下载媒体项目来提高观测的吞吐量及降低观测的延迟。最近的内容服务器计算机可以是在网络拓扑结构方面和/或地理位置方面最接近。
[0052]图1示出了在示例性实施例中的包括分布于多个互联网络的控制服务器计算机、内容服务器计算机及客户端计算机的数据处理系统。虽然图1示出了具体实施例以便展示清晰的示例,但是其他实施例可忽略、加入、重排和/或修改所示任意元件。在图1中,系统100包括多个互联网络:互联网110、第一网络112、第二网络114、互联网服务提供商(“ISP”)网络116、传输网络118及内容分发网络(“CDN”)180。
[0053]示于图1中的每个网络广泛地包括一个或多个其他网络的结合。例如,虽然互联网110示为单一网络,但是互联网110由很多公有和私有的互联网络及互联网组成。
[0054]第一网络112、第二网络114和ISP网络116可以为对等网络。对等网络是管理上分离的网络的互连以便在每个网络之间交换业务。通常,在对等网络协议中,一方不向另一方为交换的业务支付费用。例如,在内容服务器计算机133上存储数据且使数据从内容服务器计算机133通过第二网络114和第一网络112发送给客户端计算机192的内容提供商,几乎没有任何费用。
[0055]ISP网络116可以为由ISP维护的网络。ISP网络也可被称为嵌入式网络。ISP可希望在其自己的网络上托管内容以更快地向用户提供频繁请求的内容。例如,如果媒体项目被频繁请求(例如最近发布的电影),则ISP可在ISP网络上的内容服务器计算机(例如,内容服务器计算机136)上存储该媒体项目的拷贝。因此,客户端计算机(例如,客户端计算机194)可接收存储在内容服务器计算机136上的内容比接收存储在例如第一网络112上的内容服务器计算机131上的内容更快。通常,不是拥有ISP网络的ISP但在ISP网络上存储内容的内容提供商,几乎没有任何费用。
[0056]传输网络118是可使网络业务在两个网络之间穿过或“传输”的传输网络。传输网络对于某些客户端计算机和/或网络可以为对等网络。为了展示清晰的示例,此处传输网络118是对于所有示于图1中的客户端计算机和/或网络的传输网络。例如,连接到ISP网络116的客户端计算机196可请求存储在位于传输网络118上的内容服务器计算机138上的媒体项目。内容服务器计算机138可通过传输网络118和ISP网络116发送所请求的媒体项目给客户端计算机196。传输网络118管理员可向在内容服务器计算机138上存储媒体项目的内容提供商为在传输网络118上消耗带宽索取费用。在一些情况下,例如之前的示例,客户端计算机194的内容提供商和ISP分担费用。
[0057]⑶N180是内容分布网络或内容分发网络。通常,⑶N是部署于跨越一组分布于各地的网络的多个数据中心中的服务器计算机的大型分布式系统。CDN的目的是向客户端计算机传递高可用性高性能内容。CDN通常由内容提供商(例如媒体公司)为传递内容提供商的内容给终端用户而付费。CDN传输数据给客户端计算机可能比传输网络更加昂贵。
[0058]2.1控制服务器计算机
[0059]系统100包括连接到内容服务器计算机131、内容服务器计算机132、内容服务器计算机133、内容服务器计算机134、内容服务器计算机136、内容服务器计算机138、及虚拟内容服务器计算机182(共同称为“内容服务器计算机130”)的控制服务器计算机102。控制服务器计算机102也连接到客户端计算机192、客户端计算机194、及客户端计算机196 (共同称为“客户端计算机190”)。控制服务器计算机102通过一个或多个网络(互联网110、第一网络112、第二网络114、ISP网络116、传输网络118和/或⑶N180)连接到内容服务器计算机130和客户端计算机190。在一些实施例中,内容服务器计算机或客户端计算机可位于与控制服务器计算机102相同的网络中。
[0060]控制服务器计算机102可从客户端计算机190中的一个接收一个或多个对关于保存特定媒体项目标题的内容服务器计算机130的信息的请求。作为响应,控制服务器计算机102可向提出请求的客户端计算机发送如下所述的信息,所述信息包含一个或多个被评估为最近的保存特定媒体项目标题的内容服务器计算机的地址,和/或存储在一个或多个被评估为最近的内容服务器计算机上的特定媒体项目或文件的地址。地址可以为统一资源定位符(“URL”)或任意其他识别特定服务器计算机或识别一个或多个服务器计算机上的媒体项目或文件的字符串或数据。控制服务器计算机102可将地址分组为一个或多个等级、对地址进行排序和/或为每个地址分配权重。控制服务器计算机102的组件和流程将在以下其他章节中进一步讨论。
[0061]2.2 网站
[0062]网站包括一个或多个内容服务器计算机。网站中的内容服务器计算机通过路由器连接到一个或多个网络。为方便表示,在特定路由器“后面”的内容服务器计算机通过特定路由器连接到其他网络或设备。在路由器后面的内容服务器计算机被认为在同一网站中,因为在客户端与任意在同一路由器后面的服务器之间的网络拓扑结构大体上相同。
[0063]在图1中,系统100包括网站152、网站153、网站154、网站156、网站158、及虚拟网站184(共同称为“网站150”)。网站152包括内容服务器计算机131和内容服务器计算机132,每个内容服务器计算机通过路由器142连接到第一网络112。网站153包括通过路由器143连接到第二网络114的内容服务器计算机133。网站154包括通过路由器144连接到第二网络114的内容服务器计算机134。网站156包括通过路由器146连接到ISP网络116的内容服务器计算机136。网站158包括通过路由器148连接到传输网络118的内容服务器计算机138。
[0064]从任意在同一网站中的内容服务器计算机(即,通过同一路由器)发送给特定客户端的数据穿过大体相同的网络路径。为了展示清晰的示例,假设客户端计算机196从内容服务器计算机131请求第一媒体项目,并且客户端计算机196从内容服务器计算机132请求第二媒体项目。内容服务器计算机131可通过路由器142、第一网络112、第二网络114和ISP网络116发送来自第一媒体项目的数据给客户端计算机196。同样地,内容服务器计算机132可通过路由器142、第一网络112、第二网络114和ISP网络116发送来自第二媒体项目的数据给客户端计算机196。如此例所示,由于内容服务器计算机131和内容服务器计算机132在网站152中(即,内容服务器计算机131和内容服务器计算机132通过路由器142连接到客户端计算机196),因此,来自第一媒体项目的数据和来自第二媒体项目的数据采取了相似的路径。
[0065]控制服务器计算机102可基于在同一网站中的内容服务器计算机具有相似的吞吐量的原则进行配置。如果内容服务器计算机不具有相似的吞吐量,则管理员可在不同路由器后面放置不同的内容服务器计算机。因此,具有不同性能的内容服务器计算机在不同网站中。例如,内容服务器计算机131具有相似于内容服务器计算机132的硬件配置。因此,如图1所示,管理员可配置内容服务器计算机131和内容服务器计算机132在同一路由器142的后面,并且因此在同一网站(网站152)中。相反,内容服务器计算机133可具有不同于内容服务器计算机134的硬件配置。例如,内容服务器计算机133可能具有检索数据大大慢于安装在内容服务器计算机134中的固态驱动器的盘驱动器。因此,管理员可配置内容服务器计算机133和内容服务器计算机134分别在路由器143和路由器144的后面。因此,内容服务器计算机133和内容服务器计算机134分别处在不同网站中,例如,网站153和网站154。
[0066]此外或替换地,网站可以为逻辑分割的。控制服务器计算机102可存储从每个内容服务器计算机到逻辑网站的映射。为了展示清晰的示例,假设路由器143和路由器144是同一路由器,因此内容服务器计算机133和内容服务器计算机134在同一路由器后面。还假设内容服务器计算机133具有不同于内容服务器计算机134的硬件配置,该硬件配置导致内容服务器计算机133具有低于内容服务器计算机134的吞吐量。控制服务器计算机102可存储将内容服务器计算机133分配到网站153和将内容服务器计算机134分配到网站154的映射。因此,在每个逻辑网站中的所有内容服务器计算机可表现相似。
[0067]网站可彼此临近。例如,即使内容服务器计算机133和内容服务器计算机134物理上位于同一房间,因为内容服务器计算机133和内容服务器计算机134可在不同路由器后面,因此可在不冋网站中。
[0068]系统100还包括虚拟网站184,其包括虚拟内容服务器计算机182。对⑶N上的媒体项目的请求可被转发给在任意数量位置中的任意数量的内容服务器计算机。即使在CDN的所有内容服务器计算机在地理位置上都不同,CDN的所有服务器对任意给定客户端也有望表现相似。因此,控制服务器计算机102可视⑶N(例如,⑶N18)为好像⑶N包括单一网站(例如,虚拟网站184),该单一网站包括单一内容服务器计算机(例如,虚拟内容服务器计算机182)。
[0069]2.3内容服务器计算机
[0070]内容服务器计算机130存储和提供媒体项目。媒体项目包含编码的媒体内容,当该编码的媒体内容被计算机或在计算机上运行的软件读取时,可被用于播放电影、电视节目、有声书、播客、图片、幻灯片或任意其他可向用户呈现或播放的媒体内容的至少一部分。
[0071]一组媒体项目可共同包含整条编码的多媒体内容,并且在该组媒体项目中的每个媒体项目可包含整条编码的多媒体内容的一部分。例如,一组媒体项目可共同包含编码的电影,并且在一组媒体项目中的每个媒体项目可包含该数字编码的电影的两秒的数据块。
[0072]多组媒体项目可表示不同质量等级的同一电影。例如,第一组和第二组媒体项目均可包含特定的编码的电影。但是,第一组媒体项目可能包含低于第二组媒体项目的比特率的特定的编码的电影。此外或替换地,第一组媒体项目可以以兼容第一类型的客户端计算机的第一格式,例如,台式计算机上运行的浏览器;而第二组媒体项目可以以兼容第二类型的客户端计算机的第二格式,例如,移动设备上运行的应用。
[0073]媒体内容通常要求大量的存储空间。媒体项目库可超过拍字节(petabyte)。由于媒体库的规模这样大,因此单一内容服务器计算机可包含一组包括库中的媒体标题的一部分的媒体项目。
[0074]整个库可分布于多个内容服务器计算机。例如,每个网站150可包含分布于网站中的内容服务器计算机的整个库的拷贝。此外或替换地,为了冗余,每个网站可存储两个或两个以上整个库的拷贝,并且每个网站可将其库的拷贝分布于网站中的内容服务器计算机。在实施例中,同一媒体项目的两个拷贝不可存储在同一内容服务器计算机上。
[0075]此外或替换地,每个网站可存储整个库的至少一部分,并且每个网站可将其库的一部分分布于网站中的内容服务器计算机。此外或替换地,媒体项目可至少部分基于流行度进行优先化。存储较高优先级媒体项目的拷贝的内容服务器计算机比存储较低优先级媒体项目的多。
[0076]2.4客户端计算机
[0077]客户端计算机可以为台式计算机、笔记本电脑、平板电脑、电话、其他移动设备、游戏控制器、机顶盒、流媒体播放器、影碟播放器、电视、混合电视、或任意其他能够请求、接收、流送、播放和/或显示来自内容服务器计算机的媒体项目的计算设备。例如,在图1中,客户端计算机192可以为台式计算机,客户端计算机194可以为游戏控制器,客户端计算机196可以为移动电话或智能电话。
[0078]客户端计算机可包括通过路由器连接到另一网络的其自身的网络。例如,客户端计算机可以为连接到路由器、连接到有线调制解调器、连接到ISP、及连接到一个或多个其他网络的机顶盒。
[0079]在图1中,系统100包括客户端计算机192、客户端计算机194及客户端计算机196(共同称为“客户端计算机190”)。客户端计算机190连接系统100中的每个服务器。例如,客户端计算机192可通过第一网络112(具体通过路由器142)连接内容服务器计算机131和内容服务器计算机132。客户端计算机192可通过第一网络112和第二网络114(具体通过路由器143和路由器144)分别连接内容服务器计算机133和内容服务器计算机134。客户端计算机192可通过第一网络112、第二网络114和ISP网络116 (具体通过路由器146)连接内容服务器计算机136。客户端计算机192可通过第一网络112、第二网络114和传输网络118 (具体通过路由器148)连接内容服务器计算机138。客户端计算机192可通过第一网络112、互联网110和⑶N180连接虚拟内容服务器计算机182。客户端计算机192可通过第一网络112和互联网110连接控制服务器计算机102。
[0080]3.0流程概述
[0081]图3示出了在示例性实施例中的响应于接收对关于保存媒体项目标题的内容服务器计算机的信息的请求,评估和选择最近的一个或多个内容服务器计算机的流程。虽然图3示出了根据实施例的示例性步骤,但是其他实施例可忽略、加入、重排和/或修改所示任意步骤。为了展示清晰的示例,图3参照图1进行描述,但图1的采用特定布置在其他实施例中不要求。
[0082]在图3中,步骤305,控制服务器计算机(例如,控制服务器计算机102(图1))收集多个路由表。路由表是存储在包含关于连接到路由器或服务器计算机的网络的拓扑结构的信息的路由器和/或服务器计算机上的数据表或数据的集合。BGP路由表是包含互联网协议(“IP”)网络或指定网络可达性的前缀的路由列表的表或数据集合。存储在BGP路由表中的每个路由还可包括其他属性:AS-Path、MED、地理位置及社区属性。存储于被存储在路由器和/或服务器计算机上的BGP路由表中的路由被传播给其他路由器和/或服务器计算机,以使其他路由器和/或服务器计算机知道新的网络和/或网络的新的路由。
[0083]返回到步骤305,在一个实施例中,控制服务器计算机102为每个内容服务器计算机130、路由器140和/或网站150收集路由表。例如,每个内容服务器计算机130可维护其自身的路由表或从内容服务器计算机处于其后面的路由器下载路由表。每个内容服务器计算机130可向控制服务器计算机102上传其路由表。控制服务器计算机102可将接收到的路由表存储在路由表存储库或数据库中,并且将接收到的路由表与上传该路由表的内容服务器计算机相关联。如果第一路由表与路由表存储库中的第二路由表相同,则控制服务器计算机102可删除第二路由表。控制服务器计算机102可将关联被删除的第二路由表的内容服务器计算机与第一路由表相关联。
[0084]此外或替换地,路由器140和/或网站150可以与路由表相关联。例如,每个路由器140可向控制服务器计算机102上传路由表。控制服务器计算机102可将上传的路由表存储在路由表存储库中,并且将路由表与路由器、路由器所属的网站和/或路由器后的每个内容服务器计算机相关联。控制服务器计算机102可包括路由器和网站、网站和内容服务器计算机和/或路由器和内容服务器计算机的映射。
[0085]在步骤310,控制服务器计算机102接收来自客户端计算机的对关于保存媒体项目标题或媒体项目标题的一部分的内容服务器计算机的信息的请求。例如,与客户端计算机192交互的用户可通过图形用户界面选择特定电影(“电影XYZ”)在客户端计算机192上观看。作为响应,客户端计算机192向控制服务器计算机102发送对关于保存电影XYZ的拷贝的内容服务器计算机的信息的请求。控制服务器计算机102接收该请求并进行到步骤 320。
[0086]在步骤320,控制服务器计算机102评估哪些内容服务器计算机最接近提出请求的客户端计算机,以及哪些保存着所请求的媒体项目标题的拷贝。例如,控制服务器计算机102可维护记录在每个内容服务器计算机130上存储着哪些电影或电影的部分的数据库。继续步骤310的示例,为了展示清晰的示例,假设电影XYZ存储在内容服务器计算机131、内容服务器计算机136、内容服务器计算机138、及虚拟内容服务器计算机182上。控制服务器计算机102可至少部分基于与每个内容服务器计算机131、136、138、182相关联的路由表来评估哪些内容服务器计算机是最接近的。采用路由表来评估接近度的流程将在后面的章节中讨论。在此示例中,控制服务器计算机102可评估内容服务器计算机131、内容服务器计算机136及虚拟内容服务器计算机182是最接近的。
[0087]在步骤340,控制服务器计算机102向客户端计算机发送关于被评估为最接近客户端计算机192且保存所请求的媒体项目标题的拷贝的内容服务器计算机的信息。继续步骤320的示例,控制服务器计算机102可向客户端计算机192发送一组识别内容服务器计算机131、内容服务器计算机136及内容服务器计算机182的网络位置的统一资源定位符
(“亂”)。
[0088]4.0控制服务器计算机组件及流程
[0089]控制服务器计算机102可评估对于每个客户端计算机190的最近的保存媒体项目标题的内容服务器计算机。此外,控制服务器计算机102可基于费用将内容服务器计算机分组为不同等级,和/或至少部分基于容量、带宽、或任意其他性能参数为内容服务器计算机加权。结果可返回到提出请求的客户端计算机。
[0090]图2示出了在示例性实施例中的控制服务器计算机。虽然图2示出了特定实施例以便展示清晰的示例,但是其他实施例可忽略、加入、重排和/或修改所示任意元件。在图2中,控制服务器计算机102被展示为好像所有组件都在单一计算机上实现;但是控制服务器计算机可用多个计算机(例如,数据库服务器、文件服务器、及执行接近度评估、分组和/或加权的服务器计算机)实现。为了展示清晰的示例,图2可参照图1来描述,但图1的采用特定布置在其他实施例中不要求。
[0091]在图2中,控制服务器计算机102包括处理器202、内容服务器数据库220、路由表存储库230、接近度评估单元240、等级分配单元250、以及加权单元260。处理器202可包括配置为执行存储的程序来为控制服务器计算机102或其任意组件执行此处将进一步描述的流程和操作的CPU。
[0092]4.1内容服务器数据库
[0093]内容服务器数据库220包括存储在每个内容服务器计算机130上的可用媒体项目列表。内容服务器数据库220还可包括每个内容服务器计算机130的地址。例如,内容服务器数据库220可包括存储在内容服务器计算机131上的所有媒体项目列表。内容服务器数据库220还可包括对于内容服务器计算机131和/或对于存储在内容服务器计算机131上的媒体项目的统一资源定位符(“URL”)。
[0094]内容服务器数据库220可包括每个网站150和/或内容服务器计算机130的估计吞吐量。估计吞吐量可基于可用带宽、每个内容服务器计算机130的速度、及其他因素。例如,内容服务器数据库220可存储内容服务器计算机131的估计带宽(例如,每秒一千兆比特)和内容服务器计算机133的估计带宽(例如,每秒两千兆比特)。还例如,内容服务器数据库220可存储网站156的估计带宽(可以为每秒四千兆比特)和虚拟网站184的估计带宽(例如,每秒六千兆比特)。
[0095]此外或替换地,内容服务器数据库220可包括每个网站150和/或内容服务器计算机130的相对吞吐量。例如,内容服务器数据库220可存储内容服务器计算机131相比于内容服务器计算机133的相对吞吐量(例如,0.5或50%,表示内容服务器计算机131具有内容服务器计算机133的一半带宽)。同样地,内容服务器数据库220可存储网站156相比于虚拟网站184的相对吞吐量(例如,0.66或66%,表示网站156的带宽是虚拟网站184的带宽的三分之二)。
[0096]内容服务器数据库220还可包括用于从一个或多个内容服务器计算机130和/或网站150发送数据的费用、估计费用和/或费用指示器。例如,内容服务器数据库220可存储从虚拟内容服务器计算机182或虚拟网站184传输每千兆比特的费用$1.00。还例如,内容服务器数据库220可存储指示从位于传输网络118的内容服务器计算机138向客户端计算机192传输数据比从位于第二网络114(对等网络)的内容服务器计算机133要昂贵的数据。
[0097]4.2路由表存储库
[0098]路由表存储库230可包括由控制服务器计算机102接收的每个内容服务器计算机130、每个路由器140和/或每个网站150的路由表。在图2中,路由表存储库230包括对应于每个内容服务器计算机130的路由表:对应于内容服务器计算机131的路由表231、对应于内容服务器计算机132的路由表232、对应于内容服务器计算机133的路由表233、对应于内容服务器计算机134的路由表234、对应于内容服务器计算机136的路由表236及对应于内容服务器计算机138的路由表238。
[0099]路由表对CDN(例如,CDN180)和/或虚拟内容服务器计算机(例如,虚拟内容服务器计算机182)不可用。例如,一些CDN可不向内容提供商分发路由表。因此在实施例中,CDN可被广泛评估。例如,控制服务器计算机102可至少部分基于客户端计算机类型、客户端计算机位置或任意其他与客户端计算机有关的属性,评估虚拟内容服务器计算机182是最接近任意客户端计算机190或其子集的内容服务器计算机之一。此外或替换地,路由表存储库230可包括对应于虚拟内容服务器计算机182的路由表。对应于虚拟内容服务器计算机182的路由表至少部分由网络管理员配置。
[0100]4.3接近度评估单元
[0101 ] 接近度评估单元240可采用存储在路由表存储库230中的路由表来评估哪些内容服务器计算机130、路由器140和/或网站150最接近特定的客户端计算机。特别地,接近度评估单元240可向内容服务器数据库220查询保存包括至少所选媒体标题的一部分的媒体项目的内容服务器计算机。接近度评估单元240可向路由表存储库查询与返回的内容服务器计算机一致的路由表。接近度评估单元240可至少部分基于返回的路由表,评估哪个(些)返回的内容服务器计算机最接近特定的提出请求的客户端计算机。
[0102]图4示出了根据示例性实施例的用于评估哪些保存所请求的媒体项目的拷贝的内容服务器计算机最接近客户端计算机的更详细的流程。虽然图4示出了根据实施例的示例性步骤,但是其他实施例可忽略、加入、重排和/或修改所示任意步骤。为了展示清晰的示例,图4可采用在图1和图2中所示的实施例来进行描述。
[0103]现在参见图4,在步骤410中,接近度评估单元240向内容服务器数据库220查询保存一个或多个媒体项目的内容服务器计算机列表。例如,接近度评估单元240向内容服务器数据库220查询保存作为电影XYZ的编码的拷贝或电影XYZ的编码的拷贝的一部分的媒体项目的所有内容服务器计算机。为了展示清晰的示例,假设内容服务器计算机131、内容服务器计算机132、内容服务器计算机133、内容服务器计算机136、以及内容服务器计算机138保存作为电影XYZ的编码的拷贝或电影XYZ的编码的拷贝的一部分的媒体项目。因此,响应于来自接近度评估单元240的查询,内容服务器数据库220返回满足该查询的内容服务器计算机列表:内容服务器计算机131、内容服务器计算机132、内容服务器计算机133、内容服务器计算机136、以及内容服务器计算机138。
[0104]在步骤420中,接近度评估单元240检索与步骤410中返回的内容服务器计算机相关的路由表。继续步骤410的示例,接近度评估单元240从路由表存储库230检索相应的路由表:路由表231、路由表232、路由表233、路由表236和路由表238。
[0105]在步骤430、440、450、460中,接近度评估单元240至少部分基于检索的路由表,评估最接近特定客户端计算机的内容服务器计算机。接近度评估单元240可采用路由表的一个或多个路由属性来评估哪些内容服务器计算机最接近特定客户端计算机。
[0106]4.3.1前缀及CIDR块记法
[0107]接近度评估单元240可至少部分基于存储在每个检索的路由表和提出请求的客户端计算机的IP地址中的前缀,评估哪些内容服务器计算机130是最接近的。路由表中的前缀指示特定IP地址或子网的可达性。通常,前缀作为无类域间路由(“CIDR”)块存储。CIDR块记法可能相差很大。为了展示清晰的示例,本公开采用Net CIDR块记法。但是,其他实施例可采用其他格式或记法。在Net CIDR块记法中,CIDR块包括两个组分:IP地址和斜线后面的称为前缀大小的数字,例如,255.255.255.0/24。IP地址可作为三十二位的串存储,其中为每个子网分配八位;因此,每个子网可从O到255变化。前缀大小指示在称为前缀掩码的三十二位宽的掩码中的“I”的位数,该前缀大小应用于IP地址以确定范围。
[0108]以下三个示例示出了 CIDR块记法如何被用于指定一个或多个子网或地址的范围:在第一个示例中,192.168.100.0/22 表示从 192.168.100.0 到 192.168.103.255范围的1024个子网。在第二个示例中,192.168.111.0/24表示从192.168.111.0到192.168.111.255范围的256个子网。在第三个示例中,192.168.111.031/32表示一个子网或地址:192.168.111.031。如这三个示例所示,前缀大小越大,子网或地址的范围越窄。
[0109]现在返回到图4,在步骤430中,接近度评估单元240至少部分基于作为CIDR块存储的前缀,评估哪些内容服务器计算机是最接近的。为了展示清晰的示例,假设客户端计算机194具有IP地址:38.104.134.186。也假设第一路由存储在路由表231中,第二路由存储在路由表233中,第三路由存储在路由表234中,第四路由存储在路由表236中,且第五路由存储在路由表238中。进一步假设第一路由、第二路由、第三路由和第四路由每个包括前缀=38.104.134.186/32 ;第五路由包括前缀:38.104.134.0/24。客户端计算机194的IP地址在每个前缀的范围内。前四个路由被评估为比第五路由更接近,因为前四个路由比第五路由的范围窄。因此,接近度评估单元240评估内容服务器计算机131、133、134和136同样比内容服务器计算机138接近客户端计算机194。
[0110]此外或替换地,具有大体重叠的范围的前缀可被认为距离同样远。例如,接近度评估单元240可评估两个前缀38.104.134.184/30和38.104.134.186/31同样接近具有IP地址38.104.134.186的客户端计算机。
[0111]4.3.2AS-PATH 属性
[0112]接近度评估单元240可至少部分基于AS-Path属性,评估哪些内容服务器计算机是最接近的。AS-Path属性可包括指示数据到达预期网络或地址所穿过的网络的AS数。每个路由器140可包括唯一的AS数。为了展示清晰的示例,假设图1中为每个路由器140采用的参考数字为路由器的AS数;因此,路由器143的AS数是143,且路由器142的AS数是142,以此类推。进一步假设每个内容服务器计算机130的AS数是内容服务器计算机处于其后面的路由器的AS数。因此,路由器143后面的内容服务器计算机133的AS数是143,且内容服务器计算机131和内容服务器计算机132 二者的AS数都是142。
[0113]当本地路由插入到路由表中时,AS-Path属性可以为空。例如,对应于内容服务器计算机133、路由器143或网站153的路由表233可包括具有包括客户端计算机194的IP地址的前缀的路由。路由的AS-Path属性可以为空,因为客户端计算机194对内容服务器计算机133、路由器143和/或网站153来说是本地的。
[0114]当路由传播给其他路由器时,当前路由的AS数可附加到AS-Path属性。为了展示清晰的示例,假设路由器143传播之前示例中的路由给路由器146。路由器146可存储接收到的路由的拷贝,但AS-Path属性可被置为“143”。因此,AS-Path可指示通过路由器143在路由器146和客户端计算机194之间发送的数据。还例如,假设路由器146传播其新的路由给路由器148。路由器148的路由表可包括具有与存储在路由器143的原路由相同的前缀的新路由,但AS-Path属性可被置为“148143”。AS-Path向路由器148指示在内容服务器计算机133和路由器146之间发送的数据通过路由器146和路由器143。
[0115]返回到图4,在步骤440中,且如上所示,接近度评估单元240至少部分基于存储在每个被评估为同样最近路由中的AS-Path属性,评估哪些内容服务器计算机是最接近的。特别地,接近度评估单元240可评估包括更短AS-Path的路由更接近提出请求的客户端计算机。为了展示清晰的示例,假设接近度评估单元240基于存储在之前章节中讨论的五个路由中的每个路由中的前缀,评估五个路由中的存储在路由表231、233、234、236中的前四个路由同样最接近客户端计算机194。进一步假设第一路由包括AS-Path:143 ;第二路由和第三路由包括空AS-Path ;且第四路由包括AS-Path:143。接近度评估单元240可至少部分基于存储在每个路由的AS-Path中的AS数的数量,评估内容服务器计算机133和内容服务器计算机134比内容服务器计算机131和内容服务器计算机136更接近客户端计算机194。此外,接近度评估单元240可评估内容服务器计算机133和内容服务器计算机134同样接近客户端计算机194。
[0116]4.3.3多出口鉴别器属性
[0117]接近度评估单元240可至少部分基于存储在每个路由中的多出口鉴别器(“MED”)属性,评估哪些内容服务器计算机是最接近的。MED属性指示进入具有多个入口点的网络的优选路径。通常,较低的MED值假设为优选于较高的MED值。但是,在其他实施例中,较高的MED值假设为优选于较低的MED值。
[0118]网络管理员可设置MED值来指示优选。为了展示清晰的示例,假设内容服务器计算机138存在于传输网络118,传输网络118可向在内容服务器计算机138上托管内容以向其他网络传输数据的内容提供商索取费用。还假设内容服务器计算机131存在于第一网络112(对等网络),第一网络112不向在内容服务器计算机138上托管内容以向其他网络传输数据的内容提供商索取费用。因此,内容服务器计算机138的网络管理员可以为对应于内容服务器计算机138的路由表238中的所有路由将MED属性设置为更高的值。更高的MED值可指示其他内容服务器计算机低优选于其他内容服务器计算机,例如内容服务器计算机131。网络管理员可因为很多其他原因而提高MED值。例如,特定子网被获知比另一子网具有更高的平均延迟,因此到特定子网的每个路由被网络管理员分配较高的MED值。MED值也可基于客户端计算机的或子网的位置(例如,国家)、设备类型(例如,游戏控制器)、测试计划和/或ISP。因此,接近度评估单元240可基于MED属性和客户端计算机的位置、设备类型、测试计划和/或ISP,评估一些路由为低优选的。
[0119]现在返回到图4,在步骤450中,接近度评估单元240至少部分基于存储在每个被评估为同样最近路由中的MED属性,评估哪些内容服务器计算机是最接近的。特别地,接近度评估单元240可评估包括较低MED的路由更接近提出请求的客户端计算机。为了展示清晰的示例,假设接近度评估单元240基于存储在之前章节中讨论的五个路由中的分别存储在路由表233和路由表234中的第二路由和第三路由这两个路由的每个路由中的前缀和AS-Path,评估第二路由和第三路由同样最接近客户端计算机194。进一步假设第二路由包括MED值:1 ;且第三路由包括MED值:10。接近度评估单元240可至少部分基于存储在每个路由的MED属性中的MED值,评估内容服务器计算机133比内容服务器计算机134更接近客户端计算机194。
[0120]在实施例中,如果路由不包含MED值,则接近度评估单元240可假设该路由具有最大可能MED值,该最大可能MED值指示该路由对于所有具有匹配该路由中的其他属性的属性的所有路由来说是最坏可能路由。在另一实施例中,如果路由不包含MED值,则接近度评估单元240可假设该路由具有最小可能MED值,该最小可能MED值指示该路由对于所有具有匹配该路由中的其他属性的属性的所有路由来说是最好可能路由。
[0121]4.3.4地理位置属性
[0122]接近度评估单元240可至少部分基于存储在每个路由中的地理位置属性,评估哪些内容服务器计算机是最接近的。地理位置属性可宣告路由子网或前缀的位置。例如,路由中的地理位置属性可包括路由前缀的近似经度和纬度。此外或替换地,地理位置属性可包括路由前缀的街道地址。此外或替换地,地理位置属性可包括其他地理位置参数。
[0123]网络管理员可设置地理位置属性来指示子网位于哪里。例如,内容服务器计算机131的网络管理员可以为路由表231中的所有本地路由设置为内容服务器计算机131的街道地址,以指示本地路由或子网的地理位置。网络管理员可因为很多其他原因设置地理位置属性,包括:特定内容服务器计算机对于全部位于特定区域的特定组子网具有特定的高吞吐量;或者特定内容服务器计算机必须专用,或至少预期首先用于向特定区域发送或流送数据。
[0124]现在返回到图4,在步骤460中,接近度评估单元240至少部分基于存储在每个被评估为同样最近路由中的地理位置属性,评估哪些内容服务器计算机是最接近的。为了展示清晰的示例,假设接近度评估单元240基于存储在之前章节中讨论的五个路由中的分别存储在路由表233和路由表234中的第二路由和第三路由这两个路由的每个路由中的前缀和AS-Path,评估第二路由和第三路由同样最接近客户端计算机194。进一步假设内容服务器计算机133位于英国伦敦的特定街道的西面,而内容服务器计算机134位于伦敦的同一特定街道的东面。进一步假设第二路由和第三路由包括识别第二路由和第三路由的前缀是伦敦西面的地理位置值。接近度评估单元240可至少部分基于存储在每个路由的地理位置属性中的地理位置值,评估内容服务器计算机133比内容服务器计算机134更接近客户端计算机194。
[0125]在实施例中,如果路由不包含地理位置属性,则接近度评估单元240可假设该路由具有最坏可能地理位置值,该最坏可能地理位置值指示该路由对于所有具有匹配该路由中的其他属性的属性的所有路由来说是最远可能路由。在另一实施例中,如果路由不包含地理位置属性,则接近度评估单元240可假设该路由具有最好可能地理位置值,该最好可能地理位置值指示该路由对于所有具有匹配该路由中的其他属性的属性的所有路由来说是最近可能路由。
[0126]4.3.5利用社区属性
[0127]社区属性可以为加到每条路径或前缀以修改该路由如何与其他路由相比的属性。社区属性的另一名称为“路由性能”或“路由属性”。通常,社区属性作为数字存储在每个路由中,但可以为字符串或任意其他数据类型。值可以为由网络管理员定义的任意值。为了展示清晰的示例,特定社区属性可参考特定值来描述,但采用的特定值在其他实施例中不要求。在实施例中,设置为第一值(例如,“I”)的社区属性可指示地理位置值应被视为该地理位置值是最好可能地理位置值。设置为第二值(例如,“2”)的社区属性可指示MED值应被视为该MED值和任意观测或比较的MED值一样好。设置为第三值(例如,“3”)的社区属性可指示MED属性和地理位置属性二者均应被视为该MED属性和地理位置属性二者分别为最好可能MED值和地理位置值。社区属性可不同地指示接近度评估单元240忽略一个或多个属性、为一个或多个属性分配最坏可能值、为一个或多个属性分配最好可能值、或评估一个或多个路由的接近度或路由属性。
[0128]现在返回图4,在步骤430至步骤460的每个步骤中,接近度评估单元240可至少部分基于存储于每个最近路由中的社区属性,评估每个不同路由。为了展示清晰的示例,假设接近度评估单元240基于存储在之前章节中讨论的五个路由中的分别存储在路由表233和路由表234中的第二路由和第三路由这两个路由的每个路由中的前缀和AS-Path,评估第二路由和第三路由同样最接近客户端计算机194。假设第二路由具有MED值“1”,且第三路由具有MED值“10”。假设内容服务器计算机133位于英国伦敦的特定街道的西面,而内容服务器计算机134位于伦敦的同一特定街道的东面。假设第二路由和第三路由包括识别第二路由和第三路由的前缀是伦敦西面的地理位置值。进一步假设分配给第二路由和第三路由的社区属性指示接近度评估单元240应忽略第二路由和第三路由的MED属性和地理位置属性。因此,接近度评估单元240可评估内容服务器计算机133和内容服务器计算机134同样接近客户端计算机194,即使无论是内容服务器计算机133还是内容服务器计算机134正常本应被评估为比另一个更接近客户端计算机194。
[0129]4.3.6为内容分布网络确定接近度
[0130]如上所述,⑶N180和虚拟内容服务器计算机182可以为部署于跨越一组分布于各地的网络的多个数据中心中的服务器计算机的大型分布式系统。因此,接近度评估单元240可假设CDN180内的虚拟内容服务器计算机182与在任意其他网络的任意其他内容服务器计算机同样接近客户端计算机190。如果存在虚拟内容服务器计算机182可用的路由表,则虚拟表可被包含在路由表存储库230中及包含在以上讨论的流程中。
[0131]4.4基于费用分组内容服务器计算机
[0132]对于特定客户端计算机,一些被评估为最近的内容服务器计算机对于内容提供商向其发送数据比其他内容服务器计算机便宜。因此,控制服务器计算机102可至少部分基于费用,将一个或多个被评估为最近的内容服务器计算机分组到等级。
[0133]4.4.1 等级
[0134]等级可以为一组一个或多个被评估为花费内容提供商相同或几乎相同金额的内容服务器计算机。为了展示清晰的示例,假设第一网络112和第二网络114至少是对彼此及客户端计算机192及客户端计算机194的对等网络。如上所述,对等网络通常不会为在这两个对等网络或连接到对等网络的客户端计算机之间发送数据而向内容提供商索取费用。因此,对于客户端计算机192或客户端计算机194,控制服务器计算机102可将无论是在第一网络112上还是在第二网络114上的内容服务器计算机分组为同一等级,因为从网络无论是向客户端计算机192还是向客户端计算机194传输数据的费用被评估为相同(例如,免费)。
[0135]较高等级可指示较高费用。例如,CDN180是为分布数据而向内容提供商索取费用的CDN。同样地,传输网络118是为分布数据而向内容提供商索取费用的传输网络。为了展示清晰的示例,假设CDN180管理员和传输网络118管理员分别为传输到无论是传输网络118还是CDN180外的每千兆字节向内容提供商索取相同金额。因此,对于客户端计算机192或客户端计算机194,控制服务器计算机102可将传输网络118和CDN180上的内容服务器计算机分组为同一等级,因为费用被评估为近似相同(例如,不免费)。此外,控制服务器计算机102可分配给无论是在传输网络118还是在CDN180上的内容服务器计算机比分配给无论是在第一网络112还是在第二网络114上的内容服务器计算机的等级更高的等级,因为更高等级花费内容提供商更多费用。
[0136]控制服务器计算机102可以为内容服务器计算机分配任意等级数。为了展示清晰的示例,假设从虚拟内容服务器计算机182传输数据的评估费用高于内容服务器计算机138。进一步假设从内容服务器计算机131和内容服务器计算机133传输数据的费用低于无论是虚拟内容服务器计算机182还是内容服务器计算机138。因此,控制服务器计算机102可以将内容服务器计算机131和内容服务器计算机133分配到第一等级。控制服务器计算机102可以将内容服务器计算机138分配到第二等级。并且,控制服务器计算机102可以将虚拟内容服务器计算机182分配到第三等级。
[0137]4.4.2等级分配单元
[0138]控制服务器计算机102可采用等级分配单元250为特定客户端计算机关联最近的内容服务器计算机。等级分配单元250连接到接近度评估单元240和内容服务器数据库220。等级分配单元250可从接近度评估单元240接收对于特定客户端计算机被评估为最近的内容服务器计算机。等级分配单元250可使用存储在内容服务器数据库220中的数据来评估从每个被评估为最近的内容服务器计算机提供媒体项目的费用或相对费用。
[0139]图5示出了在示例性实施例中的用于对于特定客户端计算机为被评估为最近的内容服务器计算机分配等级的流程。虽然图5示出了根据实施例的示例性步骤,但是其他实施例可忽略、加入、重排和/或修改所示任意步骤。为了展示清晰的示例,图5可采用示于图1和图2中的实施例来描述。为了展示清晰的示例,假设内容服务器数据库220将每个内容服务器计算机130与该内容服务器计算机所处的网络相关联。假设内容服务器数据库220包括从每个网路向不同网络的客户端计算机传输数据的每千兆字节的价格。此外,假设根据内容服务器数据库220,从CDN180传输数据的费用是最贵的,从传输网络118传输数据的费用稍便宜些,而从任意其他网络传输数据的费用是最小的。
[0140]现在参考图5,在步骤510中,等级分配单元250从接近度评估单元240接收被评估为到特定客户端计算机同样最近的内容服务器计算机的列表。例如,等级分配单元250可接收被评估为到客户端计算机192同样最近并且也保存作为电影XYZ的拷贝的媒体项目的内容服务器计算机的列表。该列表可包括内容服务器计算机133、内容服务器计算机136、内容服务器计算机138以及虚拟内容服务器计算机182。
[0141]在步骤520中,等级分配单元250向内容服务器数据库220查询每个被评估为同样最近的内容服务器计算机所处的网络的列表。继续步骤510中的当前示例,等级分配单元250可向内容服务器数据库220查询内容服务器计算机133、内容服务器计算机136、内容服务器计算机138以及虚拟内容服务器计算机182所处的网络。
[0142]在步骤530中,等级分配单元250接收来自内容服务器数据库220的每个被评估为同样最近的内容服务器计算机所处的网络的列表。继续步骤520中的当前示例,网络的列表包括第二网络114、ISP网络116、传输网络118以及⑶N180。
[0143]在步骤540中,等级分配单元250向内容服务器数据库220查询从在步骤530中接收到的列表中的每个网络传输数据的估价。继续步骤530中的示例,等级分配单元250可向内容服务器数据库220查询从第二网络114、ISP网络116、传输网络118以及⑶N180向通过第一网络112连接每个内容服务器计算机130的客户端计算机192传输数据的每千兆字节的价格。
[0144]此外或替换地,等级分配单元250可向内容服务器数据库220查询从在步骤530中接收到的列表中的每个网络传输数据的费用的相对指示器。例如,内容服务器数据库220可存储每个网络相比于每个其他网络的相对费用指示器。等级分配单元250向内容服务器数据库220查询在步骤530中接收到的网络列表中的每个网络的相对指示器。
[0145]在步骤550中,等级分配单元250接收来自内容服务器数据库220的从在步骤530中接收到的列表中的每个网络传输数据的估价。继续步骤540中的示例,等级分配单元250可接收来自内容服务器数据库220的价格:从第二网络114和ISP网络116传输数据的每千兆字节的价格是免费的;从传输网络118传输数据的每千兆字节的价格是$1.00 ;而从CDN传输数据的每千兆字节的价格是$2.00。
[0146]此外或替换地,等级分配单元250可接收来自内容服务器数据库220的对于每个所查询的网络的相对费用指示器:⑶N180传输数据比第二网络114、ISP网络116或传输网络118费用高;传输网络118传输数据比第二网络114或ISP网络116费用高;以及第二网络114传输数据与ISP网络116费用大致相同。
[0147]在步骤560中,等级分配单元250将价格与每个被评估为同样最近的内容服务器计算机相关联。继续步骤550中的示例,等级分配单元250将第二网络114的价格关联到内容服务器计算机133,将ISP网络116的价格关联到内容服务器计算机136,将传输网络118的价格关联到内容服务器计算机138,以及将CDN 180的价格关联到虚拟内容服务器计算机182。
[0148]此外或替换地,等级分配单元250将第二网络114的相对费用指示器关联到内容服务器计算机133,将ISP网络116的相对费用指示器关联到内容服务器计算机136,将传输网络118的相对费用指示器关联到内容服务器计算机138,以及将CDN 180的相对费用指示器关联到虚拟内容服务器计算机182。
[0149]在步骤570中,等级分配单元250为每个被评估为同样最近的内容服务器计算机分配等级。继续步骤560中的示例,等级分配单元250将内容服务器计算机133和内容服务器计算机136分配到第一等级,因为每个服务器的价格是相同的并且每个服务器的价格无论是比内容服务器计算机138还是比虚拟内容服务器计算机182都要低。等级分配单元250可以将内容服务器计算机138分配到第二等级,因为内容服务器计算机138的价格比第一较低等级中的内容服务器计算机要高。等级分配单元250可以将虚拟内容服务器计算机182分配到第三等级,因为虚拟内容服务器计算机182的价格比较低等级中的内容服务器计算机要高。此外或替换地,等级分配单元250可采用相对价格指示器做出类似的分配。
[0150]在步骤580中,等级分配单元250返回分组为不同等级的被评估为同样最近的内容服务器计算机。继续步骤570中的示例,等级分配单元250可将分组为不同等级的被评估为同样最近的内容服务器计算机返回到控制服务器计算机102,以返回到客户端计算机192。等级可向客户端计算机指示客户端计算机应在从第二等级中的内容服务器计算机请求媒体项目之前从第一等级中的每个内容服务器计算机请求媒体项目,以此类推。此外或替换地,等级分配单元250可将分组到等级的被评估为同样最近的内容服务器计算机返回到加权单元260。
[0151]4.5负载平衡
[0152]每个包含内容服务器计算机的网站的带宽相差很大。例如,网站152可能具有两倍于网站154的带宽。因此,如果客户端计算机向网站152中的内容服务器计算机比向网站154中的内容服务器计算机提出更多请求,则对于更多用户来说,综合体验质量会更好。在实施例中,控制服务器计算机102可通过按特定顺序指示客户端应连接哪个(些)服务器来使内容服务器计算机负载平衡。
[0153]加权单元260连接到等级分配单元250和内容服务器数据库220。加权单元260可从等级分配单元250接收分组到等级的被评估为同样最近的内容服务器计算机。加权单元260可使用存储在内容服务器数据库220中的数据来评估每个等级内的每个被评估为同样最近的内容服务器计算机的吞吐量。加权单元260然后可排序每个等级内的每个最近的内容服务器计算机,并将每个等级内排序的最近内容服务器计算机返回到控制服务器计算机102,控制服务器计算机102进而将每个等级内排序的最近内容服务器计算机返回给提出请求的客户端计算机。
[0154]此外或替换地,加权单元260连接到接近度评估单元240。加权单元260可从接近度评估单元240接收未分组到等级的被评估为同样最近的内容服务器计算机。加权单元260然后可排序每个最近的内容服务器计算机,并向控制服务器计算机102返回排序的最近内容服务器计算机。控制服务器计算机102可将排序的最近内容服务器计算机返回给提出请求的客户端计算机。
[0155]图6示出了在示例性实施例中的用于排序每个等级中的最近内容服务器计算机的流程。虽然图6示出了根据实施例的示例性步骤,但是其他实施例可忽略、加入、重排和/或修改所示任意步骤。为了展示清晰的示例,图6采用示于图1和图2中的实施例进行描述。
[0156]现在参考图6,在步骤610中,加权单元260从等级分配单元250接收分组到等级的被评估为同样最近的内容服务器计算机的列表。例如,加权单元260可从等级分配单元250接收包括分组到第一等级中的内容服务器计算机134和内容服务器计算机136以及分组到第二等级中的内容服务器计算机138和虚拟内容服务器计算机182的列表。
[0157]在步骤620中,加权单元260向内容服务器数据库220查询列表中的每个内容服务器计算机所处的网站。继续步骤610中的当前示例,加权单元260向内容服务器数据库220查询以确定内容服务器计算机134、内容服务器计算机136、内容服务器计算机138以及虚拟内容服务器计算机182属于哪个网站。
[0158]在步骤630中,加权单元260从内容服务器数据库220接收列表中的每个内容服务器计算机所处的网站。继续步骤620中的当前示例,加权单元260从内容服务器数据库220接收内容服务器计算机134、内容服务器计算机136、内容服务器计算机138以及虚拟内容服务器计算机182所属的网站列表,即,网站154、网站156、网站158以及虚拟网站184。
[0159]在步骤640中,加权单元260向内容服务器数据库220查询每个网站的吞吐量。继续步骤630中的当前示例,加权单元260可向内容服务器数据库220查询网站154、网站156、网站158以及虚拟网站184的吞吐量。
[0160]在步骤650中,加权单元260将每个网站的吞吐量与相应的内容服务器计算机相关联。为了展示清晰的示例,假设网站154被评估为具有每秒100千兆字节的吞吐量,网站156被评估为具有每秒200千兆字节的吞吐量,网站158被评估为具有每秒100千兆字节的吞吐量,以及虚拟网站184被评估为具有每秒800千兆字节的吞吐量。继续步骤640中的当前示例,加权单元260可将每秒100千兆字节与内容服务器计算机134相关联,每秒200千兆字节与内容服务器计算机136相关联,每秒100千兆字节与内容服务器计算机138相关联,以及每秒1000千兆字节与虚拟内容服务器计算机182相关联。
[0161]在步骤660中,加权单元260至少部分基于与每个同样最近的内容服务器计算机相关联的吞吐量,排序每个等级中被评估为同样最近的内容服务器计算机。继续步骤650中的当前示例,加权单元260可具有66%的概率将内容服务器计算机136排在内容服务器计算机134之前,因为与内容服务器计算机136相关联的估计吞吐量是与内容服务器计算机134相关联的估计吞吐量的两倍。加权单元260可具有80%的概率将虚拟内容服务器计算机182排在内容服务器计算机138之前,因为与虚拟内容服务器计算机182相关联的估计吞吐量是与内容服务器计算机138相关联的估计吞吐量的五倍。
[0162]此外或替换地,加权单元260可以为每个等级中的最近内容服务器计算机分配概率。采用之前示例中的估计吞吐量,加权单元260可以为内容服务器计算机136分配概率66%,而为内容服务器计算机134分配概率33%,因为与内容服务器计算机136相关联的估计吞吐量是与内容服务器计算机134相关联的估计吞吐量的两倍。此外,加权单元260可以为虚拟内容服务器计算机182分配概率80 %,而为内容服务器计算机138分配概率20 %,因为与虚拟内容服务器计算机182相关联的估计吞吐量是与内容服务器计算机138相关联的估计吞吐量的五倍。
[0163]在步骤670中,加权单元260返回每个等级内排序的被评估为同样最近的内容服务器计算机。继续步骤660中的当前示例,加权单元260可将每个等级内排序的被评估为最近的内容服务器计算机返回给控制服务器计算机102以返回给客户端计算机192。每个等级内排序的被评估为最近的内容服务器计算机向客户端计算机指示客户端计算机应在从第二服务器计算机请求媒体项目标题之前从第一服务器计算机请求媒体项目标题。此外或替换地,分配给每个内容服务器计算机的概率可返回给控制服务器计算机102以返回给客户端计算机192。
[0164]在实施例中,一个或多个社区属性可被用于在不同位置的内容服务器之间的平衡负载。为了展示清晰的示例,假设在亚特兰大的内容服务器计算机被评估为比在西雅图的内容服务器计算机更接近客户端计算机,并且两个内容服务器计算机均具有相同的文件,但是亚特兰大内容服务器计算机的最大带宽是西雅图内容服务器计算机最大带宽的50%。管理员希望向西雅图内容服务器计算机发送业务,即使亚特兰大内容服务器计算机被评估为更接近特定客户端计算机。因此,管理员可设置一个或多个社区属性来指示控制服务器当在亚特兰大的内容服务器计算机和在西雅图的内容服务器计算机之间评估时应忽略地理位置属性。此外或替换地,管理员可设置一个或多个社区属性来指示对于同一文件,如果亚特兰大内容服务器计算机被评估为最接近客户端计算机且两个内容服务器计算机都具有客户端计算机请求的同一文件,则控制服务器应有66%的时间选择西雅图内容服务器计算机而33%的时间选择亚特兰大内容服务器计算机。
[0165]4.6容错性及配置
[0166]所有被评估为最接近特定的提出请求的客户端计算机的内容服务器计算机可被返回。但是如果网站故障,所有网站中的内容服务器计算机可能会不可达。例如,如果路由器142故障,内容服务器计算机131和内容服务器计算机132 二者均可能会不可达。因此,连接到第一网站的第一内容服务器计算机的客户端计算机可能要浪费时间去试图连接到同一网站的另一内容服务器计算机。例如,如果当路由器142故障时,客户端计算机192连接到内容服务器计算机131,则客户端计算机192可能要浪费时间去试图连接到内容服务器计算机132。
[0167]此外,在一些未在图1中示出的实施例中,多于两个的很多内容服务器计算机可包含在单一网站中。因此,如果包括客户端计算机连接到的内容服务器计算机的网站的路由器故障,客户端计算机花费五秒来确定内容服务器计算机不可达,并且客户端计算机从属于同一网站的其他五个内容服务器计算机请求数据,则客户端将浪费二十五秒来尝试找到不可达的服务器。因此,响应于接收对关于保存媒体项目标题的内容服务器计算机的信息的请求,控制服务器计算机102可配置为每个网站返回一个内容服务器计算机。因此,如果网站的对于特定内容服务器计算机的路由故障,客户端计算机从其请求数据的下一个内容服务器计算机将来自不同网站且通过不同路由器。
[0168]或者,控制服务器计算机102可返回多个来自同一网站的内容服务器计算机。控制服务器计算机102可将来自同一网站的内容服务器计算机与来自其他网站的内容服务器计算机交叉,从而如果客户端计算机按内容服务器计算机被返回的相同的顺序从内容服务器计算机请求媒体项目,则客户端计算机在尝试另一网站的至少一个其他内容服务器计算机之前,将不从同一网站请求数据。
[0169]此外,控制服务器计算机102可配置为返回至少最小数量的保存媒体项目的内容服务器计算机的信息。为了展示清晰的示例,假设内容服务器计算机131和内容服务器计算机132每个保存电影XYZ的拷贝,且没有其他内容服务器计算机保存电影XYZ的拷贝。进一步假设控制服务器计算机102配置为返回每个都包括所请求的媒体项目的至少两个内容服务器计算机的信息。还假设控制服务器计算机102配置为每个网站不返回多于一个内容服务器计算机的信息。虽然控制服务器计算机102配置为每个网站不返回多于一个内容服务器计算机的信息,但是控制服务器计算机102可由管理员配置为返回内容服务器计算机131和内容服务器计算机132 二者的信息以确保每个都包括所请求的媒体项目的至少两个内容服务器计算机都被返回。
[0170]控制服务器计算机102可具有额外配置。例如,管理员可配置控制服务器计算机102不返回虚拟内容服务器计算机,或其他在CDN上的内容服务器计算机。管理员还可配置控制服务器计算机102至少部分基于客户端计算机国家、设备类型、用户和/或A/B测试分配,返回特定内容服务器计算机或网站的信息。例如,如果客户端计算机是特定设备类型,则管理员可配置控制服务器计算机102返回在一个或多个特定嵌入网络或对等网络上的内容服务器计算机的信息。
[0171]4.7为同一标题的多个文件独立评估接近度
[0172]每个媒体项目(例如电影)可包含一个或多个文件。例如,电影可包含音频文件和分离的视频文件。此处讨论的一个或多个系统和方法可被用于独立地为每个文件确定选择哪个内容服务器。因此,控制服务器计算机可确定对于视频文件,第一网站的第一内容计算机最接近客户端计算机,而对于音频文件,第二网站的第二内容计算机最接近客户端计算机。同样地,音频文件和/或视频文件可分成一个或多个文件,且此处讨论的一个或多个系统和方法可被用于独立地为每个文件确定选择哪个内容服务器。
[0173]5.0实现机制——硬件概述
[0174]根据实施例,此处所述的技术由一个或多个专用计算设备实现。专用计算设备可以为硬连线的以执行该技术,或者可包括数字电子设备,例如,一个或多个永久被编程以执行该技术的专用集成电路(ASIC)或现场可编程门阵列(FPGA),或者可包括一个或多个被编程以按照在固件、存储器、其他存储设备或其组合中的程序指令来执行本技术的通用硬件处理器。这样的专用计算设备还可将定制的编程与定制的硬连线逻辑、ASIC或FPGA相结合来实现本技术。该专用计算设备可以为台式计算机系统、便携式计算机系统、手持设备、网络设备或任意其他包含硬连线和/或程序逻辑以实现本技术的设备。
[0175]例如,图7是示出了其上可实现本发明的实施例的计算机系统700的框图。计算机系统700包括用于传送信息的总线702或其他传送机制,以及与总线702连接用于处理信息的硬件处理器704。硬件处理器704可以为,例如,通用微处理器。
[0176]计算机系统700还包括连接到总线702用于存储将由处理器704执行的指令和信息的主存储器706,例如,随机存取存储器(RAM)或其他动态存储设备。主存储器706还可用于存储在由处理器704执行的指令的执行期间的临时变量或其他中间信息。当这些指令存储于处理器704可访问的非暂时性存储介质中时,这些指令使得计算机系统700成为被定制为执行指令中指定的操作的专用机器。
[0177]计算机系统700进一步包括连接到总线702用于存储用于处理器704的静态信息和指令的只读存储器(ROM) 708或其他静态存储设备。存储设备710 (例如,磁盘或光盘)被提供且连接到总线702以存储信息和指令。
[0178]计算机系统700可通过总线702连接到用于向计算机用户显示信息的显示器712,例如,阴极射线管(CRT)。包括字母数字键和其他键的输入设备714连接到总线702用于向处理器704传送信息和命令选择。另一类型的用户输入设备是用于向处理器704传送方向信息和命令选择且用于控制光标在显不器712上移动的光标控制器716,例如鼠标、轨迹球或光标方向键。该输入设备通常在两个轴(第一轴(例如,X)和第二轴(例如,y))中具有两个自由度,这可使设备指定在平面中的位置。
[0179]计算机系统700可采用与计算机系统结合可导致或编程计算机系统700为专用机器的定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现此处所述的技术。根据实施例,此处的技术由计算机系统700响应于处理器704执行一个或多个包含在主存储器706中的一个或多个序列的一个或多个指令来执行。这些指令可从另一存储介质(例如,存储设备710)读入主存储器706中。包含在主存储器706中的指令序列的执行导致处理器704执行此处所述的处理步骤。在替换的实施例中,硬连线电路可用于代替或结合软件指令。
[0180]此处使用的术语“存储介质”指任意存储导致机器按特定方式操作的数据和/或指令的非暂时性介质。这种存储介质可包括非易失性介质和/或易失性介质。非易失性介质包括,例如,光盘或磁盘,例如,存储设备710。易失性介质包括动态存储器,例如,主存储器706。例如,存储介质的普通形式包括:软盘、柔性盘(flexible disk)、硬盘、固态驱动器、磁带或任意其他磁性数据存储介质、CD-ROM、任意其他光学数据存储介质、任意带孔的物理介质、RAM、PROM、EPROM、FLASH-EPROM、NVRAM、任意其他存储器芯片或盒式存储器。
[0181]存储介质与传输介质不同,但可与传输介质结合使用。传输介质参与在存储介质之间传输信息。例如,传输介质包括:同轴电缆、铜线和光纤,包括包含总线702的线。传输介质还能够采用声波或光波的形式,例如在无线电波和红外线数据通信中产生的声波或光波。
[0182]各种形式的介质涉及携带一个或多个指令的一个或多个序列到处理器704以用于执行。例如,指令可首先携带于远程计算机的磁盘或固态驱动器上。远程计算机可加载指令到其动态存储器中,并采用调制解调器通过电话线发送该指令。计算机系统700本地的调制解调器能够接收电话线上的数据,并使用红外线发射器将数据转换为红外线信号。红外线探测器能够接收红外线信号中携带的数据,并且适当的电路能够将数据置于总线702上。总线702携带该数据到主存储器706,从主存储器706处理器704取出并执行该指令。由主存储器706接收到的指令在由处理器704执行之前或之后可选择地存储到存储设备710 上。
[0183]计算机系统700还包括连接到总线702的通信接口 718。通信接口 718提供到连接至本地网络722的网络链路720的双向数据通信连接。例如,通信接口 718可以为综合业务数字网(ISDN)卡、有线调制解调器、卫星调制解调器或提供到相应类型的电话线的数据通信连接的调制解调器。作为另一示例,通信接口 718可以为提供到可兼容LAN的数据通信连接的局域网(LAN)卡。无线链路也可被实现。在任意这种实现中,通信接口 718发送和接收携带表示各种类型的信息的数字数据流的电信号、电磁信号或光信号。
[0184]网络链路720通常提供通过一个或多个网络到其他数据设备的数据通信。例如,网络链路720可提供通过本地网络722到主计算机724或到由互联网服务提供商(ISP) 726操作的数据设备的连接。ISP726进而通过现在通常被称为“互联网”(728)的全球数据包通信网络来提供数据通信服务。本地网络722和互联网728 二者均使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号和在网络链路720上并通过通信接口 718的从计算机系统700携带数字数据以及携带数字数据至计算机系统700的信号是传输介质的示例性形式。
[0185]计算机系统700能够通过网络、网络链路720和通信接口 718发送消息和接收包括程序代码的数据。在互联网示例中,服务器730可通过互联网728、ISP726、本地网络722和通信接口 718发送请求的应用程序的代码。
[0186]接收到的代码可在其接收时由处理器704执行,和/或存储在存储设备710或其他非易失性存储器中用于后续执行。
[0187]在上述说明书中,已经参考多个具体细节对本发明的实施例进行了描述,该具体细节可随着不同实现而不同。因此,说明书和附图应被认为是说明性而非限制性意义。本发明的范围的唯一排外的指示以及 申请人:预期的本发明的范围是从本申请以这种权利要求提出的具体形式提出的该组权利要求的文字及等同范围,包括任意后面的修正。
[0188]6.0本公开的其他方面
[0189]在上述说明书中,已经参考多个具体细节对本发明的实施例进行了描述,该具体细节可随着不同实现而不同。因此,什么是本发明以及 申请人:预期的本发明的唯一排外的指示是从本发明以这种权利要求提出的具体形式提出的该组权利要求,包括任意后面的修正。此处清楚阐明的任意对包含在这种权利要求中的术语的定义在用于权利要求中时应约束该术语的含义。因此,未在权利要求中清晰陈述的限制、元素、性能、特征、优势或属性不应以任何形式限制该权利要求的范围。因此,说明书和附图应被认为是说明性而非限制性意义。
[0190]此处所述的主题的方面陈述于以下编号的条款中:
[0191]1.一种方法,包括:接收第一服务器计算机的第一路由表;接收第二服务器计算机的第二路由表;从客户端计算机接收对关于保存媒体项目标题的内容服务器的信息的请求,其中所述请求包括所述客户端计算机的客户端互联网协议地址;至少部分基于所述客户端互联网协议地址、所述第一路由表及所述第二路由表,评估所述第一服务器计算机到所述客户端计算机比所述第二服务器计算机到所述客户端计算机更接近;至少部分基于评估所述第一服务器计算机比所述第二服务器计算机更接近所述客户端计算机,向所述客户端计算机发送至所述客户端计算机的第一地址,其中所述第一地址识别存储在所述第一服务器计算机上的所述媒体项目标题;其中,所述方法由一个或多个专用计算设备执行。
[0192]2.如条款I所述的方法,其中所述评估包括评估所述第一服务器计算机在物理位置上到所述客户端计算机比所述第二服务器计算机到所述客户端计算机更接近。
[0193]3.如任意条款1-2所述的方法,其中所述客户端计算机是第一客户端计算机,所述请求是第一请求,所述客户端互联网协议地址是第一客户端互联网协议地址;所述方法进一步包括:从第二客户端计算机接收对关于保存所述媒体项目标题的内容服务器的信息的第二请求,其中所述第二请求包括所述第二客户端计算机的第二客户端互联网协议地址;至少部分基于所述第二客户端互联网协议地址、所述第一路由表及所述第二路由表,评估所述第二服务器计算机到所述第二客户端计算机比所述第一服务器计算机到所述第二客户端计算机更接近;至少部分基于评估所述第二服务器计算机到所述第二客户端计算机比所述第一服务器计算机到所述第二客户端计算机更接近,向所述第二客户端计算机发送至所述第二客户端计算机的第二地址,其中所述第二地址识别存储在所述第二服务器计算机上的所述媒体项目标题。
[0194]4.如任意条款1-3所述的方法,包括:接收第三服务器计算机的第三路由表;至少部分基于所述客户端互联网协议地址、所述第一路由表及所述第三路由表,评估所述第一服务器计算机到所述客户端计算机与所述第三服务器计算机到所述客户端计算机一样接近;至少部分基于评估所述第一服务器计算机到所述客户端计算机与所述第三服务器计算机到所述客户端计算机一样接近,向所述客户端计算机发送第二地址;其中所述第二地址识别存储在所述第三服务器计算机上的所述媒体项目标题。
[0195]5.如任意条款1-4所述的方法,包括:确定所述第一服务器计算机在第一路由器后面;确定所述第三服务器计算机在第二路由器后面;至少部分基于确定所述第一路由器与所述第二路由器是不同的路由器,确定所述第一服务器计算机与所述第三服务器计算机处于不同的网站;至少部分基于确定所述第一服务器计算机与所述第三服务器计算机处于不同的网站,向所述客户端计算机发送所述第二地址。
[0196]6.如任意条款1-5所述的方法,包括:评估所述第一服务器计算机的第一带宽;评估所述第三服务器计算机的第二带宽;至少部分基于所述第一带宽,确定第一概率;至少部分基于所述第二带宽,确定第二概率;向所述客户端计算机发送按照对应于所述第一概率和所述第二概率的大小的顺序的所述第一地址和所述第二地址的列表。
[0197]7.如任意条款1-6所述的方法,其中:所述第一路由表包括特定属性类型的第一属性;所述第三路由表包括所述特定属性类型的第二属性;所述第三路由表包括指示忽略所述特定属性类型的社区值;至少部分基于忽略所述第一属性和所述第二属性,评估所述第一服务器计算机到所述客户端计算机与所述第三服务器计算机到所述客户端计算机一样接近。
[0198]8.如任意条款1-7所述的方法,包括:确定用于从所述第一服务器计算机向所述客户端计算机发送数据的第一费用;确定用于从所述第三服务器计算机向所述客户端计算机发送数据的第二费用;对于所述客户端计算机,当所述第一费用低于所述第二费用时,将所述第一服务器计算机分配到第一等级,并且将所述第三服务器计算机分配到第二等级;向所述客户端计算机发送所述第一地址和所述第二地址以及指示所述第一地址被分配到所述第一等级及所述第二地址被分配到所述第二等级的数据。
[0199]9.如任意条款1-8所述的方法,包括:确定所述第三服务器计算机与内容分发网络相关联;对于所述客户端计算机,至少部分基于确定所述第二服务器计算机与所述内容分发网络相关联,将所述第一服务器计算机分配到第一等级,并且将所述第二服务器计算机分配到第二等级;向所述客户端计算机发送所述第一地址和所述第二地址以及指示所述第一地址被分配到所述第一等级及所述第二地址被分配到所述第二等级的数据。
[0200]10.如任意条款1-9所述的方法,包括:至少部分基于所述客户端计算机、所述客户端计算机的设备类型、所述客户端计算机的国家、登录所述客户端计算机的用户、测试协议、所述客户端计算机的互联网服务提供商,评估所述第一服务器计算机到所述客户端计算机比所述第二服务器计算机到所述客户端计算机更接近。
[0201]11.存储一个或多个序列的指令的非暂时性计算机可读的数据存储介质,所述指令当执行时导致一个或多个处理器执行条款1-10所述的任意方法。
[0202]12.包括指令的计算机程序产品,所述指令当在一个或多个处理器上实现时,执行条款1-10所述的任意方法。
[0203]13.具有配置为执行条款1-10所述的任意方法的处理器的计算机设备。
【权利要求】
1.一种方法,包括: 接收第一服务器计算机的第一路由表; 接收第二服务器计算机的第二路由表; 从客户端计算机接收对关于保存媒体项目标题的内容服务器的信息的请求,其中所述请求包括所述客户端计算机的客户端互联网协议地址; 至少部分基于所述客户端互联网协议地址、所述第一路由表及所述第二路由表,评估所述第一服务器计算机到所述客户端计算机比所述第二服务器计算机到所述客户端计算机更接近; 至少部分基于评估所述第一服务器计算机比所述第二服务器计算机更接近所述客户端计算机,向所述客户端计算机发送至所述客户端计算机的第一地址,其中所述第一地址识别存储在所述第一服务器计算机上的所述媒体项目标题; 其中,所述方法由一个或多个专用计算设备执行。
2.如权利要求1所述的方法,其中评估所述第一服务器计算机到所述客户端计算机比所述第二服务器计算机到所述客户端计算机更接近包括:评估所述第一服务器计算机在物理位置上到所述客户端计算机比所述第二服务器计算机到所述客户端计算机更接近。
3.如权利要求1所述的方法,其中所述客户端计算机是第一客户端计算机,所述请求是第一请求,所述客户端互联网协议地址是第一客户端互联网协议地址;所述方法进一步包括: 从第二客户端计算机接收对关于保存所述媒体项目标题的内容服务器的信息的第二请求,其中所述第二请求包括所述第二客户端计算机的第二客户端互联网协议地址; 至少部分基于所述第二客户端互联网协议地址、所述第一路由表及所述第二路由表,评估所述第二服务器计算机到所述第二客户端计算机比所述第一服务器计算机到所述第二客户端计算机更接近; 至少部分基于评估所述第二服务器计算机到所述第二客户端计算机比所述第一服务器计算机到所述第二客户端计算机更接近,向所述第二客户端计算机发送至所述第二客户端计算机的第二地址,其中所述第二地址识别存储在所述第二服务器计算机上的所述媒体项目标题。
4.如权利要求1所述的方法,包括: 接收第三服务器计算机的第三路由表; 至少部分基于所述客户端互联网协议地址、所述第一路由表及所述第三路由表,评估所述第一服务器计算机到所述客户端计算机与所述第三服务器计算机到所述客户端计算机一样接近; 至少部分基于评估所述第一服务器计算机到所述客户端计算机与所述第三服务器计算机到所述客户端计算机一样接近,向所述客户端计算机发送第二地址; 其中所述第二地址识别存储在所述第三服务器计算机上的所述媒体项目标题。
5.如权利要求4所述的方法,包括: 确定所述第一服务器计算机在第一路由器后面; 确定所述第三服务器计算机在第二路由器后面; 至少部分基于确定所述确定第一路由器与所述第二路由器是不同的路由器,确定所述第一服务器计算机与所述第三服务器计算机处于不同的网站; 至少部分基于确定所述第一服务器计算机与所述第三服务器计算机处于不同的网站,向所述客户端计算机发送所述第二地址。
6.如权利要求4所述的方法,包括: 评估所述第一服务器计算机的第一带宽; 评估所述第三服务器计算机的第二带宽; 至少部分基于所述第一带宽,确定第一概率; 至少部分基于所述第二带宽,确定第二概率; 向所述客户端计算机发送按照对应于所述第一概率和所述第二概率的大小的顺序的所述第一地址和所述第二地址的列表。
7.如权利要求4所述的方法,其中: 所述第一路由表包括特定属性类型的第一属性; 所述第三路由表包括所述特定属性类型的第二属性; 所述第三路由表包括指示忽略所述特定属性类型的社区值; 至少部分基于忽略所述第一属性和所述第二属性,评估所述第一服务器计算机到所述客户端计算机与所述第三服务器计算机到所述客户端计算机一样接近。
8.如权利要求4所述的方法,包括: 确定用于从所述第一服务器计算机向所述客户端计算机发送数据的第一费用; 确定用于从所述第三服务器计算机向所述客户端计算机发送数据的第二费用; 对于所述客户端计算机,当所述第一费用低于所述第二费用时,将所述第一服务器计算机分配到第一等级,并且将所述第三服务器计算机分配到第二等级; 向所述客户端计算机发送所述第一地址和所述第二地址以及指示所述第一地址被分配到所述第一等级及所述第二地址被分配到所述第二等级的数据。
9.如权利要求4所述的方法,包括: 确定所述第三服务器计算机与内容分发网络相关联; 对于所述客户端计算机,至少部分基于确定所述第二服务器计算机与所述内容分发网络相关联,将所述第一服务器计算机分配到第一等级,并且将所述第二服务器计算机分配到第二等级; 向所述客户端计算机发送所述第一地址和所述第二地址以及指示所述第一地址被分配到所述第一等级及所述第二地址被分配到所述第二等级的数据。
10.如权利要求1所述的方法,包括:至少部分基于所述客户端计算机、所述客户端计算机的设备类型、所述客户端计算机的国家、登录所述客户端计算机的用户、测试协议、所述客户端计算机的互联网服务提供商,评估所述第一服务器计算机到所述客户端计算机比所述第二服务器计算机到所述客户端计算机更接近。
11.一种计算机系统,包括: 处理器; 存储器; 按以下配置的处理模块: 接收第一服务器计算机的第一路由表; 接收第二服务器计算机的第二路由表; 从客户端计算机接收对关于保存媒体项目标题的内容服务器的信息的请求,其中所述请求包括所述客户端计算机的客户端互联网协议地址; 至少部分基于所述客户端互联网协议地址、所述第一路由表及所述第二路由表,评估所述第一服务器计算机到所述客户端计算机比所述第二服务器计算机到所述客户端计算机更接近; 至少部分基于评估所述第一服务器计算机比所述第二服务器计算机更接近所述客户端计算机,向所述客户端计算机发送至所述客户端计算机的第一地址,其中所述第一地址识别存储在所述第一服务器计算机上的所述媒体项目标题。
12.如权利要求11所述的系统,其中所述处理模块配置为至少部分基于评估所述第一服务器计算机在物理位置上到所述客户端计算机比所述第二服务器计算机到所述客户端计算机更接近,评估所述第一服务器计算机到所述客户端计算机比所述第二服务器计算机到所述客户端计算机更接近。
13.如权利要求11所述的系统,其中: 所述客户端计算机是第一客户端计算机,所述请求是第一请求,所述客户端互联网协议地址是第一客户端互联网协议地址; 所述处理模块配置为: 从第二客户端计算机接收对关于保存所述媒体项目标题的内容服务器的信息的第二请求,其中所述第二请求包括所述第二客户端计算机的第二客户端互联网协议地址; 至少部分基于所述第二客户端互联网协议地址、所述第一路由表及所述第二路由表,评估所述第二服务器计算机到所述第二客户端计算机比所述第一服务器计算机到所述第二客户端计算机更接近; 至少部分基于评估所述第二服务器计算机到所述第二客户端计算机比所述第一服务器计算机到所述第二客户端计算机更接近,向所述第二客户端计算机发送至所述第二客户端计算机的第二地址,其中所述第二地址识别存储在所述第二服务器计算机上的所述媒体项目标题。
14.如权利要求11所述的系统,其中所述处理模块配置为: 接收第三服务器计算机的第三路由表; 至少部分基于所述客户端互联网协议地址、所述第一路由表及所述第三路由表,评估所述第一服务器计算机到所述客户端计算机与所述第三服务器计算机到所述客户端计算机一样接近; 至少部分基于评估所述第一服务器计算机到所述客户端计算机与所述第三服务器计算机到所述客户端计算机一样接近,向所述客户端计算机发送第二地址; 其中所述第二地址识别存储在所述第三服务器计算机上的所述媒体项目标题。
15.如权利要求14所述的系统,其中所述处理模块配置为: 确定所述第一服务器计算机在第一路由器后面; 确定所述第三服务器计算机在第二路由器后面; 至少部分基于确定所述第一路由器与所述第二路由器是不同的路由器,确定所述第一服务器计算机与所述第三服务器计算机处于不同的网站; 至少部分基于确定所述第一服务器计算机与所述第三服务器计算机处于不同的网站,向所述客户端计算机发送所述第二地址。
16.如权利要求14所述的系统,其中所述处理模块配置为: 评估所述第一服务器计算机的第一带宽; 评估所述第三服务器计算机的第二带宽; 至少部分基于所述第一带宽,确定第一概率; 至少部分基于所述第二带宽,确定第二概率; 向所述客户端计算机发送按照对应于所述第一概率和所述第二概率的大小的顺序的所述第一地址和所述第二地址的列表。
17.如权利要求14所述的系统,其中: 所述第一路由表包括特定属性类型的第一属性; 所述第三路由表包括所述特定属性类型的第二属性; 所述第三路由表包括指示忽略所述特定属性类型的社区值; 所述处理模块配置为至少部分基于忽略所述第一属性和所述第二属性,评估所述第一服务器计算机到所述客户端计算机与所述第三服务器计算机到所述客户端计算机一样接近。
18.如权利要求14所述的系统,其中所述处理模块配置为: 确定用于从所述第一服务器计算机向所述客户端计算机发送数据的第一费用; 确定用于从所述第三服务器计算机向所述客户端计算机发送数据的第二费用; 对于所述客户端计算机,当所述第一费用低于所述第二费用时,将所述第一服务器计算机分配到第一等级,并且将所述第三服务器计算机分配到第二等级; 向所述客户端计算机发送所述第一地址和所述第二地址以及指示所述第一地址被分配到所述第一等级及所述第二地址被分配到所述第二等级的数据。
19.如权利要求14所述的系统,其中所述处理模块配置为: 确定所述第三服务器计算机与内容分发网络相关联; 对于所述客户端计算机,至少部分基于确定所述第二服务器计算机与所述内容分发网络相关联,将所述第一服务器计算机分配到第一等级,并且将所述第二服务器计算机分配到第二等级; 向所述客户端计算机发送所述第一地址和所述第二地址以及指示所述第一地址被分配到所述第一等级及所述第二地址被分配到所述第二等级的数据。
20.如权利要求11所述的系统,其中所述处理模块配置为至少部分基于所述客户端计算机、所述客户端计算机的设备类型、所述客户端计算机的国家、登录所述客户端计算机的用户、测试协议、所述客户端计算机的互联网服务提供商,评估所述第一服务器计算机到所述客户端计算机比所述第二服务器计算机到所述客户端计算机更接近。
【文档编号】H04L29/12GK104468502SQ201410495886
【公开日】2015年3月25日 申请日期:2014年9月24日 优先权日:2013年9月24日
【发明者】克里斯托弗·布兰德, 戴维·弗拉加尔 申请人:奈飞公司