首页> 中国专利> 具有可扩展编程框架的高速缓存服务器

具有可扩展编程框架的高速缓存服务器

摘要

本公开的实施例总体上包括用于提供可扩展内容传送平台的方法、系统和设备。所述方法、系统和设备包括识别内容传送网络的内容传送过程中的多个离散事件;以及提供结构化对象模型,所述结构化对象模型包括多个实例化的对象并在所述多个离散事件处可用。所述方法、系统和设备还包括提供编程语法,所述编程语法被配置为提供动作的逻辑流,其中当内容传送网络的内容传送过程中的所述多个离散事件中的至少一个事件发生时,将所述动作的逻辑流施加到所述多个对象上。

著录项

  • 公开/公告号CN102597980A

    专利类型发明专利

  • 公开/公告日2012-07-18

    原文格式PDF

  • 申请/专利权人 第三雷沃通讯有限责任公司;

    申请/专利号CN201080040206.7

  • 发明设计人 泰德·米德尔顿;

    申请日2010-09-10

  • 分类号G06F15/16(20060101);

  • 代理机构11021 中科专利商标代理有限责任公司;

  • 代理人杨静

  • 地址 美国科罗拉多

  • 入库时间 2023-12-18 06:12:56

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-08-27

    未缴年费专利权终止 IPC(主分类):G06F15/16 授权公告日:20160120 终止日期:20180910 申请日:20100910

    专利权的终止

  • 2016-01-20

    授权

    授权

  • 2012-09-19

    实质审查的生效 IPC(主分类):G06F15/16 申请日:20100910

    实质审查的生效

  • 2012-07-18

    公开

    公开

说明书

相关申请的交叉引用

本申请要求2009年9月10提交的发明名称为“Cache Server withExtensible Programming Framework”的美国临时专利申请61/241,306以及2010年7月14提交的发明名称为“Cache Server with ExtensibleProgramming Framework”的美国专利申请NO.12/836,418的优先权,在此基于所有目的而并入其作为参考。

技术领域

本公开的实施例涉及一种用于内容传送网络的可扩展内容传送平台。

背景技术

近年来,对因特网的使用极度增长。因特网上的内容的类型和源也得到增长。例如,计算机用户通常访问因特网来下载视频、音频、多媒体或用于商业、娱乐、教育或其它目的的其它类型的内容。今天,用户可以浏览诸如体育事件之类的事件的现场呈现,以及诸如视频和图片之类的存储内容。典型地,这些内容的提供商想要对浏览内容的方式以及由谁浏览进行一定程度的控制。例如,视频的提供商可能想要在分发时加密某些视频(例如,选定的视频、或视频的类型或类别)。典型地,用户想要“按需”的内容,以及可能不喜欢在浏览内容之前等待较长的时间用于下载。特定类型的内容趋于需要花费更长的时间用于下载。例如,根据所使用的下载技术的类型以及电影文件的大小,电影的下载可以花费数分钟或小时。

典型地,因特网内容的提供商是与提供基础设施来分发内容的网络提供商相分离的实体。为了到达极大量的观众,内容提供商典型地购买内容传送网络提供商的服务,一般而言,内容传送网络提供商具有大量的网络基础设施来分发内容。然而,典型地,因为内容提供商不对分发进行控制,提供商对如何分发内容或向谁分发内容的控制有限。

高速缓存服务器是一种专用网络服务器或服务,其充当了内容传送网络中的服务器,暂时存储用户访问的内容。高速缓存服务器加速了对数据的访问,并且减少了对企业带宽的要求。此外,高速缓存服务器还允许用户在内容服务器离线或不可用时访问内容,包括富媒体内容或其它文档。

高速缓存服务器可以是特征丰富的。特征是复杂的,有时是相互依赖的,并且通常在风格和配置方面不一致。对于描述、提供文件以及培训用户而言,传统高速缓存服务器的特征面临历史性的挑战。新特征需要显著的代码变化,这导致了延长的研制时间、代码复杂性、测试和漏洞修补周期等。典型地,还以相当灵活的方式(预期多种可能的用例、配置场景等)实现新特征,这进一步增大了解决方案的复杂性。

发明内容

提供了一种可扩展内容传送平台,在该可扩展内容传送平台上,可以以要服务的基本内容周围构建应用程序和服务。丰富且形式良好的元数据和“元代码”可以以一致和编程的方式与内容和/或请求相关联。在示例实施例中,可以基于发生的事件(例如,在处理针对内容的请求中发生的事件)来执行应用程序和服务(例如,模块和/或脚本)。可以多种不同的方式识别事件。在一种实现中,例如,将一组规则用于识别一个或多个事件,其中,基于所述一个或多个事件,识别并执行应用程序和/或服务。在另一示例实现中,系统提供结构化“事件”模型、原始函数和语言结构来创建服务层,其中可以以灵活的方式来实现所述服务层,而无需改变核心代码。

在这种系统的一个具体实现中,以现有规则库或其它配置表周围来构建“包装类(wrapper)”,而不用大规模地替代现有技术。在该实现中,“包装类”允许将系统呈现为一致的、单一的接口,以通过逻辑上代表的方式达到现有边缘/高速缓存服务器的基本能力。

可扩展内容传送平台提供了降低的代码复杂性以及增强的可维护性。核心代码提供对现有和未来特征加以支持的一组基本操作服务,其中可以利用核心基本操作服务构建现有和未来的特征,而无需改变核心代码。在一种这样的实现中,例如,核心基本操作服务包括对象高速缓存、指令解译、指令执行等。

在实施例中,可扩展内容传送平台还提供灵活的实现(例如,增强的可扩展性、定制化以及应用程序集成的潜力),而没有改变核心代码。使用这种可扩展内容传送平台,开发者可以在平台上创建虚拟无限的潜在应用程序。

在一个实现中,一种可扩展内容传送平台包括:(1)结构化事件模型,(2)结构化对象模型,(3)一组基础功能或动作,以及(4)基本的编程语法。在该实现中,结构化事件模型包括用于接收、处理和服务于针对内容的请求的一致性描述文档化过程(documented process)。处理流水线中的多个离散“事件”提供了内容传送过程中的“动作点”,在所述“动作点”处,可以(例如,通过定制逻辑)采取各种动作。因此,事件模型提供了更加易变的事件驱动范例,而非提供了基于严格规则的系统。

结构化对象模型实例化一系列对象。在实施例中,例如,对请求、资源、响应和其它“对象”进行定义,以获得和/或操纵各种一致性的性质和/或属性。

基础功能或动作提供了在离散事件处且基于各种对象要执行的功能或动作。在实施例中,例如,功能或动作包括操作,例如字符串解析和/或操纵、超文本传输协议(HTTP)消息构建和/或分解,资源操纵等。

在实施例中,基本的编程语法被用于创建动作的逻辑流,其中在事件发生时,将所述动作的逻辑流施加到对象上。例如,编程语法可以与更普通的网页开发语言(PHP、Python、Javascript、Perl等)之一或者专用子集(其提供“安全的”限制性集合或其它限制函数)一样丰富。

本文还描述和记载了其它实现。

附图说明

图1示出了根据各种实施例的适于分发可扩展内容传送平台内的内容的示例网络环境。

图2示出了根据各种实施例的用于在可扩展内容传送平台内分发内容的功能模块方面的系统。

图3是示出了根据各种实施例的流高速缓存模块的一个可能实现的功能模块图。

图4是示出了根据各种实施例的流高速缓存模块可以进入的一个可能状态集的状态图。

图5-7是示出了用于使内容成流的示例过程的流程图。

图8示出了根据各种实施例的适于在可扩展内容传送平台内分发内容的另一示例网络环境。

图9仍然示出了根据各种实施例的适于在可扩展内容传送平台内分发内容的另一示例网络环境。

图10示出了在内容传送网络的高速缓存服务器内部实现的示例可扩展编程框架。

图11示出了示例的结构化内容传送事件模型的框图。

图12是配置有根据本文实施例的内容流应用程序和过程的计算机系统的示例框图。

具体实施方式

本公开的实施例涉及用于内容传送网络的可扩展内容传送平台。

图1示出了根据各种实施例的支持可扩展内容传送平台的适于分发内容的示例网络环境100。计算机用户可以利用诸如桌上型计算机104之类的计算设备来访问内容分发网络(CDN)102。为了容易说明,将CDN102示作单个网络,但是在如下文将更详细描述的实际操作中,CDN 102可以典型地包括一个或多个网络。

例如,网络102可以代表以下网络中的一个或多个:服务提供商网络、大规模零售提供商网络和中间网络。将用户计算机102示作桌上型计算机,但是用户可以使用多种不同类型的计算设备中的任何一种计算设备来访问网络102,包括但不限于:桌上型计算机、手持式计算机、个人数字助理(PDA)、或蜂窝电话。

网络102能够向计算机104提供内容,并且支持用于网络环境100的可扩展内容传送平台。内容可以是多种类型的内容中的任何一种内容,包括视频、音频、图像、文本、多媒体或任何其它类型的媒体。计算机104包括应用程序,以接收、处理和呈现下载至计算机104的内容。例如,计算机104可以包括诸如Internet ExplorerTM或FirefoxTM之类的因特网浏览器应用程序,以及诸如Flash Media PlayerTM或QuicktimeTM之类的流媒体播放器。当计算机104的用户选择针对特定内容项的链接(例如,超链接)时,用户的网页浏览器应用程序促使向目录服务器106发送请求,请求目录服务器提供网络地址(例如,因特网协议(IP)地址),其中可以获得与链接相关联的内容。

在一些实施例中,目录服务器106是域名系统(DNS),其将字母数字式的域名转变为IP地址。目录服务器106将链接名称(例如,统一资源定位符(URL))解析为相关联的网络地址,然后向计算机104通知计算机104从中可以获取选定内容项的网络地址。当计算机104接收到网络地址时,计算机104于是向诸如流服务器计算机108之类的与目录服务器106提供的网络地址相关联的计算机发送针对选定内容项的请求。

在所示出的具体实施例中,流服务器计算机108是CDN 102的边缘服务器(或高速缓存服务器)。可以或多或少在战略上将边缘服务器计算机108放置在网络102内,以实现一个或多个性能目标,例如减少互连网络上的负载、释放容量、可缩放性以及降低传送成本。例如,边缘服务器108可以对源自另一服务器的内容进行高速缓存,使得高速缓存的内容在地理上或逻辑上相对于终端用户而言更接近的位置是可用的。对边缘服务器108的这种战略上的放置可以减少到达用户计算机104的内容下载时间。

边缘服务器计算机108被配置为向请求者提供所请求的内容。本文所使用的术语“请求者”可以包括可以潜在地请求内容的任何类型的实体,不论请求者是终端用户还是一些中间设备。因此,请求者可以是用户计算机104,但是也可以是向边缘服务器计算机108请求内容的另外的计算机,或路由器、网关或交换机(未示出)。应该理解,典型地,由计算机104产生的请求经由路由器与其它设备之间的多个“跳(hop)”路由至边缘服务器计算机108。因此,内容的请求者可以是与边缘服务器计算机108可通信地耦合的多种设备中的任何设备。

作为提供所请求内容的该功能的一部分,边缘服务器计算机108被配置为确定从边缘服务器计算机108的本地向请求者提供的所请求的内容是否可用。在一个实施例中,如果在本地高速缓存中存储了内容,并且没有过期(stale),则所请求的内容是可用的。在一个具体实现中,尽管也可以使用其它测量标准,但是过期是一种条件,其中内容比典型由“存活时间”指示的规定时间量要更早。边缘服务器计算机108配置有媒体流服务器软件,例如Flash Media ServerTM(FMS)或Windows MediaServerTM(WMS)。因此,如果发现在边缘服务器计算机108的本地存储了所请求的内容,并且高速缓存的内容没有过期,则媒体流软件可以使所请求内容成流来传送至请求者,在这种情况下是计算机104。

如果边缘服务器计算机108确定所请求的内容不可用(例如,不是本地存储的或者过期),则边缘服务器计算机108采取补救动作,以适应请求。如果内容是本地存储的,但是过期,则补救动作包括尝试使内容重新生效。如果内容不是本地存储的,或者重新生效失败(在内容过期的情况下),则边缘服务器计算机108尝试从诸如媒体访问服务器之类的另外的源获取所请求的内容。媒体访问服务器(MAS)是一种服务器计算机,能够提供所请求的内容。

边缘服务器108包括可扩展内容传送平台,例如基于事件的应用程序编程接口(API),其提供可扩展内容传送平台。可扩展内容传送平台提供了以要提供的潜在内容周围构建的应用程序和服务。丰富且形式良好的元数据和“元代码”可以以一致和编程的方式与内容和/或请求相关联。在一种实现中,例如,系统提供结构化“事件”模型、结构化对象模型、原始函数和语言结构来创建服务层,其中可以以灵活的方式来实现所述服务层,而无需改变核心代码。

在这种系统的一个具体实现中,在现有规则库或其它配置表周围构建API“包装类”,而不用大规模地替代现有技术。“包装类”允许将系统呈现为一致的、单一的接口,以通过逻辑上代表的方式达到现有边缘/高速缓存服务器的基本能力。

可扩展内容传送平台提供了降低的代码复杂性以及增强的可维护性。核心代码提供对现有和未来特征加以支持的一组基本操作服务,其中可以利用核心基本操作服务构建现有和未来的特征,而无需改变核心代码。在一个这样的实现中,例如,核心的基本操作服务包括对象高速缓存、指令解译、指令执行等。

在一个具体实现中,例如,将geo-IP服务实例化为平台内的原始函数。在该实现中,可以将输入IP地址用作进入与IP地址相关的各种地理代码或其它代码的数据库的密钥。数据库或查找表可以用作系统的“原始”函数,该系统的“原始”函数向较高级别的程序模块揭示了获得的代码,其中所述较高级别的程序模块在如下的其它函数中使用:类似地,限制或允许对内容的访问,为内容的交替变化服务等。

在实施例中,可扩展内容传送平台还提供灵活的实现(例如,增强的可扩展性、定制化以及应用程序集成的潜力),而没有改变核心代码。在该实施例中,开发者可以使用可扩展内容传送平台,以在平台上创建虚拟无限的潜在应用程序。

在所示实施例中,示出了两个可能的媒体访问服务器:内容分发服务器计算机110和内容源服务器112。内容源服务器112是内容提供商的服务器计算机。内容提供商可以是操作网络102的内容分发服务提供商的客户。源服务器112可以存在于内容提供商网络114。

在一些实施例中,内容源服务器112是支持虚拟主机的HTTP服务器。按照这种方式,内容服务器可以被配置为主持针对多种媒体和内容资源的多个域。在示例操作期间,可以向源服务器112发送作为HTTP GET请求一部分的HTTP HOST报头。HOST报头可以指定源服务器112主持(host)的特定域,其中特定域与所请求内容的主机相对应。

典型地,内容分发服务器计算机110是内容分发网络102内的服务器计算机。内容分发服务器110可以在逻辑上存在于内容源服务器112之间,在某种意义上,可以向内容分发服务器110传送内容,然后向边缘服务器计算机108传送。此外,内容分发服务器110可以采用内容高速缓存。

在一些实施例中,边缘服务器计算机108通过向目录服务器106或另外的设备请求网络地址,来定位媒体访问服务器,其中该另外的设备可操作来确定能够提供内容的媒体访问服务器的网络地址。边缘服务器计算机108然后向定位后的媒体访问服务器发送针对内容的请求。不管联系上哪个媒体访问服务器,媒体访问服务器都可以以若干可能的方式响应针对特定内容的请求。响应的方式可以取决于请求的类型以及与请求相关的内容。

例如,媒体访问服务器可以向边缘计算机服务器108提供对在边缘计算机服务器108的本地高速缓存的内容没有过期加以指示的信息。备选地,如果媒体访问服务器具有特定内容的没有过期的拷贝,则媒体访问服务器可以向边缘计算机服务器108发送特定内容。在一个实施例中,媒体访问服务器包括数据传输服务器软件,例如超文本传输协议(HTTP)服务器,或网页服务器。在这种情况下,边缘服务器计算机108利用媒体访问服务器所采用的数据传输协议来与媒体访问服务器交互。

此外,对于边缘服务器计算机108与媒体访问服务器计算机(例如,内容源服务器112或内容分发服务器110)之间的通信,两个服务器可以经由信道来通信。这些信道被示作边缘服务器计算机108与内容分发服务器110之间的信道116a以及边缘服务器计算机108与内容源服务器112之间的信道116b。根据本文所描述的各种实施例,信道116是数据传输,意味着信道116利用诸如HTTP之类的数据传输协议承载数据。

边缘服务器108被配置为在利用数据传输协议获取内容的同时,使内容成流传送至内容请求者。例如,边缘服务器计算机108可操作为在使所请求内容成流传送至请求者(例如,计算机104)的同时,经由数据传输协议信道116b从源服务器计算机112接收内容。边缘服务器计算机108执行的操作以及边缘服务器计算机108采用的模块可以同时执行成流和内容获取。

图2示出了流内容传送框架200,适于支持包括边缘服务器计算机202和媒体访问服务器计算机204的可扩展内容传送平台。边缘服务器计算机202配置有模块,该模块可操作来从MAS204获取内容,如果必要,同时使内容成流传送至请求内容的实体。在一些实施例中,同时从MAS204获取所请求的内容以及使内容成流传送至请求者。

在图2所示的实施例中,边缘服务器计算机202包括媒体流服务器206、媒体流代理器(broker)208、流高速缓存模块210和内容高速缓存212。在所示出的场景中,从请求者接收内容请求214。内容请求具有各种信息,包括但不限于所请求内容的识别符。请求214可以识别所请求内容的特定部分。

首先,由媒体流服务器接收请求214。媒体流服务器206可以是FlashMedia ServerTM(FMS)、Windows Media ServerTM(WMS)或其它流媒体服务。媒体流服务器206被配置为响应于内容请求,利用数据流协议(例如,实时消息协议(RTMP))与内容请求者通信。在接收到请求214时,媒体流服务器206向媒体流代理器208传送请求214,并且等待来自代理器208的响应。因此,媒体流代理器208维护媒体流服务器206的状态。

媒体流代理器208可操作来用作媒体流服务器206与流高速缓存模块210之间的中间单元。因此,媒体流代理器208便于媒体流服务器206与流高速缓存模块210之间的通信,从而支持内容的成流。在一个实施例中,媒体流代理器208是嵌入软件,利用媒体流服务器206的应用程序编程接口(API)与媒体流服务器206通信。媒体流代理器208可操作来处理来自媒体流服务器206的请求,维护媒体流服务器206的一些状态,以及向媒体流服务器通知内容何时在高速缓存212中。当媒体流代理器208接收到内容请求时,代理器208向流高速缓存模块210产生内容请求。

流高速缓存模块(SCM)210包括用于响应来自代理器208的内容请求的功能。在一个实施例中,如结合了图2来讨论的图3所示,SCM210包括流请求处理器302、高速缓存管理器304和数据传输接口306。流请求处理器302从代理器208接收请求,并且询问高速缓存管理器304所请求的内容是否在高速缓存212中。高速缓存管理器304确定所请求内容是否存在于高速缓存212中。

如果所请求内容在高速缓存212中,则SCM 210的高速缓存管理器304检查内容的年龄,以确定内容是否过期。一般地,每个内容项具有相关联的存活时间(TTL)值。高速缓存管理器304向请求处理器302通知对所请求内容的检查结果;即,内容是否存在,以及如果是,则内容是否过期。

如果内容存在于高速缓存212中,并且没有过期,则请求处理器302经由媒体流代理器向媒体流服务器206通知内容已经准备好成流,并且提供高速缓存212中可以读取内容的位置。如果内容不在高速缓存212中,或者内容过期,请求处理器302通知数据传输接口306。数据传输接口306被配置为经由诸如HTTP信道216之类的数据传输信道与MAS204通信。

数据传输接口306向MAS204发送对所请求内容加以识别的请求218。根据情形,请求218可以是若干不同类型的请求之一。例如,如果确定所请求的内容在高速缓存212中,但是内容过期,则数据传输接口306向MAS204发送对本地高速缓存中的所请求内容的当前状态是过期加以指示的HEAD请求(在HTTP的情况下)。如果所请求的内容不在高速缓存212中,则数据传输接口306向MAS 204发送GET请求(在HTTP的情况下),以从MAS 204获取内容的至少一部分。MAS 204包括数据传输服务器220,其接收和处理请求218。

数据传输服务器220被配置为经由数据传输信道216通过诸如HTTP之类的数据传输协议通信。首先,数据传输服务器220确定在请求218中识别的内容是否在MAS 204可访问的内容数据库222中。数据传输服务器220向内容数据库222询问所请求的内容。数据传输服务器220基于内容数据库222的响应产生响应224,该响应224的内容取决于所请求的内容是否在数据库222中。

响应224一般包括有效性指示器,其指示成功地或者没有成功地接收、理解和接受请求218。如果数据传输协议是HTTP,则响应指示器224是数字代码。如果所请求的内容没有在数据库222中,则代码指示无效,例如HTTP 404代码,指示在数据库222中没有发现内容。

如果发现所请求的内容(例如,文件226)在数据库222中,则响应224代码是有效指示器,例如HTTP 2XX,其中“X”可以根据HTTP定义而具有不同的值。如果对MAS 204的请求218是HEAD请求,且在数据库222中发现了内容,则典型地,响应224包括HTTP 200代码。针对HEAD请求的响应224还包括对高速缓存212中的内容的TTL是否重新生效加以指示的信息。在GET请求的情况下,且在数据库222中发现了所请求的内容,例如文件226,则响应224包括HTTP代码以及内容226的一部分。

流高速缓存模块210的数据传输接口306接收响应224,并且确定要采取的适当动作。一般而言,数据传输接口306向流请求处理器302通知MAS 204是否发现了内容。如果MAS 204没有发现内容,以及假设高速缓存管理器304没有在高速缓存212发送内容,则流请求处理器302经由媒体流代理器208向媒体流服务器206通知没有发现所请求的内容。

如果响应224是对HEAD请求的有效响应,则响应224将指示高速缓存212中过期内容的TTL已经重新生效。如果TTL重新生效,则高速缓存管理器304更新有效内容的TTL,并且向流请求处理器302通知高速缓存212中的内容可用,并且没有过期。如果响应224指示高速缓存212中的过期内容没有重新生效,则高速缓存管理器304删除过期内容,并且指示内容不在高速缓存212中。流请求处理器302然后从数据传输接口306请求内容。

GET请求可以指定要获取内容的一部分,以及如果GET请求有效,则响应224一般将包括所识别内容的指定部分。请求218可以是部分文件请求或范围请求,该范围请求指定了数据传输服务器220发送的文件226中的数据范围。可以通过开始位置和数量(例如字节计数)来指定范围。范围请求对于一些类型的内容以及响应一些请求或其它情形尤其有用。

例如,如果所请求的文件226是FlashTM文件,则最初的一个或多个GET请求将指定文件226的一部分,其中媒体流服务器206需要所述指定文件226的一部分,来立即开始使文件226成流传送至请求者。媒体流服务器206不需要整个文件226来开始使文件226成流传送至请求者。在一些情况下,内容的特定部分包括关于以下内容的元数据:使能媒体流服务器206必须启动成流。元数据可以包括文件大小、文件格式、帧计数、帧大小、文件类型或其它信息。

已经发现,对于诸如文件226之类的FlashTM文件而言,因为头部228和尾部230包括描述文件226的元数据,所以首先需要文件226的头部228和文件226的尾部来启动文件226成流。可以稍后获取文件226的剩余部分232。在一个实施例中,头部228是前2兆字节(MB),以及尾部230是文件226的最后1MB,然而这些具体的字节范围可以根据各种因素而改变。

在FlashTM文件226的情况下,在数据传输接口306接收到文件226的头部228和尾部230之后,数据传输接口306将这些部分存储在高速缓存212中,以及向流请求处理器302通知高速缓存212中的所请求内容的初始部分是可用的。然后,流请求处理器302向媒体流服务器206通知高速缓存212中的内容的初始部分的位置。然后,媒体流服务器206开始从高速缓存212读取内容,并且向请求者发送流内容234。

当媒体流服务器206使内容成流传送至请求者时,SCM 210继续从MAS 204获取文件226的内容,直到获取了剩余部分232为止。SCM 210的数据传输接口306向MAS 204的数据传输服务器220发送一个或多个附加的GET请求,所述一个或多个附加的GET请求指定了要获取的内容的范围。在一些实施例中,在获取了整个文件226之前,数据传输接口306以诸如2MB或5MB之类的设定字节大小请求文件226的顺序部分。可以根据各种参数调节每个请求所请求的数量,所述各种参数包括实时参数,例如往返于MAS 204的通信延迟。

在使所请求内容成流期间,请求者可以发出特定位置请求,请求使数据从内容中的特定指定位置成流。指定位置已经或还没有存储在内容高速缓存212中。这种特定位置请求由媒体流服务器206接收,并被传送至媒体流代理器208。媒体流代理器208向SCM 210的请求处理器302发送请求。请求处理器302请求高速缓存管理器304提供来自指定位置的数据。高速缓存管理器304尝试从高速缓存212获取指定位置处的数据。

如果指定位置没有在高速缓存212中,则高速缓存管理器304通知请求处理器302。然后,请求处理器302请求数据传输接口306获取指定位置处的内容。作为响应,数据传输接口306发送对起始于指定位置的数据范围加以指定的GET请求,而不管数据传输接口306是否处于下载文件226中以及数据传输接口306处于下载文件226中的何位置。

例如,如果请求者所指定的位置是文件226的结尾,并且数据传输接口306正在对文件226进行顺序下载,并处于文件226的开始,则数据传输接口306中断顺序下载,并且发送针对起始于指定位置的数据的范围请求。在从指定位置获取内容之后,数据传输接口306从接收特定位置请求之前停止的位置恢复顺序下载。

可以根据具体实现以任何方式结合或重组边缘服务器202、MAS204和图3的流高速缓存模块的部件。例如,数据存储单元(例如,内容高速缓存212和内容数据库222)可以与其相关联的服务器分离。数据存储单元可以是任何类型的存储器或存储单元,并且可以采用任何类型的内容存储方法。诸如内容高速缓存212和数据库222之类的数据存储单元可以包括数据库服务器软件,其使能与数据存储单元的交互。

图4是状态图400,示出了诸如流高速缓存模块210(图2)之类的流高速缓存模块或类似部件可以进入的状态和使得进入或离开这些状态的条件。首先,在该示例场景中,当SCM 210接收到对指定内容的请求时,SCM 210可以进入状态A 402。应该理解,首先,SCM 210可以进入另外的状态,但是为了说明的目的,此处假定,请求中指定的内容不在本地高速缓存中。在状态A402,SCM确定指定内容不在本地高速缓存中。在确定了指定内容不在本地高速缓存时,SCM进入状态B 404。

在进入状态B 404时,SCM向媒体访问服务器输出一个或多个范围请求,并且开始从媒体访问服务器(MAS)接收内容和/或元数据。假定在该情况下,MAS具有或者可以获取所请求文件的非过期拷贝。

对于SCM 210产生的范围请求,一个或多个范围请求中的每个范围请求指定要获取的数据的起始位置以及数据范围。范围请求是诸如HTTP之类的数据传输协议所支持的请求类型,并且是MAS所辨认的,其中MAS包括数据传输服务器,例如HTTP或网页服务器。因此,MAS能够读取范围请求,并且以在范围请求中识别的请求内容的一部分作为响应。

初始范围请求可以指定文件中的位置,其中该文件包括关于文件的元数据,该元数据使能流媒体服务器快速启动使所请求的内容成流。该元数据可以包括控制数据或定义,其中流媒体服务器可以将所述控制数据或定义用于使内容成流。

例如,在FlashTM文件的情况下,初始范围请求可以指定FlashTM文件的头部,该头部给出了关于文件布局的信息,例如整个文件的大小、帧大小、帧的总数目等。在FlashTM文件的情况下,因为尾部包括流媒体服务器用于启动使文件的内容成流的信息,所以典型地,初始范围请求或者第一范围请求之一还指定了文件的尾部。例如,在一些实施例中,SCM产生针对指定FlashTM文件的前2兆字节和FlashTM文件的最后1MB的范围请求。

在状态B 404中,SCM继续请求并接收内容数据,直到获取了整个文件为止。可以按照从内容文件的开始到结尾的顺序获取内容,或者可以按照其它顺序获取文件。响应于用户浏览内容移到文件中的另外指定位置的特定位置请求,可能出现非顺序的获取。例如,用户可以通过用户的流媒体播放器前进(或“倒退”)到流内容文件中的特定位置。

当用户移到流文件中的特定位置时,向SCM发送请求,以指定要移到的文件中的特定位置。作为响应,在状态B404中,SCM产生范围请求,以指定文件中所请求的位置。SCM还可以(例如,经由流媒体代理器208)向流媒体服务器通知在本地高速缓存中何时存储了内容中的一个部分或多个部分,使得流媒体服务器可以开始使这些部分成流。

在已经完整地下载了所请求的内容文件之后,SCM可以产生对下载了文件加以指示的输出。然后,SCM进入状态C 406。在状态C 406中,SCM在内容变得过期之前一直等待。在状态C406中,SCM检查内容文件的年龄,并且将年龄与可以来自MAS的消息中提供的指定“存活时间”(TTL)值相比较。当内容文件变得过期时,SCM进入状态D 408.

在状态D 408中,SCM向MAS发送请求,以使内容文件重新生效。MAS可以发送指示重新生效成功的消息和新TTL值。如果是,则SCM返回状态C 406,在状态C 406中,SCM再次等待,直到TTL期满为止。另一方面,当在状态D 408时,如果MAS没有使内容重新生效,或者产生了指示重新生效失败的消息,则SCM返回状态A402。在从状态D进入状态A之前,SCM删除过期的内容。

此外,对于内容的重新生效,一个实施例包括对HTTP报头的使用。在该实施例中,SCM发送HEAD请求,并且期望以下报头之一:高速缓存控制或期满。这些报头提供TTL信息。在完全下载了给定内容文件之后,响应于针对文件的每个输入请求,SCM检查给定内容文件的TTL。如果内容文件的年龄超过TTL,则SCM将发送另外的HEAD请求,以使内容重新生效。响应将取决于媒体访问服务器。例如,Apache HTTP服务器以“200”响应作为响应。在接收到“200”响应时,SCM检查修改时间和文件大小,以确认高速缓存的内容仍然有效。作为另外的示例,如果内容是修改的且过期,则微软的IISTM HTTP服务器以“200”来响应HEAD请求,或者如果内容仍然有效(没有修改),则以“304”作为响应。

图5-7是示出了用于处理请求来传送内容的过程的流程图。如下所描述的,在过程中支持可扩展内容传送平台。一般地,过程包括确定本地高速缓存中的内容是否可用于成流,以及如果是,则使所请求的内容成流而从本地高速缓存传送至请求者;如果否,则使内容重新生效和/或从媒体访问服务器获取内容,并同时使其成流传送至请求者。不需要按照所示出的特定顺序执行操作。可以通过诸如以下模块中的一个或多个功能模块来执行操作:媒体流服务器206、流媒体代理器208和流高速缓存模块210(图2),或其它模块。

现在具体参考图5,在内容请求处理操作500中,首先,在接收操作502中接收针对指定内容的请求。在请求中识别所请求的内容。询问操作504确定所请求内容是否存在于本地高速缓存中。如果确定所请求内容存在于本地高速缓存中,则另一询问操作506确定本地高速缓存中的内容是否过期。在一个实施例中,询问操作506将本地高速缓存的内容的年龄与关联于内容的TTL值相比较,以及如果年龄大于TTL值,则内容过期;否则,内容不过期。

如果确定本地高速缓存的内容没有过期,则操作506通过分支“NO”到成流操作508。在成流操作508中,使本地高速缓存的内容成流传送至请求者。另一方面,如果确定本地高速缓存的内容过期,则操作506通过分支“YES”到发送操作510。

在发送操作510中,向媒体访问服务器(MAS)发送HEAD请求,以使本地高速缓存的内容重新生效。在另一询问操作512中,检查来自MAS的响应,以确定本地高速缓存的内容是否重新生效。如果内容重新生效,则操作512通过分支“YES”到更新操作514。更新操作514更新与本地高速缓存的内容相关联的TTL值,使得本地高速缓存的内容不再过期。然后,在成流操作508中,使本地高速缓存的内容成流。

如果来自MAS的响应指示本地高速缓存的内容没有重新生效,则返回询问操作512,操作512通过分支“NO”至删除操作516。删除操作516删除本地高速缓存的内容。在删除操作516之后,如果在询问操作504中确定所请求的内容不在本地高速缓存中,则操作504分支到获取操作518。在获取操作518中,从MAS获取所请求内容的同时,使内容成流传送至请求者。

在一个实施例中,获取操作518利用数据传输协议(例如,HTTP)获取内容,同时利用流媒体协议传送内容。在图6-7以及以下描述中示出了获取操作518的示例。

图6是示出了同时进行的获取和成流操作518的流程图。典型地,通过诸如SCM210(图2)之类的流高速缓存模块或类似部件执行图6-7所示的操作。参考图6-7描述的说明和场景假定,媒体访问服务器(MAS)具有所请求内容的非过期拷贝。

在HTTP的情况下,在发送操作602中,向MAS发送GET请求。最开始的一个或多个GET请求对内容中包括描述了内容的版面设计的元数据的部分加以请求,使得可以启动内容的成流。在一个实施例中,例如,当在FlashTM媒体中获取内容时,最开始的一个或两个GET请求是针对内容前部和内容尾部的范围请求,其包括用于启动成流的元数据。

存储操作604将内容中所获取的部分存储在高速缓存中。通知操作606向流媒体服务器通知所请求内容的初始部分在高速缓存中,并且准备好用于成流。作为响应,流媒体服务器启动使所请求的内容成流。同时,在获取操作608中,SCM将继续获取所请求内容的部分内容。

获取操作608包括向MAS发送针对所请求内容的数据范围的一个或多个附加GET请求。在高速缓存中存储从MAS获取的内容数据,其中流媒体服务器可以访问内容,以继续成流。在一个实施例中,获取操作608顺序地获取内容的部分。内容的部分的大小是范围请求中指定的大小。根据各种设计或实时参数,部分的大小可以是设定的或者调节的。在一些实施例中,将部分的大小设置为5MB,但是根据实现,其它大小也是可能及可以的。在获取了整个内容文件并将其存储在了高速缓存之前,获取步骤608继续。

在获取操作608期间,在接收操作610中,可以接收特定位置请求。当接收到特定位置请求时,内容获取的通常次序(例如,顺序地)被暂时打断,以从特定请求中指定的特定位置获取内容数据。图7示出了处理特定位置请求的过程的具体实施例,以下将对其进行进一步的描述。

在处理特定位置请求之后,获取过程608恢复。获取操作608可以继续顺序地获取从特定位置请求中指定的位置之后的数据,或者获取操作608可以从接收到特定位置请求时所处的位置恢复顺序地获取。

图7是示出了特定位置请求处理操作700的流程图,特定位置请求处理操作700可以用于当使内容成流传送至请求者时,对特定位置请求作出响应。如所讨论的,特定位置请求是提供当前成流的内容中的处于特定位置的数据的请求。流媒体协议适于迅速地移动到内容文件中的所请求位置。

然而,在诸如通常使用HTTP的逐步(progressive)下载方案之类的逐步下载协议中,在下载内容的同时移至内容中的特定地方通常引起延迟,原因在于逐步下载需要首先下载在期望位置之前的所有数据。利用图6-7所示的方案使得内容的成流能够经由数据传输信道而通过逐步下载来传送,从而减少或者去除了与移动至内容中的特定位置相关联的延迟。

首先,在移动操作700中,询问操作702确定在本地高速缓存中是否存储了在特定位置请求中指定的特定位置处的数据。询问操作702可以利用容限,借以检查在本地高速缓存中存储了在特定位置之后的至少特定最小量的数据。例如,询问操作702可以检查在本地高速缓存中存储了在指定位置之后的至少1MB(或一些其它数量的)数据。移动操作700可以通过利用容限来避免延迟,从而保证指定位置处的至少最小量的数据可用于成流。

如果确定在本地高速缓存中存储了至少最小量的数据,则询问操作702通过分支“YES”至通知操作704。通知操作704向媒体流服务器通知用于传送的所请求数据在高速缓存中的位置。在通知操作704之后,操作700返回获取操作608(图6)。如上所述,获取操作608可以继续获取内容中特定位置请求所指定的位置之后的部分,或者从接收到特定位置请求之前的位置恢复获取。

再次参考询问操作702,如果确定在本地高速缓存中没有存储最小量的数据,则询问操作702通过分支“NO”至发送操作706。发送操作706产生GET请求,以指定在所指定位置之后的数据的范围。在范围请求中指定的数据量可以是操作602中(图6)产生的GET请求中获取的字节计数,或者是一些其它字节计数。存储操作708接收所请求的数据,并且将数据存储在本地高速缓存中。在存储操作708之后,移动操作700通过分支至通知操作704,在通知操作704中,向媒体流服务器通知所请求数据在高速缓存中的位置。

图8是具有内容传送网络805的另一示例网络环境800的框图,所述内容传送网络805包括源服务器810、高速缓存服务器820-1、高速缓存服务器820-2和高速缓存服务器820-3(本文统称为高速缓存服务器820)。每个高速缓存服务器820具有相应的高速缓存存储器822-1、822-2和822-3,以及相应的存储器系统824-1、824-2和824-3(例如,基于硬盘或其它永久性存储器)。高速缓存服务器820-1服务于请求,并向与因特网服务提供商8(ISP1)相关联的终端用户832、834和836(例如,客户端计算机)提供内容。高速缓存服务器820-2服务于请求,并向与ISP2相关联的终端用户842、844和846提供内容。高速缓存服务器820-3服务于请求,并向与ISP3相关联的终端用户852、854和856提供内容。为简单起见,图8示出了专用于每个ISP的高速缓存服务器。多种其它实现也是可能的。例如,在多种实施例中,一个或多个ISP不具有专用的高速缓存服务器,一个或多个ISP具有多个专用的高速缓存服务器,或者高速缓存服务器甚至与ISP根本不相关。在一个实施例中,例如,一个或多个高速缓存服务器位于远程(例如,在ISP基础实施内部或者在终端用户的站点处,例如在局域网(LAN)上),并且与远程源服务器(例如,图8所示的源服务器810)交互。

图8中的网络环境800描绘了对内容传送网络805的高级实现,其适于实现且便利本文所描述的各种实施例的功能。内容传送网络805仅代表了内容传送网络的一个示例实现,因此,应该注意,本文所描述的实施例可类似地用于在现有技术一般实践的任何内容传送网络配置中实现。在Paul E.Stolorz等人2002年9月30日提交的发明名称为“Configurable adaptive global traffic control and management”的美国公开专利申请no.US2003/0065762A1中描述了一个示例内容传送网络,在此并入其全部以供参考。

在通常操作期间,如线860所示,源服务器810向高速缓存服务器820分发各种内容(例如,取决于地理、人口等)。例如,假定终端用户836请求在源服务器810上存储的一些内容(例如,音乐、视频、软件等)。在该实施例中,源服务器810被配置为使用内容传送网络805来服务其包括的内容,以及任选地,源服务器810已经向高速缓存服务器820-1分发了所请求的内容。使用多种已知方法使终端用户836重定向,以替换地从高速缓存服务器820-1请求内容。如图8的示例实施例所示,高速缓存服务器820-1被配置为/设置为向ISP1中的终端用户传送内容。可以利用多种策略(例如,负载平衡、位置、网络拓扑、网路性能等)从高速缓存服务器群中选择高速缓存服务器820-1。然后,如线880所示,终端用户836从高速缓存服务器820-1请求内容。然后,高速缓存服务器820-1从高速缓存822-1向终端用户836服务内容(线890),或者如果内容不在高速缓存中,则高速缓存服务器820-1从源服务器810获取内容。

尽管图8示出了源服务器810是内容传送网络805的一部分,但是源服务器810也可以位于内容传送网络的远程(例如,在内容提供商的站点处)。图9示出了这样的实施例,其中,内容传送网络905与位于多个内容提供商的站点908处的一个或多个源服务器910交互。在该实施例中,内容传输网络905包括多个高速缓存服务器920。高速缓存服务器920服务于请求,并且向终端用户932、942和952(例如,客户端计算机)提供内容。如以上参考图8所描述的,源服务器910向高速缓存服务器920分发各种内容。

高速缓存服务器820(或920)包括可扩展内容传送平台,例如提供了可扩展内容传送平台的基于事件的应用程序编程接口(API)。可扩展内容传送平台提供了在要服务的潜在内容周围构建的应用程序和服务。丰富且形式良好的元数据和“元代码”可以以一致和编程的方式与内容和/或请求相关联。在一种实现中,例如,系统提供结构化“事件”模型、结构化对象模型、原始函数和语言结构来创建服务层,其中可以以灵活的方式来实现所述服务层,而无需改变核心代码。

在这种系统的一个具体实现中,在现有规则库或其它配置表周围构建API“包装类”,而不用大规模地替代现有技术。“包装类”允许将系统呈现为一致的、单一的接口,以通过逻辑上代表的方式达到现有高速缓存服务器的基本能力。

可扩展内容传送平台提供了降低的代码复杂性以及增强的可维护性。核心代码提供对现有和未来特征加以支持的一组基本操作服务,其中可以利用核心的基本操作服务构建现有和未来的特征,而无需改变核心代码。在一个这样的实现中,例如,核心的基本操作服务包括对象高速缓存、指令解译、指令执行等。

在一个具体实现中,例如,将geo-IP服务实例化为平台内的原始函数。在该实现中,可以将输入IP地址用作进入与该IP地址相关的各种地理代码或其它代码的数据库的密钥。数据库或查找表可以用作系统的“原始”函数,该系统的“原始”函数向较高级别的程序模块揭示获得的代码,其中所述较高级别的程序模块在如下的其它函数中使用:类似地,限制或允许对内容的访问,为内容的交替变化服务等。

在实施例中,可扩展内容传送平台还提供灵活的实现(例如,增强的可扩展性、定制化以及应用程序集成的潜力),而没有改变核心代码。在该实施例中,开发者可以使用这种可扩展内容传送平台,以在平台上创建虚拟无限的潜在应用程序。

图10示出了要并入到高速缓存服务器(例如,图8所示的高速缓存服务器120-1)中的可扩展编程框架1000的实施例。框架1000包括核心引擎1002,配置文件1004和模块1006、1008和1010。核心引擎1002配置有核心代码,该核心代码提供一组基本操作服务,该一组基本操作服务支持现有和未来的特征,其中可以利用核心的基本操作服务构建所述现有和未来的特征,而无需改变核心代码。在实施例中,基本操作服务包括核心引擎1002可以执行的基础功能或动作。可扩展编程框架1000的核心引擎1002允许脚本或模块与各种特征或服务相关联,而没有使核心引擎1002变得复杂来提供各种特征和服务。在图10中,例如,模块1006、1008和1010提供各种定制化的特征或服务,而无需增加核心引擎1002的复杂度。

在示例实施例中,核心引擎1002的基本操作服务包括结构化事件模型、结构化对象模型、原始功能或动作、以及编程语法,其中可以在4离散事件处且基于各种对象来执行所述原始功能或动作,所述编程语法允许在核心引擎1002周围构建应用程序和/或服务。结构化事件模型提供在内容传送网络的处理流水线上的多个离散事件,其中在该多个离散事件处可以采取各种动作。结构化对象模型被实例化为一系列对象(例如,请求、资源、响应和其它对象),对所述一系列对象进行定义,使得可以获得和/或操纵各种一致性的性质和属性。可以在离散事件处且基于各种对象来执行一组原始功能或动作。这些动作的示例包括如下操作:例如,字符串解析和操纵,HTTP消息构建和分解、资源操纵等。

模块1006、1008和1010利用所定义的编程语法来提供脚本、指令或其它代码。在实施例中,例如,模块1006、1008、1010包括特定实例,其中开发所述特定实例来执行在核心引擎1002中实现的功能。模块1006、1008、1010可以由内容传送网络的所有者或操作者控制,或者可以被文档化,使得多个不同的人可以配置系统。可以提供可扩展编程框架1000使用的模块或脚本,以允许客户、中间商、内容伙伴或其它个体定制内容传送网络的特征或服务。

在示例实现中,提供对以下条件中的一个或多个条件进行操作的特征:(1)性质方面的基础(property-wide basis)(例如,可以相同方式影响所有的请求/内容);(2)资源或资源群(例如,操作可以是基于以下条件的:所请求资源是否与一组条件相匹配);(3)请求元数据(例如,请求包括可以用于确定要执行的一个或多个操作的信息);(4)响应元数据(例如,在获取所请求资源的过程中从源或中间内容传送网络节点传送的信息);以及(5)以上条件的结合以及在高速缓存服务器内部或从外部应用程序/服务实例化的元数据。

核心引擎1002解译模块1006、1008和1010中的脚本、指令或其它指令,并且执行所述脚本、指令或其它指令,以提供内容传送网络内的定制化的特征或服务。模块1006、1008和1010减弱了对核心引擎内部的详细配置文件的需求,以提供直接来自于核心引擎的类似特征和服务。模块1006、1008和1010提供可扩展平台,以写入用于内容传送网络内的特征和服务的定制逻辑。在一个具体实施例中,模块1006、1008和1010内的脚本经由内容传送网络与可用的特定内容相关联。然后,每次用户尝试访问该特定内容时,执行脚本。

在实施例中,模块1006、1008和1010为不同客户提供认证服务。在一个实施例中,模块1006、1008和1010提供了指令,该指令(例如,通过地理区域、许可等)阻止和/或允许对特定内容集合的访问。例如,第一模块1006提供指令,该指令阻止了对特定的一组区域中的用户的访问,同时第二模块1008提供指令,而该指令则阻止了针对不同的一组内容而访问不同的一组区域中的用户。根据配置文件1004的特定组合;存在于核心模块1002中的规则、元数据或其它信息;和/或针对内容的请求(参见,例如图1所示的请求180)中的元数据,针对不同的用户和/或请求而在不同时间来调用这些模块。在该示例中,对于请求某些简档(例如,目录、名称、文件类型等)内容的所有用户,执行第一模块1006。然而,第二模块1008适于针对不同组的内容(和/或针对具有不同性质或简档的内容)的请求。例如,在内容传送网络(例如,图1所示的内容传送网络105)内创建和/或存储模块1006、1008和1010。然后,基于特定的规则和/或事件将模块用于事务和/或针对内容的请求。

在实施例中,一组表被用于允许对规则、模块、程序、插件等进行定义。例如,可以将模块存储为具有可选输入自变量和输出返回值的命名进程。还可以利用规则引擎或显式调用,以通过请求/响应报头或诸如查询字符串元素之类的HTTP结构来命名模块以用于调用。在实施例中,对命名模块和规则库或脚本的去耦合允许在内容传送网络中对单个模块进行创作和存储,但是允许利用各种标准/规则进行调用(例如,通过触发不同行为的可选自变量)。

图11是结构化内容传送事件模型1100的一种可能实现的框图。在图11的实施例中,事件模型1100识别一个或多个内容传送过程内的离散事件,其中在该离散事件处,可以经由可扩展内容传送平台内的定制化模块或脚本采取各种动作。然而,事件模型1100只是可以用于识别内容传送网络内的离散事件的事件模型的一个示例。识别某些事件的多种不同方法是可能的,其中在某些事件处可以在处理流水线的各个点调用一个或多个模块。在另一示例实现中,例如,一组规则被用于检测多个可能事件中的离散事件,其中在该离散事件处,可以经由可扩展内容传送平台内的定制化模块或脚本采取各种动作。

在图11所示的事件模型1100中,当在操作1102中建立了与用户的连接时,发起内容传送过程。在操作1104中,通过连接来接收针对内容资源的请求。如果在高速缓存服务器中发现了内容资源,则在操作1106中,识别“高速缓存命中”。备选地,如果在高速缓存服务器中没有发现内容资源,则在操作1108中,识别“高速缓存未命中”。

在高速缓存命中指示了在高速缓存中发现了所请求的内容资源的情况下,事件模型接下来继续至操作1110,在操作1110中,准备好针对请求的响应,以向用户发送。

然而,在高速缓存未命中指示了在高速缓存中没有发现所请求的内容资源的情况下,事件模型继续至操作1112,在操作1112中,准备高速缓存填充请求,以向另外的源(例如,图1所示的源服务器110或图1A所示的远程内容提供商源服务器110A)请求内容资源。在操作1114中,事件模型还建立与备选内容源的连接,并且确定连接是成功还是失败。如果在操作1116中,确定了至备选内容源的连接已经成功,则事件模型1100继续至操作1118和操作1120,在操作1118中,准备高速缓存填充请求,在操作1120中,向备选内容源发送高速缓存填充请求。当在操作1122中完成了高速缓存填充请求时,则事件模型1100继续至操作1110,以指示准备好了要发送至用户的针对用户基于内容的请求的响应。

一旦在(不论是来自操作1106中的高速缓存命中,还是来自操作1112至1122中的高速缓存填充的)操作1110中准备好了要发送至用户的响应,则事件模型1100继续至操作1124,在操作1124中,发起服务于到用户的所请求内容的响应。如果成功地完成了服务于到用户的所请求内容的响应,则在操作1126中,事件模型1100指示成功。然而,如果响应失败,则在操作1128中,事件模型指示失败。

然而,如果在操作1130中,确定连接备选内容源来填充高速缓存失败,则事件模型1100继续至操作1128,以指示服务内容失败。

通过事件模型1100识别了离散事件,通过该离散事件可以实现定制化的模块或脚本,以提供定制特征或服务。在内容传送网络服务于HTTP/S请求的一个实施例中,例如,过程中的事件包括接收请求(例如,由内容传送网络接收的HTTP请求)、发现资源(例如,确定资源是否存在于高速缓存服务器的高速缓存中,或者咨询服务,以确定是否可以在内容传送网络中发现资源)、高速缓存命中(例如,指示在高速缓存中发现了资源)、高速缓存未命中(例如,指示在高速缓存中没有发现资源)、高速缓存填充(例如,指示已经从内容传送网络内的源头获取了资源)、认证请求(例如,指示对请求进行认证)、构建响应(例如,通过内容传送网络高速缓存服务器构建的响应,其包括相关联的报头、响应主体等)和发出响应(例如,指示向请求用户发送响应)。这些事件仅是可以在内容传送网络的高速缓存服务器处对内容传送请求进行处理的过程中识别的离散事件的示例。也可以识别其它离散事件。

在实施例中,高速缓存服务器的可扩展编程框架提供了可以在处理请求期间操作的若干类型的对象,例如,以上参考图11描述的对象。这些类型的对象的示例包括连接(例如,TCP层信息、客户端性质等)、请求(例如,请求报头和请求主体)、资源(例如,资源主体和资源元数据,例如,对象的属性和高速缓存控制的设置)、响应(例如,响应报头和响应主体),以及服务器(例如,与内容传送网络服务器、节点或集群相关的属性)。这些对象类型仅是可以在处理针对内容的请求期间操作的对象类型的示例。还可以操作其它对象类型。

对象及其属性可以被实例化,并且在事件流水线中的适当点可用。在实施例中,可通过函数调用属性(例如,地理代码、服务器区域等)。在实施例中,例如,调用是用于开发定制化特定或服务的编程语法的事件或组件。

在处理针对内容的请求期间,还可以执行各种动作。在实施例中,例如,这些动作包括操纵以下方面:事务,由事务导致的附加事务等。要执行的动作的示例包括:创建响应的定制报头和/或主体(例如,对内容添加水印、安全检查求和的应用、文件成块/未成块、使来自单个响应的字节的连续流成流,等等);创建新请求(例如,基于认证请求、对交替或相关资源的请求等);删除否则要呈现的响应报头,设置响应报头的新值;以及向位置(例如任意位置)发送构建请求,等待响应以及根据响应的一个或多个属性进行操作。其它动作可以被看作是编程语法语言自身的函数或原义,例如对于多数编程语言而言都是公共的操作(例如,字符串函数和数学函数)。此外,其它动作可以是用于获取内容传送网络已知的元数据的特定操作。在一个实施例中,例如,对ClientGeography(“国家”)的操作返回了请求客户端的国家代码(例如,通过查找客户端或连接对象的IP地址,或者通过从对象获取代码并且传给诸如GetGeography(<level>,<address>)函数之类的更普通的函数)。类似地,在实施例中,GetServerIP()函数或GetHeader(“name”)操作被用于获取元数据。

在实施例中,脚本或其它定制化的代码被用于利用内容传送网络的高速缓存服务器提供特征或服务。在一个实现中,例如,脚本与内容传送网络上的可用资源相关联,并且被预先配置(例如,被存储在表中)、附着于资源(例如,附着于响应的报头或主体)或与资源相关联。用于将脚本或模块与请求相关联的多种可能机制是可行的。在实现中,例如,将脚本(及其相关联的函数、自变量等)作为系统内的命名资源进行存储。然后,通过以下方式执行命名资源:(1)通过核心引擎内的注册事件,(2)通过匹配规则集(例如,如果接收到针对特定内容集的请求,则执行模块“X”),(3)通过请求的内容发布者与模块的显式关联,其中该显示关联可以被实现为查询字符串参数、定制报头和/或主体,或者(4)通过来自另外的脚本或模块的调用。

图12是可以实现和执行本发明的实施例的计算机系统1200的示意图。例如,一个或多个计算设备1200可以用于支持可扩展内容传送平台(例如,针对内容分发网络内的流内容)。计算机系统1200总体上例示了任意多个计算设备,包括通用计算机(例如,桌上型、膝上型或服务器计算机)或专用计算机(例如,嵌入式系统)。

根据本示例,计算机系统1200包括总线1201(即,互连)、至少一个处理器1202、至少一个通信端口1203、主存储器1204、可拆除式存储介质1205、只读存储器1206、海量存储单元1207。处理器1202可以是任何已知存储器,例如但不限于,IntelItanium或者Itanium 2处理器、AMDOpteron或者Athlon MP处理器、或者处理器的Motorola线。通信端口1203可以是以下端口中的任何一种:基于调制解调器的拨号连接中使用的RS-232端口、10/100以太网端口、使用铜和光纤的吉比特端口(Gigabit port)、或者USB端口。可以根据如下网络选择通信端口1203:例如,局域网(LAN)、广域网(WAN)或计算机系统1200连接的任何网络。计算机系统1200可以通过输入/输出(I/O)端口1209与外围设备(例如,显示器屏幕1230、输入设备1216)通信。

主存储器1204可以是随机访问存储器(RAM)或现有技术公知的任何其它动态存储设备。只读存储器1206可以是任何静态存储设备,例如用于存储静态信息(例如用于处理器1202的指令)的可编程只读存储器(PROM)芯片。海量存储单元1207可以用于存储信息和指令。例如,可以使用诸如Adaptec簇的小型计算机串行接口(SCSI)驱动器之类的硬盘、光盘、诸如独立冗余磁盘阵列(例如,Adaptec簇的RAID)之类的磁盘阵列(RAID)、或任何其它海量存储设备。

总线1201将处理器1202与其它存储器、存储单元和通信部件通信地耦合。根据所使用的存储设备,总线1201可以是PCI/PCI-X,SCSI,或基于通用串行总线(USB)的系统总线(或其它)。可拆除式存储介质1205可以是以下任何一种存储介质:外部硬盘驱动器、软盘驱动器、IOMEGAZip驱动器、紧凑型光盘-只读存储器(CD-ROM)、可重写的紧凑型光盘(CD-RW)、数字视频磁盘-只读存储器(DVD-ROM)等。

可以将本文的实施例作为计算机程序产品来提供,所述计算机程序产品可以包括具有在其上存储的指令的机器可读介质,可以被用于对计算机(或其它电子设备)编程来执行过程。机器可读介质可以包括,但不限于软磁盘、光盘、CD-ROM、磁光盘、ROM、RAM、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁或光卡、快闪存储器、或适于存储电子指令的其它类型的介质/机器可读介质。此外,还可以将本文的实施例作为计算机程序产品来下载,其中,还可以经由通信链路(例如,调制解调器或网络连接)以在载波或其它传播介质中包括的数据信号的方式从远程计算机向请求计算机传输程序。

如所示,利用支持本文所讨论的函数的可扩展内容传送应用程序1250-1来编码主存储器1204。可扩展内容传送应用程序1250-1(和/或本文所讨论的其它资源)可以包括软件代码,例如支持根据本文所描述的不同实施例的处理函数的数据和/或逻辑指令(例如,在存储器或诸如磁盘之类的其它计算机可读介质上存储的代码)。

在一个实施例的操作期间,处理器1202通过对总线1201的使用来访问主存储器1204,以发动、运行、执行、解译或履行可扩展内容传送应用程序1250-1的逻辑指令。可扩展内容传送应用程序1250-1的执行产生了可扩展内容传送过程1250-2的处理函数。换句话说,可扩展内容传送过程1250-2代表了可扩展内容传送应用程序1250-1中的在计算机系统1200的处理器1202的内部或在其上执行的一个或多个部分。

应该注意,除了执行本文所讨论的操作的可扩展内容传送过程1250-2之外,本文的其它实施例包括可扩展内容传送应用程序1250-1自身(即,没有执行或没有履行的逻辑指令和/或数据)。可扩展内容传送应用程序1250-1可以被存储在计算机可读介质(例如,储存库)上,例如软盘、硬盘或光介质。根据其它实施例,可扩展内容传送应用程序1250-1还可以被存储在存储器类型的系统中,例如,固件、只读存储器(ROM)或在该示例中,主存储器1204内(例如,随机访问存储器或RAM内)的可执行代码。例如,可扩展内容传送应用程序1250-1还可以被存储在可拆除式存储介质1205、只读存储器1206、和/或海量存储设备1207中。

以上参考图1-11讨论了计算机系统1200支持的示例函数,以及更具体地,与可扩展内容传送应用程序1250-1和可扩展内容传送过程1250-2相关联的函数。

除了这些实施例之外,还应该注意,本文的其它实施例包括作为可扩展内容传送过程1250-2的可扩展内容传送应用程序1250-1在处理器1202上的执行。因此,本领域技术人员应该理解,计算机系统1200可以包括其它过程和/或软件和硬件部件,例如控制对硬件资源的分配和使用的操作系统。

如本文所讨论的,本发明的实施例包括多个步骤或操作。这些步骤中的若干步骤可以通过硬件来执行或者可以被包括在机器可读指令中,该机器可读指令可以被用于促使利用指令对通用或专用处理器编程来执行操作。备选地,可以通过硬件、软件和/或固件来执行步骤。术语“模块”涉及自包含的函数部件,其可以包括硬件、软件、固件或其任何组合。

本文描述的实施例被实现为在一个或多个计算机系统中的逻辑步骤。逻辑操作被实现为:(1)在一个或多个计算机系统中执行的处理器实现的步骤的序列,以及(2)在一个或多个计算机系统内部的互连机器或电路模块。实现是取决于实现本发明计算机系统所需性能的一个选择问题。因此,构成本文所描述的本发明实施例的逻辑操作涉及各种操作、步骤、对象或模块。此外,应该理解,除非明确声明或者所声明语言使特定顺序成为本质需要,否则可以任何顺序执行逻辑操作。

在不脱离本发明的范围的情况下,可以对本文所讨论的示例实施例进行多种修改和添加。例如,尽管以上描述的实施例涉及特定特征,但是本发明的范围还包括具有特征的不同组合的实施例以及不包括所有上述特征的实施例。因此,本发明的范围旨在包括所有这些备选、修改和变型,及其所有等同物。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号