相关申请交叉引用
本专利合作条约(pct)专利申请要求2014年12月15日提交的题为“requestprocessinginacontentdeliverynetwork”的非临时申请14/570,743的优先权,其全部内容通过引用并入本文。
版权声明
本专利文档包含受版权保护的材料。版权所有者不反对复制本专利文档或美国专利商标局的档案中的任何相关资料,但另保留所有版权。
通过引用并入
以下美国专利和美国公开专利申请通过引用全部并入本文以用于所有目的:
1.2012年12月12日提交的题为“contentdeliverynetwork”的美国公开专利申请us2013/0159472;
2.2012年12月12日提交的题为“contentdeliverynetwork”的美国公开专利申请us2013/0159473;
3.2014年6月17日提交的题为“originserver-sidechannelinacontentdeliveryframework”的美国公开专利申请us2014/0344399;
4.1998年2月10日提交的题为“optimizednetworkresourcelocation”的美国专利6,185,598;
5.2011年9月6日发布的、2009年2月23日提交的题为“load-balancingcluster”的美国专利8,015,298;以及
6.2013年7月16日发布的、2010年9月13日提交的题为“load-balancingcluster”的美国专利8,489,750。
本发明涉及内容传送和内容传送网络,更具体地说,涉及内容传送网络中的请求处理。
附图说明
本发明的其它目的、特征和特性以及结构的相关元件的操作方法和功能以及部件和制造经济的组合将在参考附图考虑以下描述和所附权利要求的情况下变得更加明显,所有附图构成本说明书的一部分。
图1示出了根据本发明的示例性实施例的示例性内容传送框架的多个方面;
图2(a)-2(b)示出了根据本发明的示例性实施例的示例性内容传送网络(cdn)的多个方面;
图3(a)-3(b)是示出了根据本发明的示例性实施例的处理的多个方面的流程图;以及
图4描绘了根据本发明的示例性实施例的计算的多个方面。
具体实施方式
术语表
如本文所用的,除非另有所用,否则以下术语或缩写具有以下含义:
cd表示内容传送;
cdn表示内容传送网络;
dns表示域名系统;
http表示超文本传输协议;
https表示安全版http;
uri表示统一资源标识符;以及
url表示统一资源定位符。
背景和概述
内容传送网络(cdn)代表一个或更多个内容提供商,优选地经由公共互联网将内容(例如,资源)有效地分发给客户端。内容提供商经由源数据源(源服务器或起源)提供其内容(例如,资源),并且cdn还可以提供一种超高层(over-the-top)传输机制,用于在相反方向上,即从客户端到源服务器有效地发送内容。终端用户(客户端)和内容提供商均受益于使用cdn。通过使用cdn,内容提供商能够使其自己的服务器(例如,其源服务器)减轻压力(从而减轻负载)。客户端通过能够以较少的延迟获得内容而受益。
在2012年12月12日提交的美国公开专利申请us2013/0159472和us/2013/0159473、2014年6月17日提交的us2014/0344399以及1998年2月10日提交的美国专利6,185,598中描述了示例性cdn,每篇文献的全部内容通过引用完整并入本文以用于所有目的。
如本文所使用的,客户端是例如被终端用户用于在系统内发出请求(例如,包括https请求的dns和http请求)的代理(例如,浏览器、机顶盒或其它应用)。当不使用cdn或其它中介时,这种请求可以直接转到订户自己的服务器(例如,他们的源服务器)或者互联网中的其它组件。当内容提供商订阅cd服务时(例如,如美国公开专利申请us2013/0159472和us2013/0159473所述),各种请求可以转到中介cd服务,所述中介cd服务可以将终端用户请求映射到源请求,从而沿途可转换和缓存内容。
每个不同的源(例如,源服务器)通常与一个订户相关联,但是订户可以与任何数量的源(包括订户自有的源和cdn提供的源)相关联。
实际上,cdn所交互的物理源可以是从中介链获取内容的中介,可能是例如最终终止于订户的实际源服务器处的独立内容获取系统的元件。然而,就cdn的内部而言,源是从其直接获取内容的系统边界之外的服务。
如本文所使用的,终端用户是最终消费由服务提供商实体提供的一些互联网服务(例如,网站、流媒体服务等)的实体(例如,个人或组织)。在本说明书中,该提供商实体有时被称为订户,因为它们订阅cdn服务,以便有效地传送它们的内容,例如,从其源传送给其消费者。cdn可以提供其订户和它们的最终用户之间的增值媒介(例如,缓存、转换等)。
cdn中的请求处理
这里参照图1描述内容传送框架100的示例性操作方面。客户端102(包括例如客户端1102-1、客户端2102-2、...、客户端k102-k)经由代表一个或更多个订户提供内容的cdn104来请求内容。应当理解,客户端通常并且优选地不知道它们的请求正被cdn处理。用于特定内容(c)的特定客户端请求(r)被引导到cdn中的cd服务以处理该请求。客户端请求可以通过作为cdn的一部分的会合(rendezvous)机制或以任何已知的方式被引导到cd服务。如图1所示,请求(r)被引导到代理(也称为分片器,slicer)106。从客户端的角度来看,代理106正在处理请求。然而,代理106可以是到可以处理客户端请求的多个其它cd服务(例如,服务器)的前端。如图1所示,代理106可以选择父代108之一来处理客户端请求(r)。代理106可以是交换机等。
应当理解,代理106可以修改和/或增强其从客户端接收的请求(例如,其可以将url标准化)。为此,从客户端到代理的请求表示为r,而从代理到父代的请求表示为r’。类似地,从父代到源的请求表示为r”。在许多情况下,r可以与r’相同,r’可以与r”相同。类似地,由源提供给父代的内容c可以在被提供给客户端之前被修改和/或增强,因此符号c’表示从父代到客户端的响应5。在许多情况下,c可以与c’相同,并且不需要任何修改。内容的修改可以包括添加元数据、重新格式化等。
优选地,所选择的父代cd服务是适合于给出的请求类型的服务。例如,一些cd服务可以以使得它们有效用于提供大型资源的方式被配置或调整,而其它cd服务可以被配置或调整为在提供小型资源方面更有效。节点的调整/配置可以包括:其拥有多少物理内存,其磁盘驱动器的数量/大小,其是否有旋转驱动器或固态驱动器(ssd)以及其上正在运行的软件。本领域普通技术人员将在阅读本说明书后认识到并理解,这些属性进行组合以指定特定机器或cdn节点最适合服务于哪种资源。例如,具有大量旋转驱动器但没有太多内存的机器会非常适合于提供可以从磁盘流出的非常大的资源。相反,对于大量但不太热门的小型资源的资料库,机器将希望拥有大量的ssd,以便访问它们的时间足够快。具有大量物理内存的机器则可以很好地处理大型或小型资源的工作集,相比需要前往磁盘,这些大型或小型资源的工作集更有效地适应内存。具有强大cpu性能的机器则对于需要大量操作(例如,擦写(scrubbing)、边侧包含(edge-side-include)或其它“边缘应用(applieationattheedge)”处理)的资源而言更为优先。
通常,代理106知道所请求的内容越多,其父代cd服务的选择应越好(更合适)。在这方面,代理106可以查询一个或更多个属性数据库110来确定与所请求的内容(例如,资源)有关的属性。属性数据库110优选地提供诸如资源大小的属性。在本文的优选示例性实施例中,客户端请求是采用uri或url形式的http请求(包括https请求),并且属性数据库110可以使用url来进行索引。如本文所使用的,用于特定请求的合适的cd服务可以是被充分配置(例如,利用硬件和/或软件)以处理该特定请求的cd服务。应当理解,尽管其它cd服务可能能够处理特定请求,但是合适的cd服务将优选地以有效的方式来处理该特定请求(或者,至少与其它cd服务一样有效)。
如上所述,代理106选择合适的父代cd服务(例如,服务器)来处理客户端请求。所选择的cd服务(例如,父代服务器)可以可行地经由代理分片器106将所请求的内容(r)提供给请求客户端。在一些情况下,所选择的cd服务可以从另一位置(例如,与内容提供商相关联的源服务器112)获得所请求的内容。如上所述,代理用作接触点,其基于正被请求的特定内容(例如,资源)将请求转发到合适的后端机器。也就是说,代理可以接收所有内容请求,但是向被调整为用于大型资源的那些机器发送针对大型资源的填充请求,并且向被调整为用于小型资源的那些机器发送针对小型资源的填充请求(或者,无论对机器的调整是什么标准映射)。
现在参照图2(a)描述请求处理的多个方面,图2(a)是代理106没有足够的(或任何)信息来将请求分配给合适的父代服务器的情况。客户端102做出内容请求r(在图2(a)中的a1处)。请求r被引导到代理106,代理106在属性数据库110中查找关于请求r的信息(在202处)。在该情况下,数据库110中没有足够的信息来允许代理106做出合适的确定。具体地,在一些实现中,代理106可能没有关于与请求r相关联的内容的大小的信息。然后,代理106将请求r发送/分配给通用(或任意)的父代cd服务108-g(在a2处)。
如本文所使用的,通用cd服务是指可能能够处理请求r的任何cd服务,尽管该通用服务可能并不适合或最适合处理该请求。
父代cd服务108-g请求与请求r相关联的内容(在a3处)(例如,从合适的源服务112),然后将所请求的内容c提供给请求客户端(可能经由代理106)(在a4-a5处)。父代cd服务108-g还跟踪和维护关于内容c的信息,优选地包括内容c的大小。然后,父代cd服务108-g可以用关于内容c的信息更新属性数据库110(在204处)。在一些情况下,父代cd服务108-g还可以(或替代地)在c的头部(header)中提供关于内容c的一些属性。
当代理106接收到先前已被处理的内容请求时,关于c的信息可能已经在数据库110中。如现在参照图2(b)所示,客户端102做出请求r(在b1处)。该请求被引导到代理106,代理106确定关于与r相关联的内容c的信息。例如,代理106可以查询数据库110(在202’处)以获得关于内容c的属性数据(例如,内容c的大小)。由于在该情况下代理106具有足够的信息,所以它将请求r’分配给合适的cd服务(例如,父代#a108-a)(在b2处)。cd服务108-a对请求进行处理(在b3处),从而将所请求的内容c提供给请求客户端(可能经由代理106)。
注意,对请求进行处理的cd服务108-a可以访问和/或更新属性数据库110,以例如添加关于内容c的热门程度的信息。
参照图3(a)-3(b)中的示例性流程图,描述各种实体做出的处理的多个方面。参照图3(a)的流程图,其示出了代理106所做出的处理的多个方面,代理106获得对内容(c)的请求(r)(在302处)。代理106确定(在304处)其是否具有关于所请求的内容c的足够信息(例如,c的大小或热门程度)。代理106可以访问一个或更多个数据库来确定关于内容c的信息。如果代理106没有并且不能确定关于内容c的足够信息来将请求分配给合适的cd服务(例如,父代服务器),则(在308处)代理106将请求r发送给通用cd服务(g)(例如,通用父代服务器)。另一方面,如果代理106确定(在304处)其确实具有(或可以确定)关于所请求的内容c的足够信息来将请求分配给合适的cd服务,则(在306处)代理106可以将请求发送给合适的cd服务(例如,服务器)。
参照图3(b)的流程图,其示出了通用服务器(g)(例如,在308处从代理106接收到请求的通用服务器)所做出的处理的多个方面,通用服务器(g)获得对内容c的请求r(在310处)。在这种情况下,请求到达服务器g,因为代理106没有关于内容c的足够信息来选择合适的服务器。然而,仍然可能有这种情况,通用服务器g具有或知道关于内容c的信息。如果通用服务器g知道关于内容c的信息或具有副本,则在属性数据库中更新关于c的信息。通用服务器c例如从源服务器获得所请求的内容(c)的副本(在312处),然后将内容c提供给请求客户端(在314处)。然后,通用服务器更新属性数据库(在316处),以包括其已经确定的关于内容c的信息(例如,内容的大小)。如果需要,通用服务器还可以(或者替代地)将元数据附加到响应,以指示资源类别。当下一次在该代理分片器接收到对该资源的请求时,可以利用缓存的元数据将填充请求引导到合适的父代主机。如果下一请求到达了不同的分片器,则其可能会联系同一个通用父代主机,该通用父代主机可以将其重定向到合适的父代主机。应当理解,当请求由合适的服务器处理时(在306发送的),该合适的服务器还可以更新属性数据库以包括它确定的关于内容c的信息。类似地,该合适的服务器还可以(或者替代地)将元数据附加到响应,以指示资源类别。
应该理解,在资源到期时,cdn可能需要重新学习资源。为此,优选地,对请求进行处理的cd服务基于关于资源的当前信息来更新数据库(或使它们被更新)。
由此描述了一种系统,其中cdn可以在其看到请求时确定请求的类别。cdn可以学习内容(例如,资源),并可以在其看到资源请求时,学习每个资源将落入什么类别,并合适地进行适配。
计算
图4是实现可以用于执行本文讨论的处理的代理、父代服务器或其它计算设备的计算系统400的示意图。该计算系统包括总线402(即互连)、至少一个处理器404、至少一个通信端口414、主存储器406、可移除存储介质410、只读存储器408以及大容量存储设备412。处理器404可以是任何已知的处理器,例如但不限于:
主存储器406可以是随机存取存储器(ram)或本领域公知的任何其它动态存储设备。只读存储器408可以是任何静态存储设备,例如用于存储静态信息(诸如处理器404的指令)的可编程只读存储器(prom)芯片。大容量存储设备412可以用于存储信息和指令。例如,可以使用诸如
总线402将处理器404与其它存储器、存储设备和通信模块通信地耦接。根据所使用的存储设备,总线402可以是pci/pci-x、scsi或基于通用串行总线(usb)的系统总线(或其它总线)。可移除存储介质410可以是任何种类的外部硬盘驱动器、软盘驱动器、
本文中的实施例可以被提供为计算机程序产品,其可以包括其上存储有指令的机器可读介质,所述指令可以用于对计算机(或其它电子设备)进行编程以执行处理。机器可读介质可以包括但不限于软盘、光盘、cd-rom、磁光盘、rom、ram、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、磁卡或光卡、闪存或适用于存储电子指令的其它类型的介质/机器可读介质。
如图所示,主存储器可以被编码有一个或更多个应用/服务422,所述应用/服务支持如上面关于各种附图和其它所讨论的功能。例如,在一个实施例中,应用422可以包括或以其它方式实现本文所描述的各种处理和/或指令。应用422(和/或如本文所述的其它资源)可以被实现为支持根据本文所述的不同实施例的处理功能的软件代码,例如,数据和/或逻辑指令(例如,存储在存储器中或另一计算机可读介质例如磁盘上的代码)。在一个实施例的操作期间,处理器404通过使用总线402访问主存储器406,以启动、运行、执行、解释或以其它方式执行应用422的逻辑指令。应用422的执行产生应用进程424中的处理功能。换句话说,进程424表示在计算机系统400中的处理器404内或之上执行的应用422的一个或更多个部分。
以上描述包括体现本公开技术的示例性系统、方法、技术、指令序列和/或计算机程序产品。然而,应当理解,可以在没有这些具体细节的情况下实施本公开。在本公开中,所公开的方法可以被实现为设备可读的指令集或软件。此外,应当理解,所公开的方法中的步骤的具体顺序或层次是示例方法的例子。基于设计偏好,应当理解,方法中的步骤的具体顺序或层次可以被重新排列,同时仍然在所公开的主题范围之内。随附的方法权利要求以样本顺序呈现各个步骤的元素,并且不一定意味着受限于所呈现的具体顺序或层次。
结论
如本文所使用的,包括在权利要求中,短语“至少一些”是指“一个或更多个”,并且包括仅一个的情况。因此,例如,短语“至少一些服务”是指“一个或更多个服务”,并且包括一个服务的情况。
如本文所使用的,包括在权利要求中,短语“基于”是指“部分地基于”或“至少部分地基于”,而不是排他性的。因此,例如,短语“基于因子x”是指“部分地基于因子x”或“至少部分地基于因子x”。除非使用单词“仅仅”明确说明,否则短语“基于x”并不意味着“仅基于x”。
如本文所使用的,包括在权利要求中,短语“使用”是指“至少使用”,而不是排他性的。因此,例如,短语“使用x”表示“至少使用x”。除非使用单词“仅仅”明确说明,否则短语“使用x”并不意味着“仅使用x”。
通常,如本文所使用的,包括在权利要求中,除非在短语中具体使用单词“仅”,否则不应将其读入该短语中。
如本文所使用的,包括在权利要求中,短语“不同”是指“至少部分不同”。除非明确规定,否则不同并不意味着完全不同。因此,例如,短语“x不同于y”表示“x至少部分不同于y”,并不意味着“x与y完全不同”。因此,如本文所使用的,包括在权利要求中,短语“x不同于y”表示x至少以某种方式与y不同。
如本文所使用的,包括在权利要求中,列表可以仅包括一个项目,并且除非另有说明,否则不需要以任何特定方式对多个项目的列表进行排序。列表可以包括重复的项目。例如,如本文所使用的,短语“cdn服务的列表”可以包括一个或更多个cdn服务。
应当理解,说明书和权利要求中的词语“第一”和“第二”用于区分或识别,而不是表明序列或数字限制。类似地,使用字母或数字标签(例如“(a)”、“(b)”等)用于帮助区分和/或识别,而不表示任何序列或数字限制或排序。
除非另有明确说明,否则任何流程图中的任何标签框不暗示排序。当图中显示断开的框时,与这些框相关联的活动可以以任何顺序执行,包括完全并行或部分并行。
虽然已经结合当前认为最实际和优选的实施例来描述了本发明,但是应该理解本发明不限于所公开的实施例,相反,本发明旨在覆盖所附权利要求的精神和范围内所包括的各种修改和等同布置。