CN105684387A - 用于利用基于通知的无效缓存内容的系统和方法 - Google Patents
用于利用基于通知的无效缓存内容的系统和方法 Download PDFInfo
- Publication number
- CN105684387A CN105684387A CN201480054487.XA CN201480054487A CN105684387A CN 105684387 A CN105684387 A CN 105684387A CN 201480054487 A CN201480054487 A CN 201480054487A CN 105684387 A CN105684387 A CN 105684387A
- Authority
- CN
- China
- Prior art keywords
- token
- response
- server
- data
- invalid
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/231—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
- H04N21/23106—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving caching operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/76—Proxy, i.e. using intermediary entity to perform cryptographic operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0884—Network architectures or network communication protocols for network security for authentication of entities by delegation of authentication, e.g. a proxy authenticates an entity to be authenticated on behalf of this entity vis-à-vis an authentication entity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Multimedia (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本文描述的是用于在因特网上内容分发的系统、设备以及方法。在特定的没有限制的实施例中,缓存模型被提供,其能够为期限不定的时间段的、可能具有无限的或者相当长生存时间的值提供缓存,当基础的源内容发生变化时还能够提供迅速的更新。在一种方法中,源服务器能够用令牌对其内容请求的响应进行注释,例如,将其放到附加的HTTP头部或者采用另外的方式。令牌能够驱动缓存的进程,并且可以被用作后续在分发内容的缓存代理服务器内无效响应的句柄。令牌可以用于表示在响应中表述的各种类型的依赖关系,包括但不限于数据、数据范围或者作为响应构建基础的逻辑。
Description
发明背景
技术领域
本公开大体上涉及分布式数据处理系统以及涉及在计算机网络上对用户的内容分发,并且更具体地涉及用于在计算机网络上缓存内容以加速内容分发的技术。
相关技术简述
分布式计算机系统在现有的技术领域中是被公知的。一个这样的分布式计算机系统是由服务提供商运营并管理的“内容分发网络”或者“CDN”。服务提供商通常代表第三方来提供内容分发服务。该类型的“分布式系统”通常指由一个网络或多个网络连接的自发的计算机的集合,连同被设计以有助于各种服务,例如内容分发或者支持外包的站点基础设施的软件、系统、协议和技术。该基础设施通常由多个租用者、内容提供商共享。该基础设施通常被用于代表该内容提供商或者其他的租用者的内容(例如web、媒体流以及应用)的存储、缓存或者传输。平台也可以提供辅助的技术,此处被使用的辅助技术包括但不限于,DNS查询处理、业务开通、数据监控和报告、内容定向、个性化、以及智能业务。
在诸如在图1中所示的公知的系统中,分布式计算机系统100被配置为内容分发网络(CDN)并且有分布于因特网各处的机器102的集合。通常,大多数机器是位于靠近因特网边缘的服务器,即,在或者毗邻终端用户接入网。网络运营指挥中心(NOCC)104可以被用于掌管并管理在系统中的各种机器的运行。隶属于内容提供商的诸如网站106的第三方站点将内容(例如,HTML或者其他的标记语言文件,内嵌页面对象、媒体流、软件的下载等等)的分发卸载到分布式计算机系统100以及尤其卸载到CDN服务器(有时被称为“边缘”服务器)。这样的服务器可以被一起分组到在特定地理位置上的入网点(POP)107。
CDN服务器通常位于在因特网上的公众可路由的节点,在位于移动网络、在或者毗邻基于企业的私有网络、或者在其组合中的节点内或者与位于移动网络、在或者毗邻基于企业的私有网络、或者在其组合中的节点毗邻。
通常,内容提供商通过对指定的内容提供商的域或子域(例如,通过DNS别名记录)起别名将其内容的分发卸载到由服务提供商的授权域名服务管理的域。服务提供商的域名服务将希望得到内容的终端用户客户机122指引到分布式计算机系统(或者更特殊地,到在平台中的CDN服务器中的一个服务器)以获得更可靠和更有效的内容。CDN服务器响应客户端请求,例如,通过从本地缓存中、从另外的CDN服务器、从与内容提供商关联的源服务器106或者从其他的源中获取被请求的内容。
对于可缓存的内容,CDN服务器通常采用依赖于针对每个可缓存的对象设置的生存时间(TTL)的缓存模型。在获取到被请求的内容以后,对象可以被本地存储在指定的CDN服务器直到TTL期满,到那时该对象通常根据源服务器106被重新验证或者被重新获取。对于不可缓存的对象(有时被称为“动态”的内容),当该对象被客户端请求时CDN服务器通常每次必须返回到源服务器106。CDN可以实行服务器缓存的分级以在比源服务器106更接近处理客户端请求的CDN服务器的各种CDN服务器中提供客户内容的中间缓存;一种这样的缓存分级子系统被描述在美国专利申请号7,376,716中,其公开通过引用被并入本文。
尽管在图1中没有详细地示出,但是分布式计算机系统还可以包括其他的基础设施,例如分布式数据收集系统108,其收集来自CDN服务器的使用数据和其他数据,对经过一个区域或者区域的集合的数据进行总计并将这些数据传递到其他的后端系统110、112、114和116以有助于监控、记日志、报警、计费、管理以及其他的运营和管理的功能。分布式网络代理118对网络和服务器的负载进行监控并且将网络数据、流量数据和负载数据提供给DNS查询处理机构115。分布式数据传输机构120可以用于将控制信息(例如,用于管理内容的元数据,用于增强负载平衡(的元数据)等等)分发到CDN服务器。CDN可以包括可以位于CDN服务器可访问的网络数据中心以及可以充当内容源的网络存储子系统(有时在本文被称为“网络存储”),如在美国专利第7,472,178号中所描述的,其公开通过引用的方式被并入本文。
如在图2中所示出的,在CDN中指定的机器200包括运行支持一个或多个应用206的操作系统核(例如Linux或者其变型)204的商业硬件(例如微处理器)202。为了有助于内容分发服务,例如,指定的机器通常运行一组应用,例如(超文本传输协议)HTTP代理207,名称服务器208、本地监控进程210、分布式数据收集进程212等等。HTTP代理207(有时在本文被称为全局主机或者“ghost”)通常包括用于对缓存和对来自机器的内容的分发进行管理的管理器进程。针对媒体流,机器可以包括如由所支持的媒体格式需要的一个或多个媒体服务器,例如Windows媒体服务器(WindowsMediaServer,WMS)或者Flash服务器。
在图2中示出的指定的CDN服务器可以优选基于具体的域、具体的内容提供商,优选使用利用配置系统分布在CDN服务器上的配置文件被配置以提供一个或多个扩展的内容分发特征。指定的配置文件优选是基于XML(基于可扩展标记语言)的并且包括对一个或多个高级的内容处理特征有帮助的内容处理规则和指令的集合。配置文件可以经由数据传输机构被分发到CDN服务器。美国专利第7,240,100号的内容通过引用被并入本文,其描述了用于分发和管理CDN服务器内容控制信息的有用的基础设施并且该控制信息和其他的控制信息(有时被称为“元数据”)可以由CDN服务提供商自身,或者由运营源服务器的内容提供商客户(经由外联网等等)提供。美国专利第7,111,057号通过引用被并入本文,其描述了用于对来自CDN机器的内容进行清除的架构。关于CDN平台的更多信息可以在美国专利第6,108,703号和第7,596,619号中可以被找到,这两个美国专利通过引用被完全地并入本文。
在典型的运营中,内容提供商对期望由CDN已经服务的内容提供商的域或子域进行识别。CDN服务提供商将内容提供商的域与CDN主机名关联(例如,经由规范化的名称或CNAME,或者其他的别名技术),并且CDN提供商随后将CDN主机名提供给内容提供商。当在内容提供商的域名服务器上得到对内容提供商的域或子域的DNS查询时,这些服务器通过返回CDN主机名来响应。上述网络主机名指向CDN,并且该主机名随后通过CDN名称服务得到解析。CDN名称服务将一个或多个IP地址返回到对端。请求的客户端应用(例如,浏览器)随后发出到与该IP地址关联的CDN服务器机器的内容请求(例如,通过HTTP或者HTTPS)。该请求包括主机头部,该主机头部包括源内容提供商的域或子域。一接收到带有主机头部的请求,CDN服务器就检查其配置文件以确定请求的内容域或子域是否确实由CDN正在处理。如果是,那么CDN服务器针对该域或子域应用如配置中说明的内容处理规则和指令。如上文所述,这些内容处理规则和指令可以位于基于XML的“元数据”配置文件中。
CDN平台可以被认为是在因特网上的在其上能够提高通信效率的覆盖层。当CDN服务器需要从源服务器106或者从充当中间的父缓存的另外CDN服务器中获得请求的内容时,或者当对代表内容提供商的通过覆盖层的不可缓存的内容的通信进行加速时,或者当其他情况时,在覆盖层上被提高的通信能够是有用处的。在CDN服务器之间的通信和/或穿过覆盖层的通信可以利用路由选择、协议优化得到增强或提高,协议优化包括TCP增强、永久连接的池化和再利用、内容以及头部压缩和重复数据删除、以及其他的诸如在美国专利号为6,820,133,7,274,658,7,607,062,以及7,660,296中描述的那些技术,其中,上述美国专利的公开通过引用被并入本文。
作为提供通信增强和加速的覆盖层,CDN服务器资源可以用于促进在企业数据中心间或者总部分支办公室(可以被私有地管理)间的广域网(WAN)的加速服务,以及促进到/来自由企业用户使用的第三方软件即服务(SaaS)提供商的加速服务。
沿着这些路径,CDN客户可以订阅“在防火墙后面”管理的服务产品以加速以在客户的企业防火墙后面为宿主的内联网web应用,同时以加速在防火墙后面的他们的用户之间桥接以因特网云(例如,从SaaS提供商)为宿主的应用的web应用程序。
为了实现这两种使用情况,可以在以一个或多个客户数据中心为宿主的机器上,以及在以远程“分支办公室”为宿主的机器上执行CDN软件。在客户数据中心执行的CDN软件通常提供了服务配置、服务管理、服务报告、远程管理访问、客户SSL认证管理以及用于配置web应用的其他功能。在分支办公室中执行的软件为位于那里的用户提供了最后一英里的web加速。CDN本身通常提供以CDN数据中心作为主机的CDN硬件以提供运行在客户防火墙后面的节点间的网关以及CDN服务提供商的其他的基础设施(例如,网络和运营设施)。该种类型的管理解决方案为企业针对他们公司的内联网提供了利用提供广域网最优解决方案的CDN技术的机会。这种解决方案将用于企业的加速扩展至在因特网上任何地方服务的应用。通过将企业的基于CDN的私有覆盖层网络与已有的CDN公共因特网覆盖层网络桥接,在远程分支办公室中的终端用户获得了端到端的加速应用。图3示出了用于被优化的WAN、提供诸如上文描述的“在防火墙后面”的服务的通用架构连同与穿过覆盖层的可能的数据流的示例。关于在防火墙后面的服务提供的其他信息可以在美国专利第7,600,025号的教示中找到,其教示通过引用被并入本文。
在公知的技术(诸如当前在CDN中使用的那些技术)提供了众多的优点的同时,存在更好地加速针对非存储的方法或者显式TTL缓存的方法是次优的流量的技术的需求,该部分流量是在因特网上的流量的增长的和重要的部分。通过应用程序接口(API)访问的内容是这样的流量的一个示例。利用通过介绍的方式的前述内容,将在下文描述属于本发明的对象的提高的系统、方法以及装置。
简要概述
除了别的以外,本公开还描述了在因特网上用于内容分发的系统、设备以及方法。描述了一种缓存模型,其能够改进已知的基于生存时间(TTL)的缓存和非存储的方法(然而这样的技术可以与在下文将解释的本文的教示相结合来使用)。本文描述的方法可以支持持续期限不定的时间段的缓存,当基础的源内容变化时,(缓存)还迅速地更新,使得其除别的以外,适于利用应用程序接口(API)重新获得的内容,然而这不是限制。
例如,在一个实施例中,源服务器可以被编程以通过采用令牌形式的标识符对其客户端内容请求的响应进行注释。(在API的情况下,在源服务器上运行的API可以被编程以用令牌来对于针对API做出的客户端请求的响应进行注释)。令牌可以驱动在分发平台上的缓存代理服务器内对源响应进行缓存的进程。用于发出的响应的TTL可以被认为是无限的,或者相当长,实现来自代理中的缓存的响应的加速。接着,令牌可以用作无效先前的响应的句柄。
优选地,令牌可以对应或者指示被用来在源处产生响应的数据或者逻辑。例如,数据库中的驱动在源处的内容生成的特定记录可以对应令牌。令牌还可以对应在源处的文件或者其他数据。当这样的记录、文件或者其他的源数据更新的时候,针对令牌的无效断言随后可以(例如从源)被发出以及被传播到合适的代理缓存。在代理缓存中的用令牌标记的响应随后能够被无效,因为那些响应依赖于已经变化的数据。令牌可以对应任意条目或者任意数据集,因此该方法关于源数据库的结构和内容生成的基础设施是灵活的。
可以以各种其他的方式使用令牌。例如,令牌可以用于指示数据选择或分类算法已经用于生成响应。后续,当在响应中的数据的选择或分类过时的时候,“选择/分类”令牌能够被用作无效响应的句柄。采用这种方式,令牌可以指示在源处应用并且在响应中体现的逻辑。
作为进一步的示例,令牌还可以通过在具体的语法风格中表示值的范围被称为“范围”令牌。可以利用指示诸如响应相关的值的范围的范围令牌来标记响应。在之前列出的范围令牌的范围内的具体值的随后的无效可以无效那些范围令牌以及它们所连接到的响应。
本文描述的主题具有在内容分发和在线平台架构上的多种多样的应用,并且可以结合CDN服务和技术使用。
如本领域的技术人员将认识到,前述的描述仅涉及用于提供介绍的本发明的示例。在本文的其余部分将描述其他的实施例。前述的内容是非限制性的并且可以以各种系统、方法、装置以及非暂存性计算机可读媒介的方式来实现本文的教示。还应当注意的是,对特定机器的功能的分配不是限制性的,如本文所列举的功能可以以各种方式在不同机器之间进行组合或者分割。
附图简述
根据结合附图进行的下文的详细描述,本发明将得到更充分地理解,在附图中:
图1是示出了作为内容分发网络配置的公知的分布式计算机系统的一个实施例的示意性的框图;
图2是示出了在图1的系统中的内容分发服务器可以在其上被实施的机器的一个实施例的示意性的框图;
图3是示出了跨CDN覆盖层平台的消息流和加速的一个实施例的示意性的框图;
图4a是示出了通过利用本文的教示的缓存技术的使用加速内容分发的示例性的系统中的消息流的一个实施例的示意性的框图;
图4b是示出了在通过利用本文的教示的缓存技术的使用加速内容分发的示例性的系统中的消息流的另一实施例的示意性的框图;
图5是示出了用于对API内容进行加速的情况的API响应间的关系的示例以及基础的API数据库的示例的框图;
图6是根据本文的教示的全息节点以及在这些节点间的消息流的示例性的网络的示意性的框图;
图7是示出了在图6中示出的网络的示例性的网络状态的示意性的框图;
图8a-e是示出了在缓存的服务器的分层排列中的消息流的示例的示意性的框图;
图9是示出了用于在图6-7中示出的节点的套接字集设计的示例的示意性的框图;
图10是示出了利用在图9中示出的套接字集设计用于三个节点的示例性的网络状态的示意性的框图;以及
图11是示出了可以被用于实施本文的教示的计算机系统中的硬件的框图。
详细说明
下文的描述阐述了本发明的实施以便对本文公开的方法和装置的结构、功能、制造和使用的原理提供充分地理解。本文描述的以及在附图中示出的系统、方法以及装置是非限制性的示例;权利要求独自定义了要求保护的范围。与一个示例性的实施例有关的描述的或者示出的特征可以与其他实施例的特征相结合。这样的修改和变型旨在被包括在本发明的范围内。本文列举的所有的专利、出版物以及参考文献通过引用被明确地整体地并入本文。缩写词“e.g.”在本文作为非限制性的短语“例如(forexample)”的简略表达被使用。
根据本公开,服务器的功能被修改以便利用缓存系统提供内容加速,该缓存系统支持期限不定的缓存时间段,或者换种替代的方式表达,基于通知的无效,以替代或者补充基于时间期满的无效。服务器通常是根据本文的教示修改的缓存代理服务器,而且可以是分布式CDN平台的部分。
本文描述的技术可以在特定的实施例中提供用于各种流量的提高的加速,并且对(非限制为)API流量尤其有用。本公开描述的关于API流量的缓存的方法属于下述这种,其中内容提供商客户给他的用户提供API,以及通过该API分发的请求/响应被经由CDN传送和加速,以便实现产品化的API加速。尽管使用API的情况在本文经常被用来提供具体的示例和说明,但是本文的教示并不限制在API流量。可以从利用基于通知的无效的期限不定的缓存时间段受益的任何的流量都可以从本文的教示中受益。上述的益处可以变化,但本文的教示可以用于针对任何类型的对象的分发。
在一个实施例中,系统采用诸如上文描述的CDN代理服务器的缓存代理服务器的集合并且这些缓存代理服务器根据本文的教示被修改。该被修改的服务器在本文有时被称为“全息”服务器,该名称是从“将您的数据库的全息图投射到网络中”得到启发的助记符,以从放置授权的数据库拷贝到CDN系统本身将系统区分开来,本文的教示不需要这样的CDN系统(但与其也是可相容的)。
应当注意到在某些实施方式中,除了其他的CDN代理服务器(例如,不提供本文描述的缓存和加速功能)以外,通过充当诸如在网络边缘部署的CDN代理服务器的前面一排的父缓存也可以使用全息服务器。
在运营中,客户的源基础设施可以发出与API响应一起的优选在特定的非标准HTTP头部的一个或多个令牌(有时被称为标签)。这是对源程序的一个调整。令牌对在CDN平台以及尤其在全息服务器内缓存和无效这些API响应的进程进行驱动。由源发出的令牌表示在API响应中使用的数据块。用于API响应的TTL可以被认为对于允许这些响应被缓存是无限长(或者非常长,例如,一年)。源响应后续利用令牌进行无效,可能无效众多的先前的API响应。
令牌可以被用作缓存处理指令,允许响应内容存在于缓存中并且在基础的源数据无变化时保持很长时间有效以用于服务,以及随后快速地更新以响应在源处的一阵变化。该方法可以支持既不是非存储的也不是基于TTL的缓存(非存储和基于TTL的方法是今天用于加速不可缓存的动态对象的主要方法)并且提供最终一致的(但优选快速一致的)数据模型。该方法不依托数据库,允许内容提供商客户在源处利用他们喜欢的任何SQL或者任何NoSQL数据库。
令牌可以指示各种各样的事物。在通常情况下,令牌与出现在或者被用于构造指定API响应的数据的条目相关联。当与指定的数据令牌相关联的数据在源数据库中变化以及基础的API不再有效时,这样的令牌可以充当无效(从缓存的视角来看)API响应的句柄。因此,令牌可以对应在基础数据库中某些现成的副本或者拥有在基础数据库中某些现成的副本。例如,令牌可以表示在源数据库中用于记录的主关键字,以及当上述记录变化时,该令牌可以用于无效那些基于该记录的API响应。
令牌可以表示替代在数据库中的实际字段或者各行数据的抽象。因此,令牌可以指示用于在源处产生指定响应的逻辑。例如,令牌可以被用于指示API响应是数据分类、数据选择算法或者其他算法的产物。例如当数据的分类或者选择(而不是数据本身)过时的时候,这样的令牌可以用作无效缓存的响应的句柄。考虑表示表格中的最新的十项条目的响应的情况。该响应可以利用这样的一个令牌。当较新条目到来时,发出用于十项当前组成条目的令牌将不恰当地导致无效;较新的条目的到来可以触发用于该表格的分类令牌的无效而不是触发该十项源条目令牌中的一个令牌无效。
认识到,令牌也可以通过在具体的语言风格中表示值的范围被认为是“范围”令牌。响应可以利用范围令牌标记,范围令牌指示诸如响应相关的值的范围,例如用于在响应中返回的地图数据的经度/维度的范围。在之前列出的范围令牌的范围内的具体值的随后的无效可以无效那些范围令牌以及它们相关联的响应。因此,对在范围内指定点的更新(例如在地图上在特定坐标点添加感兴趣的新点)可以触发先前的响应的缓存无效。
令牌的含义优先被选择使得总体上注释特定响应的令牌与导致响应的构造但在后续的某时间可以改变的数据和逻辑相关,以及便利地与基于这些令牌的后续的无效的能力相匹配,考虑源系统将如何维护和监控其自身的状态,如何便利地通过句柄指向数据块,以及如何通过一个或多个令牌可靠地表示对数据的所有变化。
图4a提供了一个实施例的总体概述并示出了通过代理和缓存API内容对用于源的API流量进行加速的全息服务器。在图4a中示出了两种替代的选择。实线指示了在其中全息服务器接收客户端请求并直接将其转发到源的流。虚线指示了在其中全息服务器接收客户端请求并将其转发到靠近源的另一全息服务器的可选择的流,该另一全息服务器随后转发请求到源。产生的响应(带有所附令牌)沿着从源到父全息服务器到子全息服务器的反向被传递。全息服务器缓存带有令牌的响应,以及如果令牌仍然是有效的,那么针对随后的客户端请求,全息服务器可以从本地缓存中提供响应。通常,如果缓存的响应相关联的令牌中的任一个已经无效的话,那么其可以被认为无效而不能对随后的客户端请求提供响应。
图4b示出了在其中全息服务器被部署以支持其他的CDN代理服务器(不具有全息功能的服务器)并且对那些其他的CDN代理服务器提供缓存分层功能的另一实施例。在图4b中,非全息CDN代理服务器接收客户端请求并且产生到全息服务器的转发请求以要求响应,而不是直接地发送回源。全息服务器可以根据它们的缓存进行响应(如果缓存的响应是有效的),将请求转到另一全息服务器,将请求转发到CDN代理(以便最终转发到源),或者直接将请求转发到源。
图5仅通过图示的方式示出了API响应和表示在源数据库中的记录的令牌间的关系的示例。在图5中示出了因为与关键字1(Key1)相关联的记录更新的缘故关于数据令牌1(DataToken1)正被无效的示例。在这种情况下,系统中无效的数据令牌1将意味着在缓存中的API响应A和API响应B两者将被无效,因为它们均依赖于数据令牌1。
在优选的实施方式中,系统建立在CDN中并且从源基础设施中分离,源基础设施是数据库的宿主并且充当来自API的数据的有授权的源。然而,本文的教示还适于在CDN服务器外部的实施方式。
应用程序接口(API)
API或者应用程序接口通常是围绕服务、数据或者系统的封装器,其由经常在他们自己的组织的外部的一队程序员为另外的团队实现。某些API被实现以用于公共消费,以及某些API被实现为组织功能以用于被公司的不同团队的内部使用。API通常支持对不必要的细节进行封装以及实施业务逻辑和最佳实践。API经常作为“集中代理”进行服务以对系统或者生态系统做出更大的贡献,比不用API更简单,因为只需要理解API,没有其他的要理解。
在通用技术意义上讲,API通常被实现为具有对它们将如何行为的定义以及通常它们将返回的数据的调用的文档集。在web的上下文中,API经常包括在特定域或者URL路径上理解的HTTP格式的请求,这些将在web服务器系统的内部起作用并且利用相联系的系统起作用,以及将信息返回出来到web客户端,或者采取行动并将结果报告返回到web客户端。
web客户端将不经常简单地显示如返回的信息或者直接地渲染返回的信息,当在web浏览的情况下,而是将使用某种逻辑以编程地作用于数据上。该逻辑经常以Java或者以本机语言被编码到客户端应用中,例如,在移动app中的诸如用于iOS或安卓操作系统的逻辑。采用这种方式,处理可以被完成;尽管,应当说在app中的“页面”上简单地布局信息也是一种普遍的使用情况,尽管技术上其可以不是如一个人在讨论web浏览器软件的语境中可能理解的HTML页。
数据经常被利用GET以及POST或者其他的HTTP调用传递到webAPI,以及被利用XML或者JavaScript对象符号(JSON)、其他的开放格式或者专有格式从webAPI中返回。格式通常被设计易于为计算机所解析。
示例的API调用
大量的API工作是对根据SQL数据库查询产生了XML或者JSON的REST调用的封装。有时查询是相当复杂的,或者一系列的查询被针对单个的响应执行。有时,出于性能的原因应用层缓存被包含。
例如,考虑飞行航线的飞行状态对domainapi.flight-example.com进行查找如下:
该响应携带关于包括机场以及飞行设备的飞行的信息,还携带关于计划的事件和实际事件的时间戳。在等待飞行时在该请求中的信息将完全没有变化,以及随后一阵变化将在几个小时内发生,该变化对API的任何客户是非常实时敏感的,以及随后在飞行结束以后,数据将再次停留在稳定的平静阶段。在飞行前的某主要的数据块发生变化的情况下,变化的可能是飞机的类型或者起飞时刻或者终点站,以及在这两种情况下这些都是应当尽可能立即在响应中体现的变化。
在具有以源为终点的所有流量的动态地非存储的CDN分发解决方案中对这种类型的API响应进行服务可以使其比自托管更可靠。尽管当TTL增加时才对客户的全局时延有帮助,TTL的增加在某种程度上抵消了数据的新鲜度,但是在CDN中增加基于时间(TTL)缓存的小的时间段可以使得源流量更具容忍性。设置高的TTL以及要求大型CDN的清除功能将导致清除时间表太长来满足用于这种或者类似使用情况下的更新。考虑缓存和清除能力的新的方法在本文可以是有意义的,并且由本文的教示提出。
将全息数据令牌附加至示例的API响应
类似于上述API示例的响应的输出,全息系统可以加速API输出。
在一个实施例中,源API响应可以被扩大以遵从全息。名称是“X全息数据”的HTTP头部可以被增加,该HTTP头部可以在净荷之前作为正常的头部,或者在净荷之后作为尾部被列出。尾部的使用可以是有优势的因为在尾部的元数据将作为在源上的净荷构造的副产品而产生。在下文的示例中,该头部的值携带被逗号分隔的令牌以及跟随每个逗号的可选的空格,并且该令牌指示数据(而不是用于构造响应的逻辑或者范围)。
…
Trailer:X-Hologram-Data
…
X-Hologram-Data:flightId:12345,airport:JFK,airport:LHR,carrier:AA,flightnumber:AA100,carrier:GF,flightnum:GF6654,equipmentnumber:N783AN,equipment:777
增加的头部或尾部的大小(也许是几百个字节)通常将对API响应的整个大小增加很少,以及其将实现全息缓存。在该示例中,元数据是逗号分隔的令牌的列表。如之前所提到的,各种类型的令牌是可能的(数据令牌,选择/分类令牌等)以及各种格式的令牌也是可能的。在该实例中,数据查询是对航班ID的直接查询,因此只有指示源数据的令牌是必要的,以及所有的令牌基本上是表格/主关键字的组合。
(出于该示例的目的,假设我们知晓在源上表格的名称以及结构。其将不必要在API响应的XML中体现。实际上,令牌可以通过由相同开发者编写的代码作为API被发布出来并且因此他们理解基础的数据模式。)
令牌可以被构造成与在源上的基础数据结构中的任意数据的集合相关。在该示例中,假设支持API的数据库具有包含作为主关键字的航班ID的飞行表格。因此具有基于并代表到数据库的表格/主关键字的令牌是方便的,以及因此“表格:关键字”的形式是合理的默认模板。
尽管系统是灵活的,然而系统通常对令牌如何与源数据库关联是不可知的。不必使用实际的表格名称;只要该名称是对将一起发生改变或者一起保持恒定的一堆数据的引用的方式即可。完全地标准化是不必要的;不需要表示每个表格的关系,只要当数据发生变化时,在这条线上表示的令牌中的一个令牌被认为受到源的影响即可。总而言之,令牌不需要是实际的主关键字,尽管优选表示独一无二的索引的关键字或者能够快速地引用并且在数据库中与实际的主关键字相关的源的哈希。事实上“表格:数值”的结构也不是必需的,以及可以接受与常规的表达符“[A-Za-z0-9/:;_-]+”相匹配的任意令牌。语法的扩展也可以允许附加的特征表达方式。
该灵活性意味着任何类型的数据可以作为用于系统的令牌。上述的示例聚焦在SQL数据库的语境中,但是非SQL、内存缓存或者甚至文件系统元素能够被转换为令牌。(例如,源能够决定具有表示存储的文件的名称的令牌。)
返回到该示例,API响应涉及两个飞机场,起飞和降落的飞机场。应当注意到出于令牌的原因,多个飞机场的关系现在是不相关的,因此其中的哪一个是起飞飞机场VS降落飞机场没有被注释,也完全没有必要是对返回到XML的任何引用,因为系统不需要旨在解析XML,并且事实上该数据净荷能够已经用如JSON或者其他格式来编码。
在可替代的实施例中,系统能够根据API响应净荷本身确定令牌,而不是依赖源以产生和附加在头部的数据令牌。有或者没有针对该内容提供商API流量对在CDN中的具体域的配置进行协助的情况都是可能发生的。在CDN中具体域的配置将包含转换指令以将各种净荷转换为控制头部或者与合适的令牌等价的表达。例如,配置可以要求由全息服务器针对特定的预定的格式或者标示内嵌在响应中的令牌信息的标记对源响应净荷进行扫描。令牌信息通常将从响应中剥离出来并转换为用于在全息系统内的通信的头部或者其他的等价域。
如另一示例,XSLT文件可以与用XML发出的API中的每个URL模式相关联,并且当响应穿过全息服务器(例如,与源最接近的全息服务器)时,XSLT将以符合标准的方式被应用到XML上以便生成与能够起初随响应一起被传输的需要的头部相同的结果文档,或者是简单地解析为需要的头部的XML片段。类似地,针对JSON响应,表述数据结构行进的路径以便从JSON中提出值的文档能够被保存以代替XLST。
在转换以后,转换的文档提供通常应当伴随净荷的控制数据(令牌),但转换不旨在必须替换净荷。因为控制数据一般在服务器间没有必要改变,如果服务器通常保留来自源的控制头部,随后在执行转换以后,在将响应返回到下游的请求的全息服务器之前该服务器将从转换中得到的控制头部附加到其他的HTTP头部。因此,在图4a(虚线)的情境中,在将该修饰的响应发送到子全息服务器之前,父全息服务器能够附加该控制数据。
通过在API响应中的XML继续,我们看到时间戳适于针对诸如飞行起飞时间这样的事件。根据令牌“flightId:12345”这些是表示在令牌列表中的所有要考虑的原子数据。因此,当时间戳发生改变或者添加了新时间戳的时候,源程序将被配置以知晓所有具有令牌“flightId:12345”的响应受到影响,并且(可推测)需要被无效。
承运商的编码通过涉及用于相关的承运商以及用于相关的承运商的航班号的每个令牌被表示在令牌列表中。因为航班号的该类型是客户的航班号,在源上的开发者可以设计使得它存储在单独的表格中并且使用“flightnum:”表格标示符作为令牌。
最后,该“equipmentNumber:N783AN”和“equipment:777”令牌表示用于飞机类型(装置)的飞机本身以及记录。
基于附加的令牌以及令牌的无效的缓存
上文描述的是具有API响应净荷的来自源的令牌的发布,以及该令牌如何能够表示源数据结构,该源数据结构产生了在净荷中的内容。
针对API响应,缓存时间可以是无限长或者非常长的持续时间,不同于其中表述了某个时间的基于TTL的缓存。只要其组成的令牌都是有效的,那么与其相容的全息响应就是有效的。换言之,在一种实施方式中,在CDN中的HTTP代理缓存可以期限不定地缓存API响应直到被源明确地无效。
在上文的飞行记录的示例中,在接收到用于列举的13个令牌的一个令牌的无效之前,响应XML文档被认为是有效的以对终端用户客户端请求的响应进行服务。在这段可以是相当长的时间期间,文档可以由网络中的全息服务器缓存并且根据缓存重复地进行服务。
在可选择的实施例中,作为安全的预防措施,全息系统可以要求具有源数据的令牌周期性重复生效,尽管它们相应的数据令牌仍然是有效的,作为安全的预防措施或者作为数据存储的保护措施,而且还可以覆盖全局TTL使得API响应过期。这两种方法与本文的教示是相容的。
在一个实施例中,全息数据库可以遵从从源发送的标准缓存相关的HTTP头部,考虑到这样的头部将结合全息控制头部得到体现以及因此可以考虑更长的时间段是恰当的。遵从所有的普通的HTTP头部与本文的教示是相容的。
存在众多的用于无效令牌的可能的技术。仅通过示例的方式,令牌可以通过(i)或者(ii)被无效,(i)是在指定的API响应中包括用于令牌的无效断言,(ii)是由源(当源改变了在服务的web请求的上下文外部的数据时)主动地调用令牌无效API的方式。该“令牌无效API”不要与被加速的API相混淆。
转向无效机制(i),服务器的全息网络优选能够处理与任何API响应有内联的无效。在大多数情况下,API响应将实际上是对客户端请求的API数据库的响应(即,“写入”消息),在该范围内事件将引起在数据库中的记录改变并促使无效。然而,该架构也可以支持与不对数据库进行写操作的客户端请求的响应有内联的无效。
为了图示:出于图示的目的假定根据上文所述飞行状态API也允许对数据的更新,并且授权的用户已经发布了对该API的HTTP调用,该调用将更新用于该航班的“theGreatAircodeshare”的航班号。全息无效可以被包含在来自源的API响应,例如HTTP200“ok”的响应中:
X-Hologram-Data:!flightnumber:AA100,!flightId:12345
该注释将使得依赖源航班号和通过航班ID讨论的飞行的任何文档变为无效。该无效通过将感叹号附加到列出的令牌以指示无效的方式被断言。全息节点可以对通过全息网络的其余部分启动无效的传播负责,或者优选地用于发送该无效到网络中的发布节点,该发布节点发布用于指定的API域的无效通道,下文将提供关于无效发布的更多细节。
转向无效机制(ii),令牌无效API机制可以如下操作:在某点上,假设信息块发生了变化。让我们假设在飞机着陆前XML被重获,以及随后飞机着陆了,导致“到达日期”、“状态”以及“实际到达”节点在XML中被更新。源可以利用到CDN网络的私有以及安全的令牌无效API调用来无效令牌。HTTPS以及API关键字授权的某格式可以被叠加到本文的示例。该“/hologram”路径可以是由CDN网络服务被全息使能的域理解的伪路径。
POST/hologram/invalidateHTTP/1.1
…
tokens=flightID:12345
在很多情况下,单个令牌的无效可以起到无效所有的以该令牌作标记的响应的作用,该令牌可以潜在地表示众多的全网的API响应文档。该无效消息必须被在支持全息功能的机器上传播。单个的无效对无效上文的XML响应是足够的,使得随后的用于相同内容的客户端请求将需要被转发到源以得到处理。该无效还同时地无效任何其他的依赖关于飞行12345信息的响应,即,任何之前的利用在其各种附加的令牌中的“flightId:12345”的令牌进行服务的文档。
作为可选择的无效示例,让我们假设伦敦希思罗机场正将其名称改为皇家机场。该无效API调用将是:
POST/hologram/invalidateHTTP/1.1
…
tokens=airport:LHR
一旦传播,任何在CDN网络中的在其特定的API上包含关于希思罗信息的响应现在是无效的,并且来自源的将来的响应将反映不同的机场名称,在客户端请求被完成时允许最新的正确的数据在缓存中填充CDN网络。
优选地,源能够对到令牌无效API入口点的永久的HTTP或者SPDY连接保持开放,使得期望的一系列无效能够通过该连接被多路复用。
在可选择的实施例中,WebSocket服务可以是可行的使得源将WebSocket开放给CDN服务器(例如,全息服务器或者其他的服务器中的一个服务器),并且使用WebSocket发送无效或者携带具有更新的序列号的令牌的消息,该更新的序列号凭借增加序列号隐式地建议无效,如下文将描述的。
在还有的另一示例中,钩轮询调用能够被源请求,意味着或者源将产生对请求的API调用,或者具体域的CDN配置将指定从CDN服务器到源的常规的HTTP请求的轮询,请求任意以及所有的更新的令牌信息,随后将由源表示在响应中,作为可选择的在普通的携带数据的响应中提供更新的令牌信息。
序列号令牌
在可选择的实施例中,令牌可以具有序列号的语法。例如,每个令牌可以利用具有序列号(flightId:12345.1)的名称或者别名(例如,flightId:12345)被识别。更有力地,序列号的格式可以在符号之后用服务器号、冒号、序列号、冒号、以及以秒来表示世纪的时间戳数字的时间戳。例如,提及的分配的服务器号2000,增量至101的序列号,以及1380679283的时间戳(对应2013年10月1日7:01:23PDT):
flightID:123452000:101:1380679010
具有别名但无序列号语法的令牌的无效在下文被认为是“短格式”,同时序列号语法的使用被认为是“长格式”。令牌的这些格式只是用于说明具体实施方式的示例而非意味着限制性。
序列号可以被认为是令牌的一种版本或者令牌的数字迭代,并且每当在源上相应的数据得到更新,计数被增加。这种方法减轻了源不得不发送表示无效的命令的负担;替代的是,该无效命令可以仅报告当前现在的迭代,而且当全息节点知晓将所有先前的令牌迭代视为无效处理的时候,其可以作为隐式的无效命令起作用。因此,针对每个API响应,源可以附加相关的数据令牌的最新的迭代。该无效机制还将与前面描述的令牌无效API相容。
如本领域的技术人员将认识到,系统将使用各种算法和令牌语法以使得指定的全息服务器对照随后接收到的令牌与随响应缓存的令牌进行比较并且做出该缓存的令牌是否有效的决定。例如,该方法可以依赖于时间戳排序、向量时钟的方法或者Lamport时间戳的方法。
示例的全息网络
下文描述了全息服务器的网络的非限制性的实施例。首先呈现了对全息网络的通信的介绍性的概述。
在该实施例中,在全息网络中的各种服务器作为HTTP代理网络行使功能,该HTTP代理网络能够对HTTP客户端请求进行答复,将请求转发到靠近源的节点,转发到源,并且当它们提供响应返回时,缓存该返回的响应。
此外,全息服务器可以通过消息系统彼此通信,该消息系统与用于与客户端通信和用于客户端请求以及获取响应的HTTP通道隔离。(如果期望的话,全息消息系统也能够利用HTTP,但本文出于描述的目的假设HTTP流量指的是客户端内容请求及其响应,以及由于代理操作所产生的转发请求和转发响应。)
消息通过全息服务器与充当注册者的全息服务器中的一个进行互换,该注册者跟踪并分配在网络上的服务器中哪个服务器在任何指定的时间为任何指定的域名保持发布者的状态。消息还被在发布者-订阅者模型上从每个各自的发布者到所有的服务器发布,该所有的服务器凭借接收针对域的HTTP客户端请求向发布者已经订阅消息,对于该域,该发布服务器是发布者,如由注册者所跟踪的。该订阅将令牌无效传递到订阅的服务器,并且因此在该方法中被订阅的是所需要的状态以便将本地缓存作为用于指定域的授权的缓存。如果非发布者将HTTP请求转发到源(以及接收具有令牌无效的源响应)或者接收来自源的关于令牌无效API上的请求,它们中的任一个可以促使其具有应当被发布的令牌消息,那么消息还从指定域的非发布者被传递到发布者。
所有的各种连接可以基于在连接本身的流量具有逻辑的超时条件;当用于该域的HTTP流量变为不存在时,订阅还可以是按域被解除订阅,以及当用于指定域的HTTP的流量在发布者处变为不存在时,发布者的状态可以被清除。所有的消息连接被描述为直接的,但出于扩展的目的也可以通过一个或多个代理节点或者父节点产生间接的连接。注册者可以是另外的正常的除了常规的功能以外还充当注册者的全息服务器,但注册者可以是专用的仅是注册者的服务器或者服务器的集合,或者由其他的方式提供的抽象的服务,例如分布式数据库服务或者DNS服务。
图6是示出了示例的全息服务器平台的各种角色和功能的框图。在图6中示出的实施例中,在客户端和全息服务器之间的非全息CDN代理服务器(图4b)的附加层没有被使用。将在后续描述该实施例。
参考图6,各种全息服务器602被分布在平台中。标记的线段表示机器之间的连接;实线标示HTTP请求和响应消息,以及虚线和点线标示全息服务器间用于传递令牌相关的以及其他消息的连接。点线标示用于注册者的消息以及虚线标示在发布者-订阅者或者对等关系中全息服务器之间的消息。在某些情况下,多数字的标签作为指示相同节点之间的多个线段的简略方式,没有划出重复的线段。
假设具有客户端设备610的用户使用HTTP发出到全息服务器602a的API请求,如箭头1所指示。
服务器602a确定用于该即时HTTP请求的主机域并且确定用于该域的全息订阅的状态是否被本地设置。假设该状态是非订阅状态。作为没有被订阅(以及也没有发布者)的结果,服务器602a被阻止查阅其本地的缓存获得之前的响应。服务器602a确定到源601最近的全息服务器如服务器602b,以及因此准备将HTTP请求转发到服务器602b(在最终转发到服务器602b之前配置可以已经替代地引导服务器602a转发到一个或多个父服务器的缓存)。如箭头2所指示的,服务器602a将HTTP请求转发到服务器602b。
服务器602a将消息发送到当前作为网络中的注册者的服务器602c,该消息指示该域、其自己的标识,以及指示HTTP正在被转发到另一台全息服务器的标志。该消息由箭头3所指示。充当注册者的服务器602c确定没有发布者被设置用于该指定的域并且该请求的服务器正内部地转发,以及返回由在箭头3的反向指示的未知的响应。
服务器602b接收由服务器602a转发的HTTP请求并且执行相同的域检查。假设服务器602b也是非订阅的。如箭头4所指示的,服务器602b将HTTP请求转发到源601。
由箭头5所指示的,服务器602b也传递消息到服务器602c(注册者),并且因为服务器602b是到源(或者基于某些其他的度量或其组合)最近的全息服务器,服务器602c分配602b执行用于讨论的域的发布者角色,在由箭头5的反向所指示的回复的消息中返回其自己的标识。一接收到该回复,服务器602b就把自己设置为指定的域的发布者。
假设由箭头5的反向所指示的来自注册者服务器602c的回复在由箭头4的反向所指示的从源601接收的HTTP响应的完成之前到达服务器602b。当来自源601的HTTP响应被接收到以后,附加到响应上的令牌被分析,以及该响应被本地缓存在服务器602b上,且该令牌被索引。采用该实施方式,如果没有收到来自源的长格式,那么通过服务器602b分配序列号到每个令牌以及它自己的服务器号的方式,每个令牌被从短格式升级到长格式。长格式的令牌是本地缓存的格式,以及通过在HTTP上替换携带令牌的原始头部来返回。
如由箭头2的反向所指示,服务器602b回复来自服务器602a的HTTP请求。具有非订阅的状态的服务器602a,不本地缓存该响应但剥离令牌相关的头部并如由箭头1的反向所指示将该响应返回到客户端设备610。(如果服务器602a具有订阅的状态,它将本地缓存该响应以用于随后的相同内容的客户端请求的响应,如下文将更详细地被陈述。)
接着,假设具有客户端设备611的用户产生如由箭头6所指示到全息服务器602a的API请求,并且该请求针对的内容跟之前由客户端设备610请求的内容相同。假设在该域上,缓存关键字不从客户的标识中得到。
服务器602a执行跟之前相同的检查,并且如用于第一次HTTP客户端请求将消息发送到在服务器602c上的注册者。该消息由箭头7所指示。如由箭头7的反向所指示,服务器602c利用作为发布者的服务器602b的标识来响应。如由线段9所指示,服务器602a打开到服务器602b的订阅连接,如果一个连接是开放的,则再次利用该连接。如前述,服务器602a执行相同的计算以确定到源最近的服务器,并且如由箭头8所指示将HTTP请求转发到服务器602b。
作为发布者的服务器602b查阅它本地的缓存,以及发现针对该HTTP请求的响应内容。进一步地,服务器602b验证每个附加到原始请求上的令牌自该响应被缓存以来还没有被显式或隐式地(例如,通过序列号的增加)无效,然后如由箭头8的方向所指示将缓存的内容返回到服务器602a。
假设在由箭头8的反向所指示的对接收自服务器602b的HTTP响应完成之前对在线段9上所指示的订阅进行了处理。当来自服务器602b的HTTP响应被服务器602a接收到时,附加在响应上的令牌被解析,并且该响应被本地缓存在服务器602a,且令牌被索引。因为令牌带有被识别为服务器起源的服务器602b的长格式,因此更新是不必要的,以及它们后续将可与服务器602b发出增量的序列号相比较。
假设客户HTTP缓存控制是满足的或者不存在(缓存控制头部以及类似的)以及随响应初始给出的令牌中没有令牌之前通过来自发布者(服务器602b)的经过用于该域的订阅通道的消息已经变为无效,到服务器602a的用于如上述的相同内容的进一步的请求将导致来自在服务器602a上的本地缓存的内容被返回。
采用进一步图示的方式,假设客户端设备612发出了对如上述的相同内容的请求到服务器602d,由箭头10所指示。类似于上文描述的过程,服务器602d将如箭头11所指示向服务器602c请求发布者标识,如箭头12所指示将HTTP请求转发到服务器602b,以及由线段13所指示针对域消息对服务器602b订阅。
假设客户端设备612后续对API发出“写入”请求,如由箭头14所指示发送HTTPPOST到服务器602d。假设该域被配置为不缓存POST响应,因为这对HTTP是非常惯常的做法。如由箭头15所指示,服务器602d将该请求转发到服务器602b的,如由箭头16所指示,服务器602b将该请求转发到源601。
源将HTTP响应如由箭头16的反向所指示进行返回,以及当在服务器602b上被接收到时,类似于上文的描述全息令牌被解析;然而这时,源的HTTP响应消息包含利用附加的感叹号语法针对令牌的无效。假设被无效的令牌是关于如上文描述的返回客户端设备610、611和612的内容的之前提到的令牌中的一个令牌。服务器602b将该令牌升级为长格式(如果来自源时还不是以该格式的话),该长格式在被无效的令牌上具有比之前分配的更高的序列号。服务器602b产生令牌消息,该令牌消息凭借其用于该域的对令牌消息的订阅被发布到服务器602a和602d。服务器602a和602d接收该令牌消息并更新它们的本地令牌缓存以指示更高的序列号,隐式地无效之前缓存的带有较旧版本的令牌的HTTP响应(如将被服务器602a和602d发现的,例如当它们试图使用之前缓存的响应并对令牌的序列号和/或时间戳进行比较时)。
如由箭头15的反向所示,用于API“写入”动作的HTTP响应被返回到服务器602d,并且如由箭头14的反向所示随后被发送到客户端设备612。
利用现在无效的令牌针对之前缓存的内容的到服务器602a、602b或者602d的进一步的请求将如之前的描述产生完全的遍历以回到源601,类似于之前的描述具有缓存内容的随后的再生。
假设如由箭头17所示,客户端设备612产生用于如上述的内容的到服务器602d的请求。假设服务器602d计算它应当直接地转发到源,可能因为补充的系统已经指示在服务器602b上的负载很高,或者仅是可选择的实施方式的结果。如箭头18所指示,服务器602d将HTTP请求转发到源601。一接收到响应,全息令牌就被解析,并且需要被发布但服务器602d不是发布者。服务器602d开放用于点对点的令牌传递的连接,或者利用到服务器602b(用于该域的发布者)的已存在的连接,以及如由箭头19所指示将令牌消息传递到服务器602b。在对其令牌缓存进行更新以后,服务器602b将消息传递到所有的订阅者,这时其是服务器602a和602d。如由箭头20所指示,服务器602a接收到该令牌消息,并对其本地令牌的缓存进行更新。如由箭头21所指示,服务器602d接收到该令牌消息,但其将不需要改变它的令牌缓存因为对该消息来讲它是源并且已经更新了缓存。
参考图7,示出了示例的全息网络的快照状态。图7的实施例是非限制性的实施例。在该状态下,所有的全息服务器702a、702b、702d以及702e具有对充当注册者的服务器702c开放的连接。针对一个域的HTTP流量已经从客户端设备被接收到并且已经产生了从服务器702a、702d和702e到服务器702b的开放的HTTP连接,以及从服务器702b到源701的连接;还从服务器702d到源701的HTTP连接也是开放的。为了有助于消息的发布,服务器702a、702d以及702e,具有开放HTTP连接的相同的服务器,也具有到服务器702b的开放的订阅连接,服务器702b已经被分配了用于所讨论的域的发布者的角色。此外,服务器702d具有到服务器702b的开放的对等的连接以便传递针对HTTP的联系的源产生的令牌消息。关于令牌无效的消息通常可以被从接近源的点向外分布到所有订阅的节点,即使它们不是最初在被指定作为发布者的服务器上产生以及必须首先被发送到发布者。令牌消息可以无效先前订阅的节点可能已经保存在缓存中的响应,以及订阅是种状态,其允许缓存被授权以应对期限不定或者非常长的TTL。
在可选择的实施例中,如之前与图2和图4b有关的图示,CDN除了非全息HTTP代理服务器之外还采用全息服务器。
在可选择的实施例中,全息服务器还负责转到源以获取以及缓存使能全息的API响应,存储令牌并对其进行索引,供利用令牌快速的访问以及,尽可能快地接收和传播令牌的无效,并且能够以其他方式如与上文图6有关的描述进行操作。然而,全息服务器位于非全息HTTP代理之后,例如在没有本文教示的好处的情况下填充CDN平台的那种类型。
在仅有非全息HTTP代理服务器的情况下,非存储或者必须重新生效的业务通常具有在图8a中示出的流的类型(其中非全息HTTP代理被简化指定为“代理”)。在图8a-e中使用的符号中,箭头表示请求的方向;内容(在响应中)自左流向右。
基于TTL的缓存的业务具有在图8b中示出的流的类型,依赖于其中发现的被请求的内容有效的、非过期的副本。
在基于TTL缓存的情况下,在图8b中第一实例示出了靠近客户端的缓存的响应;第二实例示出了靠近源的缓存的响应;以及第三实例示出了靠近源的缓存的响应。
现在我们将引入全息节点(以符号“Holo”表示)。当全息服务器被授权缓存时,代理服务器将被要求将响应作为非存储的或者必须重新生效的(即,作为动态的对象)或者作为缓存的对象但是具有诸如几秒的非常小的TTL。全息网络可以被认为类似于分层缓存。这产生了在图8c中示出的流的可能。
在图8c中示出的第一实例,长网络遍历通过全息服务器被避免,该全息服务器具有缓存的文档以及理解到该时刻为止其不知道使其无效的任何的令牌无效;在第二实例中,全息服务器没有有效的文档,并且将请求转发到靠近源的全息服务器以用于第二次尝试(缓存阻塞技术);在第三实例中,长距离的运送是必要的以连接源用于获得授权的回复。
可选择地,在没有全息反向映射的情况下,流如在图8d中所示出的。
如之前,激活的令牌无效断言可以从源发散出去并且利用发布者-订阅者或其他的技术从接收无效的最初全息服务器传播到其他的全息服务器,如在图8e中所示出的。
在全息节点内对消息流进行支持
下文描述的是在全息节点内用于消息传递的示例的套接字的实施方式。出于对可能的设计说明的目的,下文的示例仅旨在是非限制性的示例。
在该实施例中,全息节点被设计为具有套接字操作的集合,该集合对支持全息订阅和无效的消息流有帮助。这些操作能够增强常规的HTTP代理的能力。
图9示出了从单个全息服务器的视角的示例的套接字集合的设计。示出在每个方框上的名称是在全息服务器上使用的名称以识别保存到套接字引用的变量并且对日志行进行标记,该日志行示出了来自套接字的通信/到套接字的通信。每个套接字的类型和功能在下文将被描述。
在该示例的设计中,套接字被专用于有限的功能以及因此两个节点可以同时与多于单个的套接字连接。可选择的设计将考虑这些方框用于表示对其他节点的虚拟的句柄并且针对单个的套接字最多在节点间被开放,具有在相同套接字上携带的多个消息类型;队列、实施以及其他的细节将以合理地明确的方式区分。
该设计基于消息,这暗示了用于消息的开始和结束的帧格式,用于消息的最大长度以及携带源、目的、路由和其他消息传递信息的头部。消息队列库可以被采用以提供该功能层或者可以在自定义的基础上被设计的那些规则。除了下文描述的消息之外,在所有节点间正常地传递的“心跳”消息的子系统应当被实施;失败的心跳应当视为损坏的连接,该连接对订阅者来讲尤其应当被视为非自愿的解除订阅事件。
该设计是,“IN”和“PASS”不是单个的套接字而是套接字的阵列,以零成员为开始以及对正常的操作进行增加和缩减。出于简单解释的原因,其在图9中没有被示出。
全息消息系统可以被设计为运行在与HTTP代理系统相同的系统进程中,或者其可以被设计以单独地运行,其中TCP套接字或者本地操作系统的进程间的通信系统可以被用来从HTTP代理系统传递消息到全息消息系统。用于该进程间链接的至少两种类型的消息是密切相关的;见下文用于到达REP以及APP的消息。
下文是对消息类型的描述。
“REP”是表示接受多连接以及执行请求-回复模式中的服务器侧功能的监听套接字的对象。发送请求的该客户端侧是在相同服务器上的本地HTTP代理系统。
示例的入站请求和随后答复:
来自HTTP代理软件关于域的询问以得知其是否被订阅。
格式:“SUBhostHOP|FINAL”
例如,“SUBexample.comHOP”
回复选项:
格式:“OKPUB|SUBhosttimestamp”
例如,“OKPUBexample.com123456789”
格式:“PENDINGhost”
例如,“PENDINGexample.com”
来自HTTP代理软件针对域的增加的序列号进行询问
格式:“SERIALhost”
例如,“SERIALexample.com”
回复:
格式:“SERIALhostserver_idnumber”
例如,“SERIALexample.com10001234”
“APP”是表示接受多连接以及接收消息,在推-拉模式中扮演“拉”角色的对象。发送请求的“推”侧是在相同服务器上的本地HTTP代理系统。
示例的入站消息:
来自HTTP代理软件的令牌事件应当被处理的通知。
格式:“DATAhosttoken[server_id:number:timestamp]”
例如,“DATAexample.comusers:1231000:1234:123456789”
“REG”是表示从在全息网络上的普通节点到在全息网络上的注册者节点的连接以及在请求-回复模式中执行请求的套接字的对象。该套接字的相反端将连接到在全息注册者上的“RGR”,见(下文)用于消息细节的“RGR”。如果以及当作为普通节点处理数据时,全息注册者将通过“发送”在“REG”上的消息到“RGR”来解决注册者相关的问题并且将该回复作为单独的事件进行处理。
“RGR”是表示接受多连接并从全息节点接收消息以及作为注册者对该消息进行回复的监听套接字的对象。优选,所有的全息节点均有作为注册者起作用的能力。当注册者需要或者通过改变DNS入口或者改变本地配置进行改变时,外部监控系统可以用信号通知所有的全息节点;可选择地,全息节点可以依赖网络内部的故障恢复策略。
示例的入站请求和随后答复:
来自全息节点的询问以请求用于主机的发布者标识,以及如果必要,提供自愿成为发布者的默认动作。
格式:“GEThostHOP|FINALrequester_ip_address”
例如,“GETexample.comHOP1.2.3.4”
回复:
格式:“KNOWNhostip_address”
例如,“KNOWNexample.com1.2.3.4”
格式:“UNKNOWNhost”
例如,“UNKNOWNexample.com”
来自全息节点的清除其发布者的状态的指令。
格式:“CLEARhostrequester_ip_address”
例如,“CLEARexample.com1.2.3.4”
回复:
格式:“OKCLEARhostcleared_ip_address”
例如,“OKCLEARexample.com1.2.3.4”
“OUT”是表示接受来自其他全息节点的多个连接监听套接字的对象,该其他全息节点订阅关于针对其给定节点是发布者的域的消息。全息节点将经由“OUT”对象将令牌消息发送到订阅的节点,其中该“OUT”对象确保消息被分发到相连接的订阅者,可选地进行过滤以限制消息到订阅者指示的域,以便于允许从相同节点发布的所有域通过相同的套接字上被发布。
通过在“OUT”对象中的套接字发送的消息到达在各种其他节点上的在“IN”对象上的套接字。
“IN”是表示连接到全息发布者“OUT”套接字以便以订阅者的角色或发布者-订阅者模式中接收消息的套接字的零个或多个对象的阵列。当订阅按主机消息的需求产生的时候,该订阅按主机消息的需求通常由在“REG”套接字上的活动所确定,“IN”套接字被增加到阵列中,接着是“REP”套接字上的活动。
为了提高网络的扩展性,全息“IN”节点可以直接连接与最终目的点连接的代理节点,因此使得完全连接的网络上的连接总数目比如果每个节点连接到每个其他节点时少。代理节点的组织可以是硬编码或者由动态选择或者其他基于整体或部分配置的自组织策略确定的组织。代理还可以以某些排列与其他的代理进行通信以进一步分隔直接的连接。
如果用于特定主机的HTTP代理活动在某预定长度的时间段内没有被订阅者获悉(以“REP”套接字的方式),那么节点可以基于按主机的消息取消订阅。
示例的入站消息:
来自全息发布者的令牌事件应当被处理的通知。
格式:“DATAhosttoken[server_id:number:timestamp]”
例如,“DATAexample.comusers:1231000:1234:123456789”
来自全息发布者的针对主机的发布将终止的通知。
格式:“DATAhost:ENDpublisher_ip_address”
例如,“DATAexample.com:END1.2.3.4”
“PASS”是零个或多个套接字的阵列,该零个或多个套接字被打开以连接到是发布者的其他的全息节点以便以推-拉模式中“推”的角色传递消息。通过“PASS”传递的消息是起源于发布者的外部但是必须被授权和传播的令牌消息。该套接字的对端将连接到在每个全息发布者上的“FUN”,见(下文)用于消息细节的“FUN”。
如果节点已经将“PASS”套接字对发布者开放但在持续的1800秒(30分钟)时间内还没有针对任意主机的消息被传递到对端,那么到该发布者的“PASS”套接字被关闭并从该阵列中移除。
在全息系统中“PASS”套接字的存在和相应的“FUN”套接字的存在可以在与源有联系的网络的子集中提供扩展性;没有这些套接字,所有的请求优选穿过一个全息服务器到源。套接字“PASS”/”FUN”的出现是允许多个全息节点为了HTTP响应前进到源的一种机制,结果是全息无效保留了穿过网络的路径。
如果全息节点生成令牌消息但当前不知晓针对既定主机的发布者(可能发生在正常的运行中的一种情况,因为在其被该节点查阅的时候,注册者仅收到GET调用以及针对在源之前的最后一个节点的“HOP”状态而不是“FINAL”状态;也可以由非正常的运行引起的情况,例如服务器的重启),该节点将利用“PASS”套接字将消息传递到注册者。注册者本身可以基于到达它的“FUN”套接字的消息起作用;对“FUN”的细节进行理解。
“FUN”是表示接受多连接并在推-拉模式中扮演“拉”角色,以接收来自“PASS”套接字的令牌消息并且通常通过将令牌消息传递到“OUT”套接字对令牌消息起作用的监听套接字的对象。在注册者上的“FUN”套接字可以产生应用级别的消息队列。发布者一被确定,在注册者上的“PASS”套接字就被用于将排队的消息发送到发布者的“FUN”套接字,其中正常运行将继续。
示例的入站消息:
来自全息对等点的令牌消息应当被传播的通知。
格式:“DATAhosttoken[server_id:number:timestamp]”
例如,“DATAexample.comusers:1231000:1234:123456789”
在图10中,示出了示例的网络状态。“H1”、“H2”和“H3”是在全息网络上的节点。该示例是出于说明的目的提供的非限制性的实施例。
在该示例的每个节点内,“PRSO”(代理订阅输出)对象和“PRTO”(代理令牌输出)对象是在HTTP代理软件中被打开的套接字。在多进程代理后台程序上的每个Unix进程上存在一个上述对象,但是出于简化的目的针对每个全息节点只画了单个的框图。“PRSO”是在请求-回复模式中扮演“请求”角色以与全息辅助软件中的“REP”套接字进行通信的进程间套接字。“PRTO”在推-拉模式中扮演“推”角色以与全息消息软件中的“APP”的套接字进行通信的进程间套接字。
在图10中示出的示例,“H3”扮演了注册者的角色。“REG”、“REG2”、“REG3”全部都对“RGR3”开放以便对询问有帮助,到达“REP”套接字的流量使得询问成为必要。“H1”正针对至少一个域发布,以及“H2”和“H3”两者已经看到用于该域的流量,并且随后经由“IN2”和“IN3”进行订阅以接收更新。
此外,在图10中,反向映射系统已经使得“H2”和“H3”两者变成在源之前针对“H1”是发布者(可能与上文所述的相同的域)的域的最后的“跳”,以及因此“PASS2”和“PASS3”对“FUN”是开放的。在“H2”知晓哪个节点服务器是发布者之前,“H2”已经变称域的最后的“跳”,以及因此“H2”也已经将“PASS2”对“FUN3”开放,以便消息被发送到注册者。
将选择和分类的标准以及其他逻辑表示为令牌
在某些实施例中,包括在源响应中的特定令牌可以不表示主关键字或者数据集,而是可以表示与响应构造有关的询问的其他部分。这样的令牌不指示在响应中的实际数据而是指示用于构造响应的选择/分类或者其他的逻辑。
考虑示出了“最新10条记录”的API调用,该“最新的10条记录”可以是最新的提议、消息、交易、注册等,对API域合适的任何东西。随着时间的推移而增加了更多的记录,在数据本身没有直接变化的情况下以及因此在被附加在之前的全息使能的响应上的令牌没有直接变化的情况下,正确的响应可能已经被改变了。数据的响应集已经改变/更新,但数据条目本身可能还没有改变/更新。因此我们引入对出现在API调用中的分类或者选择行为进行说明的令牌。事实上,当API响应已经变成无效时这些令牌被无效,不是因为在API响应内的数据已经改变了,如在之前讨论的示例中的情况一样,而是因为在API响应中数据的分类或选择已经变过时了。因此,在API响应中的数据现在是提供对相同API调用进行响应的“错误的”数据。
让我们以“城市事件”API为例。这是为获取关于发生在波士顿的事件的数据而提供的API。
GET/events/listings?sort=last_modified+desc&filters=category:
(Theater+Dance)&ll=40.766146,-73.99021&api-key=123
Host:api.city-events-example.com
…
X-Hologram-Data:…,events:COUNTSORT
“events:COUNTSORT”令牌被附加到API响应,因为源服务器知道该API调用引用了分类命令。每当在表格中的条目的数量被修改,“events:COUNTSORT”令牌随后便可以被源无效,因此正确地无效依赖于对来自表格的或者数量或者排序的查询的响应。
如本领域的技术人员将理解的是,这样的“选择/分类”令牌可以被用于API调用,该API调用返回了如“最新”事件,或者“趋势的”或者“当前流行的”事件等等的事物。
范围令牌
在某些情况下,应用可以调用API并且提交数据范围,例如落在要求的特定地理区域(例如,如由用户在地图上选择的区域)内返回感兴趣的条目的API。感兴趣的条目可以是待售的房子、特定商店的位置或者感兴趣的地点、拍照的精确地点等等。本文描述的系统和方法可以被应用到这些使用情况。
建立在之前描述的示例性的令牌语法规则之上,在一个实现中,范围令牌可以使用方括号字符,用于定义[A..B]形式的范围语法,其中A和B是由两个句号分隔的整数或者浮点数字并且被方括号包围;例如,以符号“[1.1..3.14]”表示从1.1到3.14(包括1.1和3.14)的范围。该注释被附加到另外的普通的数据令牌,例如,“年龄:[21..50]”用于逻辑上指定从21到50岁(包括21岁和50岁)的年龄。
出于说明的目的,考虑由看起来像下文这样的应用产生的HTTPGET请求:
GET/api/foo…
?lat=1.1234567890,1.1244567890…
&long=1.1234567890,1.1244567890…
&num=25…
…产生…
属性101数据
属性123数据
属性150数据
…
在该示例中,纬度/经度参数表示来自提供的四个坐标的框,以及最多25个结果返回。基于TTL的缓存的解决方案的已知技术不能够很好地缓存该响应因为该位置点是如此地细粒度的。该坐标的小改变将导致缓存遗漏,除非这些特定的坐标在TTL内已经被另一客户端请求。在特定的实施例中,因此,源可以指示针对具体的地理框区(或者其他的数据范围)的结果能够针对类似的框区(或者类似的数据范围)被再利用,如由容许偏差定义的。为了确定是否存在缓存命中,缓存服务器可以解译被请求的URL参数(纬度/经度)以及当在缓存索引中查找匹配的条目时对其应用某容许偏差。
接着,为了将该类型的响应令牌化以用于全息,源服务器可以针对每个属性的标识符附加令牌,当关于该属性的数据改变(例如,价格或者状态改变了)时,该令牌将使得系统能够无效被缓存的响应。为了对在地理框区内出现的新属性或者其他事物进行说明,有关特定坐标的全息令牌可以被使用(例如,latlong:a;b;c;d)。然而,这样的令牌是非常具体的,在试图无效它们时会产生困难。例如,源可能不得不基于被添加到源数据库中的新的属性来确定之前的坐标集合(以及令牌)应当被无效。尽管这样的逻辑能够被开发并能够被放置在源上,例如逻辑无效在感兴趣的新条目的某距离内的所有坐标和令牌,但是,其增加了源的负担并且可能不是在所有的情况下都是准确的。
为了更好地处理该问题,在特定的实施例中,API响应可以用范围令牌被贴上标签,该范围令牌反映了该响应依赖的数据的全部范围。在前述的示例中,具有这样令牌的响应可以是:
GET/api/foo…
?lat=1.1234567890,1.1244567890…
&long=1.1234567890,1.1244567890…
&num=25…
…产生…
…
X全息数据:
geo:[1.1234567890..1.1244567890][1.1234567890..1.1244567890],属
性:101,属性:123,属性:150
…
属性101
属性123
属性150
源可以通过对应特定坐标的令牌使之无效,新属性(或者其他感兴趣的新条目)位于该特定的坐标。例如,假设新属性160被加入与属性101相邻并且在之前请求中的坐标定义的框区内。无效的断言可以如下:
POST/hologram/invalidateHTTP/1.1
…
tokens=geo:[1.1234567899][1.1234567899]
在这个案例中,由无效断言描述的特定位置被全息服务器解译为在范围内的两个特定点,一个纬度和一个经度。如上文的示例,利用纬度和经度范围注释的响应(该纬度和经度范围包括在无效断言中的特定位置)在缓存中被识别并且被无效。
通过这种方式,可以利用范围令牌注释响应,范围令牌指示响应将依赖的数据值的范围。当在数据范围内的事件发生在源上的时,源可以通过就该范围内的特定数据点的无效断言使之无效。
该方法可以适用于各种数据和情况,其中API基于请求中的数据范围返回信息。例如,除上述以外,可以利用范围注释返回针对特定的日期或时间范围的事件或者电视节目或者类似的API,并且如果有新事件被添加,或者事件的时间表被重新安排,那么覆盖该范围的响应可以通过上文的机制被无效。在这种情况下,令牌可能包括针对在范围内的点的子范围的无效,例如,通过断言在更大时间表内的改变的TV节目的时间范围现在是无效的。
系统的潜在优势
下文是利用本公开的教示可以得到的一些益处,但没有必要表述所有的这些益处以及对这些潜在益处的说明不意味着取得这些益处是本文的教示的实践所需要的或者必需的。
潜在优势:流量的本地化
与“非存储”模式相比较,本文描述的技术可以较少地产生内容流量对平台的遍历,并且产生到平台边缘区域的本地化的用于API的内容流量。当请求是对全息服务器的入站时,可以查找URL并且服务该文档。
任意的非全息代理可以被用于在全息代理之前提供关于API响应的常规的TTL缓存的附加层。可以使用在秒级范围的小的TTL。对于极其高流量的场景这将是有意义的,其中面对大量的公共API流量需要广泛部署的代理。
潜在优势:源卸载
来自源服务器的卸载可以针对大段的API响应被完成,同时它们表示的数据记录是“不变的”。
潜在优势:时延
降低客户端的时延可以针对大段的API响应被完成,同时它们表示的数据记录是“不变的”。“距离”源通常有数百秒远的客户端现在可以发现自己更频繁地从位于更近的全息服务器接收答复,这为终端用户压低了时延。
在线存在的协调更新
本文的教示可以被应用到除了API内容外的各种类型的内容,并且可以通过内容提供商的在线存在支持协调内容的更新。通过说明的方式,假设CDN内容提供商希望通过它的在线存在提供对“头条新闻”的反馈。用于“头条新闻”内容的数据可以在文档(例如,XML文档)中被实现,该文档被内容提供商的内容管理系统取走用于包括在web页面上,该web页面可以通过内容服务商的移动app获得用于显示给正在使用该app的终端用户,和/或经由在“contentprovider.com/API/topnews”上的API适于其他的客户端。利用本文的教示,来自这些系统中的任意系统的响应(例如,来自web服务器上的html页面,来自服务器处理移动app的移动app响应,和/或API响应)可以利用用于该“头条消息”文档的令牌被贴上标签。当该文档被更新时,令牌被无效,导致通过在线存在的不同的响应中的每个响应根据各自的缓存被无效,并且推动了协调的实时更新。
基于计算机的实施例
本文描述的客户端、服务器以及其他的计算机设备可以利用常规的计算机系统被实施,该常规的计算机系统如由本文的教示所修改的,具有上文描述的功能特征,该功能特征在专用硬件中、由用于特殊用途的存储在其中的软件配置的通用硬件中、或者两者的组合中被实现。
软件可以包括一个或几个分立的程序。特定的功能可以包括任何特定的模块、方法、执行线程或者其他的这样的程序的结构的部分。通常,上文描述的每个功能可以被实施为在一个或多个微处理器上可执行的计算机代码(即,计算机指令的集合)以提供特殊用途的机器。该代码可以利用常规的装置被执行,例如,在计算机中的微处理器、数字数据处理设备或者其他的计算机装置,如由本文的教示所修改的。在一个实施例中,这样的软件可以用程序语言被实现,该程序语言连同代理运行在标准英特尔硬件平台上,该标准英特尔平台运行了诸如Linux的操作系统。该功能可以被建立在代理代码中,或者其可以作为代码的辅助被执行。
尽管在某些情况下上文阐述了由特定实施例实现的特定序列的操作,应当理解的是该序列是示例性的以及它们可以利用不同的序列、组合的序列等等被实现。此外,某些功能可以以特定的指令、程序语句、代码段等等被组合或者共享。在本说明书中对特定的实施例的参考指示了所描述的实施例可以包括特定特征、结构或特性,但是每个实施例可以不必包括该特定特征、结构或特性。
图11是示出了在其中可以实现本发明的实施例的计算机系统1100中的硬件的框图。计算机系统1100可以体现为客户端、服务器、个人计算机、工作站、平板电脑、无线设备、移动设备、网络设备、路由器、集线器、网关或者其他的设备。
计算机系统1100包括耦合到总线1101的微处理器1104。在某些系统中,可以采用多微处理器和/或微处理器核。计算机系统1100还包括诸如随机存取存储器(RAM)或其它存储设备的主存储器1110,该主存储器1110被耦合到总线1101以用于存储被微处理器1104执行的信息和指令。只读存储器(ROM)1108被耦合到总线1101以存储用于微处理器1104的信息和指令。作为存储器的另一种形式,非易失性存储设备1106(例如磁盘、固态存储器(例如,闪存存储器)或者光盘)被提供以及被耦合到总线1101以用于存储信息和指令。其他的专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者电路可以被包括在计算机系统1100中以实现本文描述的功能。
尽管计算机系统1100通常经由通信接口1116被远程管理,为了本地管理目的,系统1100可以有一个外围接口1112,通信地耦合计算机系统1100到用户显示器1114和输入设备1115(例如,键盘,鼠标,触控器,触摸屏),用户显示器1114显示软件在计算机系统上执行的输出,输入设备1115把用户输入和指令传递到计算机系统1100。外围接口1112可以包括接口电路和用于本地总线(例如通用串行总线(USB)或其它通信链路)的逻辑。
计算机系统1100被耦合到通信接口1116,通信接口1116提供了在系统总线1101和外部通信链路之间的连接。通信接口1116提供了网络链路1118。通信接口1116可以表示以太网或其它网络接口卡(NIC)、无线接口、调制解调器、光学接口、或其他类型的输入/输出接口。
网络链路1118通过一个或多个网络向其他设备提供数据通信。这样的设备包括作为局域网(LAN)1126的部分的其他的计算机系统。此外,网络链路1118提供了经由因特网服务提供商(ISP)1120到因特网1122的链接。反过来,因特网1122可以提供到其他计算系统(例如远程服务器1130和/或远程客户端1131)的链接。网络链路1118和这些网络可以使用分组交换、电路交换或其它数据传输的方法发送数据。
在运行中,计算机系统1100可以实现本文描述的功能,该功能是微处理器执行代码的结果。这样的代码可以被从非暂时性计算机可读介质(例如,存储器1110、ROM1108或存储设备1106)中读取或存储在非暂时性计算机可读介质上。非暂时性计算机可读介质的其他形式包括磁盘、磁带、磁介质、CD-ROM、光介质、RAM、PROM、EPROM以及EEPROM。任何其他的非暂时性计算机可读介质也可以被使用。执行的代码也可以从网络链路1118中读取(例如,在接口缓冲区中的下列的存储,本地存储器,或其它电路)。
客户端设备可以是常规台式计算机,笔记本电脑或者其他运行web浏览器或其他的渲染引擎的可接入的因特网机器,但是如上文所提到的,客户端也可以是移动设备。任何无线客户端设备可以被利用,例如,手机、寻呼机、个人数字助理(PDA,例如,具有GPRSNIC)、具有智能手机客户端的移动计算机,平板电脑等等。可以在其中实践本技术的其他移动设备包括能够使用无线协议以无线的方式接收和发送数据的任何访问协议支持的设备(例如,基于iOSTM的设备,基于AndroidTM的设备,其他的基于mobile-OS的设备等等)。典型的无线协议包括:WiFi、GSM/GPRS、CDMA或者WiMax。这些协议实现了ISO/OSI物理层数据链路层(层1和2),在其上建立了传统的包括IP、TCP、SSL/TLS和HTTP的网络协议栈。WAP(无线接入协议)还提供了一组网络通信层(例如,WDP、WTLS、WTP)以及此外利用GSM和CDMA无线网络使用的相应的功能。
在代表性的实施例中,移动设备是工作在用于GSM网络的数据技术的GPRS(通用分组无线业务)上的移动电话。通常,如本文所使用的移动设备是3G-(或下一代)兼容设备,其包括用户身份识别模块(SIM)(其是携带用户专用信息的智能卡)、移动装置(例如,无线电和相关信号处理设备)、人机界面接口(MMI),以及到外部设备的一个或多个接口(例如,计算机、PDA等等)。本文所公开的技术不限于使用特定接入协议的移动设备的使用。移动装置通常还支持诸如Wi-Fi的无线局域网络(WLAN)技术。WLAN是基于IEEE802.11标准。本文所公开的教示不限于用于移动设备通信的任何特定的模式或应用。
应当理解的是,前文已经呈现了不应被解释为限制的本发明的实施例。例如,出于说明的目的上文已经呈现了特定的语言、语法和指令,以及它们不应当被解释为限制性的。期待的是,鉴于本公开以及根据本公开的范围和精神本领域的技术人员将认识到其他的可能的实施方式。所附的权利要求定义了请求保护的主题。
值得注意的是,考虑到讨论的主题的本质,本文出现的商标属于其各自所有者的财产并且仅用于识别和描述性的目的,并不意味着以任何方式地认可或者从属关系。
Claims (29)
1.一种计算机实施的方法,其是在服务器中可操作的,所述服务器具有形成存储器和一个或多个处理器的电路,所述存储器保存用于由所述一个或多个处理器执行的指令,所述方法包括:
接收客户端请求;
响应于所述客户端请求,生成到远程源的转发请求;
从所述远程源接收对所述转发请求的响应,所述响应包括响应内容和至少一个令牌;
本地缓存所述响应内容和所述至少一个令牌;
将所述响应内容提供给客户端以响应所述客户端请求;
接收指示所述至少一个令牌是无效的消息;以及
将所缓存的响应内容视为对于服务以响应随后的客户端请求是无效的,因为所述响应内容与在所述消息中被指示为无效的所述至少一个令牌相关联。
2.根据权利要求1所述的方法,其中所述消息包括所述至少一个令牌是无效的显式断言。
3.根据权利要求1所述的方法,其中所述消息包括所述至少一个令牌是无效的隐式断言。
4.根据权利要求1所述的方法,其中所述至少一个令牌包括绰号和序列号或者时间戳,以及所述消息指示所述至少一个令牌是无效的,因为所述消息包括所述绰号和不同的序列号或者时间戳。
5.根据权利要求1所述的方法,其中所述消息接收自所述远程源。
6.根据权利要求1所述的方法,其中所述服务器是CDN中的多个节点中的一个节点,以及所述消息接收自所述CDN中的节点。
7.根据权利要求1所述的方法,其中所述客户端请求包括来自应用程序接口(API)的针对服务的请求,以及所述响应是API响应。
8.根据权利要求1所述的方法,其中所述远程源包括与内容提供商关联的一个或者多个源服务器。
9.根据权利要求1所述的方法,其中所述服务器是CDN中的代理服务器。
10.根据权利要求1所述的方法,其中所述至少一个令牌对应于在所述远程源处的数据库中的被用于构造所述响应的数据。
11.根据权利要求1所述的方法,其中所述至少一个令牌对应于在所述远程源处的数据库中的主关键字。
12.根据权利要求1所述的方法,其中所述至少一个令牌对应于数据选择或者分类功能,该数据选择或者分类功能由所述远程源使用来对用于构造所述响应的数据进行选择或者分类。
13.根据权利要求1所述的方法,其中所述令牌表示在所述源处的数据结构,以及所述消息在所述数据结构中的数据更新之后被接收。
14.根据权利要求1所述的方法,其中所述至少一个令牌对应于在所述源处的被用于构造所述响应的文件。
15.根据权利要求1所述的方法,其中所述至少一个令牌对应于在所述远程源处的存储器对象缓存系统中的关键字。
16.根据权利要求1所述的方法,还包括:
发送多个其他的转发请求;
接收多个其他的响应,所述多个其他的响应中的至少一些响应包括所述至少一个令牌;
缓存所述多个其他的响应;
在接收所述消息以后,将所述其他的响应中包含所述至少一个令牌的每个响应视为对于服务以响应客户端请求是无效的。
17.根据权利要求1所述的方法,其中所述至少一个令牌包括绰号和数据范围的标识,以及所述消息包括所述绰号和在所述数据范围内的至少一个特定数据值的标识。
18.根据权利要求1所述的方法,其中所述响应包括响应内容以及容纳所述至少一个令牌的头部。
18.一种装置,其包括:
微处理器和存储由一个或者多个微处理器执行的计算机程序指令的存储器,所述计算机程序指令的执行使得所述装置:
接收客户端请求;
响应于所述客户端请求,生成到远程源的转发请求;
从所述远程源接收对所述转发请求的响应,所述响应包括响应内容以及至少一个令牌;
将所述响应内容以及所述至少一个令牌缓存到所述装置的本地缓存中;
将所述响应内容提供给客户端以响应所述客户端请求;
接收指示所述至少一个令牌是无效的消息;以及
将所缓存的响应数据视为对于服务以响应随后的客户端请求是无效的,因为所述响应数据与在所述消息中被指示为无效的所述至少一个令牌相关联。
19.一种计算机实施的方法,所述方法是在服务器中可操作的,所述服务器具有形成存储器和一个或多个处理器的电路,所述存储器保存用于由所述一个或多个处理器执行的指令,所述方法包括:
接收具有附加至其的一个或多个令牌的内容;
缓存所述内容以及所述一个或多个令牌;
接收针对内容的客户端请求;
确定缓存的内容是对所述请求的响应;
确定所缓存的一个或多个令牌中的每一个令牌是否有效;
当确定所述一个或多个缓存的令牌中的所有令牌有效时,将所缓存的响应提供给客户端;
当确定所述一个或多个缓存的令牌中的至少一个令牌无效时,向远程源发送对所述内容的转发请求。
20.根据权利要求19所述的方法,还包括在缓存被附加到所述响应的所述一个或多个令牌之前,对所述一个或多个令牌进行修饰。
21.根据权利要求19所述的方法,其中,确定随所述响应一起被接收的一个或多个被缓存的令牌中的一个指定的令牌是否有效包括:将所述指定的令牌的时间戳和序列号中的任一者与存储在当前令牌的缓存中的相应令牌的对应的时间戳或序列号进行比较。
22.根据权利要求19所述的方法,其中所述客户端请求被指向URL,以及,对所述缓存的内容是对所述请求的响应的确定是基于对与所述URL的至少一部分相对应的缓存的内容进行定位。
23.根据权利要求19所述的方法,其中所述客户端请求被指向URL,以及,对所述缓存的内容是对所述请求的响应的确定是基于对与所述URL的至少一部分相对应的缓存的内容进行定位和取自所述客户端请求的另外的值。
24.一种系统,包括:
由CDN服务提供商运营的多个分布式服务器,所述多个分布式服务器从客户端接收对经由应用程序接口(API)可访问的内容的请求;
响应于来自客户端的所述请求,所述多个分布式服务器生成到与API内容提供商关联的至少一个源服务器的各自的转发请求;
所述多个分布式服务器接收来自所述至少一个源服务器的各自的API响应,所述各自的API响应包括响应数据以及一个或多个令牌;
所述多个分布式服务器在各自的本地缓存中存储所述各自的API响应;
所述至少一个源服务器生成指向所述一个或多个令牌中的至少一个令牌的无效并且将所述无效发送到由所述CDN服务提供商运营的至少一台机器;
所述至少一台机器将所述无效发送到所述多个分布式服务器;
其中,作为接收到所述无效的结果,所述多个分布式服务器中的每个分布式服务器将与所述至少一个令牌相关联的本地存储的API响应视为对于服务以响应随后的客户端请求是无效的。
25.根据权利要求24所述的系统,其中所述至少一个源服务器通过获得来自数据库的数据和包括对应于所述数据库中的所述数据的一个或多个令牌来生成指定的API响应,所述指定的API响应根据所述数据库中的所述数据来生成。
26.根据权利要求24所述的系统,其中所述至少一个源服务器基于支持所述API的数据库中的指定数据的变化生成指定的无效,其中所述无效包括对应于发生变化的所述数据的令牌。
27.根据权利要求24所述的系统,其中所述多个分布式服务器包括多个缓存代理服务器。
28.根据权利要求24所述的系统,其中所述至少一个源服务器通过获得来自数据库的数据和包括对应于数据选择或分类功能的一个或多个令牌来生成指定的API响应,所述数据选择或分类功能由所述至少一个源服务器用来对所述响应数据进行选择或分类以产生所述指定的API响应。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/046,884 | 2013-10-04 | ||
US14/046,884 US9648125B2 (en) | 2013-10-04 | 2013-10-04 | Systems and methods for caching content with notification-based invalidation |
PCT/US2014/058914 WO2015051184A1 (en) | 2013-10-04 | 2014-10-02 | Systems and methods for caching content with notification-based invalidation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105684387A true CN105684387A (zh) | 2016-06-15 |
CN105684387B CN105684387B (zh) | 2019-04-12 |
Family
ID=52777867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480054487.XA Active CN105684387B (zh) | 2013-10-04 | 2014-10-02 | 用于利用基于通知的无效缓存内容的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (4) | US9648125B2 (zh) |
EP (1) | EP3053323B1 (zh) |
JP (1) | JP6438037B2 (zh) |
CN (1) | CN105684387B (zh) |
WO (1) | WO2015051184A1 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789344A (zh) * | 2017-01-19 | 2017-05-31 | 上海帝联信息科技股份有限公司 | 数据传输方法、系统、cdn网络及客户端 |
CN107689969A (zh) * | 2016-08-03 | 2018-02-13 | 华为技术有限公司 | 一种缓存策略的确定方法及装置 |
CN109063088A (zh) * | 2018-07-26 | 2018-12-21 | 阿里巴巴集团控股有限公司 | 序列号的生成方法及装置 |
CN110086756A (zh) * | 2018-01-26 | 2019-08-02 | 沪江教育科技(上海)股份有限公司 | 一种验证方法、终端以及服务器 |
CN110663050A (zh) * | 2017-06-06 | 2020-01-07 | 国际商业机器公司 | 用于认知应用的边缘缓存 |
CN111936993A (zh) * | 2018-02-16 | 2020-11-13 | 瑞典爱立信有限公司 | 保护在核心网络域之间传送的消息 |
CN113709257A (zh) * | 2021-10-09 | 2021-11-26 | 天翼物联科技有限公司 | 消息缓存超期监控方法、装置、设备及介质 |
CN114936192A (zh) * | 2022-07-19 | 2022-08-23 | 成都新橙北斗智联有限公司 | 一种文件动态压缩混淆和双向缓存方法及系统 |
CN115378878A (zh) * | 2021-05-21 | 2022-11-22 | 北京字跳网络技术有限公司 | Cdn的调度方法、装置、设备及存储介质 |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2271984A4 (en) | 2008-04-28 | 2012-01-18 | Salesforce Com Inc | OBJECT-BASED SYSTEM FOR CREATING AND MANAGING WEB SITES AND THEIR CONTENT |
US8935360B2 (en) | 2010-12-03 | 2015-01-13 | Salesforce.Com, Inc. | Techniques for metadata-driven dynamic content serving |
US9654579B2 (en) | 2012-12-21 | 2017-05-16 | Akamai Technologies, Inc. | Scalable content delivery network request handling mechanism |
US9736271B2 (en) | 2012-12-21 | 2017-08-15 | Akamai Technologies, Inc. | Scalable content delivery network request handling mechanism with usage-based billing |
US9503485B1 (en) * | 2013-03-01 | 2016-11-22 | Whatsapp Inc. | Connecting communicating devices in a multi-server communication system |
US9813515B2 (en) * | 2013-10-04 | 2017-11-07 | Akamai Technologies, Inc. | Systems and methods for caching content with notification-based invalidation with extension to clients |
US9648125B2 (en) * | 2013-10-04 | 2017-05-09 | Akamai Technologies, Inc. | Systems and methods for caching content with notification-based invalidation |
US9641640B2 (en) * | 2013-10-04 | 2017-05-02 | Akamai Technologies, Inc. | Systems and methods for controlling cacheability and privacy of objects |
US9497283B2 (en) * | 2013-12-13 | 2016-11-15 | Oracle International Corporation | System and method for providing data interoperability in a distributed data grid |
US9549040B2 (en) | 2014-03-12 | 2017-01-17 | Instart Logic, Inc. | First cache purge optimization handling of unavailable nodes |
WO2015144234A1 (en) * | 2014-03-27 | 2015-10-01 | Hewlett-Packard Development Company, L.P. | Scheduling downloads |
US9306939B2 (en) | 2014-05-30 | 2016-04-05 | Oracle International Corporation | Authorization token cache system and method |
US10346186B2 (en) * | 2014-12-11 | 2019-07-09 | Rohan Kalyanpur | System and method for simulating internet browsing system for user without graphical user interface |
US10353895B2 (en) * | 2015-11-24 | 2019-07-16 | Sap Se | Atomic visibility switch for transactional cache invalidation |
CN105392021A (zh) * | 2015-12-23 | 2016-03-09 | 武汉鸿瑞达信息技术有限公司 | 一种海量视频推送系统的推送方法及系统 |
US10965735B2 (en) * | 2016-02-14 | 2021-03-30 | Bentley J. Olive | Methods and systems for facilitating information and expertise distribution via a communications network |
US10007607B2 (en) | 2016-05-31 | 2018-06-26 | Salesforce.Com, Inc. | Invalidation and refresh of multi-tier distributed caches |
US10102133B2 (en) | 2016-05-31 | 2018-10-16 | Salesforce.Com, Inc. | Reducing latency by caching derived data at an edge server |
US10469526B2 (en) | 2016-06-06 | 2019-11-05 | Paypal, Inc. | Cyberattack prevention system |
US10375154B2 (en) | 2016-07-29 | 2019-08-06 | Microsoft Technology Licensing, Llc | Interchangeable retrieval of content |
US10693947B2 (en) * | 2016-09-09 | 2020-06-23 | Microsoft Technology Licensing, Llc | Interchangeable retrieval of sensitive content via private content distribution networks |
US10585966B2 (en) * | 2017-02-01 | 2020-03-10 | Facebook, Inc. | Systems and methods for accessing content |
JP6834743B2 (ja) | 2017-04-20 | 2021-02-24 | 富士通株式会社 | 更新処理プログラム、更新処理装置、及び更新処理方法 |
US10445157B2 (en) * | 2017-05-18 | 2019-10-15 | Sap Se | Concurrent services caching |
US10439925B2 (en) | 2017-12-21 | 2019-10-08 | Akamai Technologies, Inc. | Sandbox environment for testing integration between a content provider origin and a content delivery network |
JP2019185512A (ja) * | 2018-04-13 | 2019-10-24 | 富士通株式会社 | 制御方法、制御プログラム、及び情報処理装置 |
US11044090B2 (en) * | 2018-07-24 | 2021-06-22 | ZenDesk, Inc. | Facilitating request authentication at a network edge device |
US11115479B2 (en) | 2019-01-10 | 2021-09-07 | Google Llc | Enhanced online privacy |
CN110062006A (zh) * | 2019-05-08 | 2019-07-26 | 福州福昕网络技术有限责任公司 | 一种客户端高并发鉴权方法和系统 |
US11190514B2 (en) * | 2019-06-17 | 2021-11-30 | Microsoft Technology Licensing, Llc | Client-server security enhancement using information accessed from access tokens |
US11082526B2 (en) * | 2019-08-19 | 2021-08-03 | International Business Machines Corporation | Optimizing large parameter passing in a service mesh |
US20210092199A1 (en) * | 2019-09-24 | 2021-03-25 | International Business Machines Corporation | Cachability of single page applications |
US11936950B2 (en) * | 2019-12-02 | 2024-03-19 | Comcast Cable Communications, Llc | Methods and systems for content delivery |
US20210173888A1 (en) | 2019-12-08 | 2021-06-10 | Akamai Technologies Inc. | Proxy server caching of database content |
US11689455B2 (en) | 2020-05-28 | 2023-06-27 | Oracle International Corporation | Loop prevention in virtual layer 2 networks |
US11444931B1 (en) * | 2020-06-24 | 2022-09-13 | F5, Inc. | Managing name server data |
US11743513B2 (en) | 2020-10-27 | 2023-08-29 | Akamai Technologies, Inc. | Measuring and improving origin offload and resource utilization in caching systems |
US20220210063A1 (en) | 2020-12-30 | 2022-06-30 | Oracle International Corporation | Layer-2 networking information in a virtualized cloud environment |
US11310334B1 (en) * | 2021-01-27 | 2022-04-19 | Bby Solutions, Inc. | Automatic smart propagation of caching directives |
US11671355B2 (en) | 2021-02-05 | 2023-06-06 | Oracle International Corporation | Packet flow control in a header of a packet |
US11777897B2 (en) | 2021-02-13 | 2023-10-03 | Oracle International Corporation | Cloud infrastructure resources for connecting a service provider private network to a customer private network |
EP4292254A1 (en) * | 2021-02-13 | 2023-12-20 | Oracle International Corporation | Invalidating cached flow information in a cloud infrastructure |
US20220263754A1 (en) * | 2021-02-13 | 2022-08-18 | Oracle International Corporation | Packet flow in a cloud infrastructure based on cached and non-cached configuration information |
US11343348B1 (en) | 2021-04-12 | 2022-05-24 | Akamai Technologies, Inc. | Real-time message delivery and update service in a proxy server network |
US11343344B1 (en) | 2021-04-23 | 2022-05-24 | Akamai Technologies, Inc. | Proxy server entity transfer modes |
CN115314718B (zh) * | 2021-05-07 | 2023-07-14 | 北京字节跳动网络技术有限公司 | 一种直播数据处理方法、装置、设备及介质 |
US11917012B2 (en) * | 2021-06-30 | 2024-02-27 | Dell Products L.P. | System and method for a real-time application programming interface broker service across cloud service providers |
US11880303B2 (en) * | 2021-12-30 | 2024-01-23 | Yahoo Ad Tech Llc | Content cache invalidation using cache tags |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001006384A1 (en) * | 1999-07-20 | 2001-01-25 | Cyberstar, L.P. | Method and apparatus for internet cache content delivery via a data distribution system |
US20030051100A1 (en) * | 2001-09-12 | 2003-03-13 | International Business Machines Corporation | Content caching with special handling of multiple identical requests for content |
US20030188106A1 (en) * | 2002-03-26 | 2003-10-02 | At&T Corp. | Cache validation using rejuvenation in a data network |
US20040010621A1 (en) * | 2002-07-11 | 2004-01-15 | Afergan Michael M. | Method for caching and delivery of compressed content in a content delivery network |
CN1898653A (zh) * | 2003-10-22 | 2007-01-17 | 英特尔公司 | 用于互连网络上高效的有序储存的方法和装置 |
US20100205458A1 (en) * | 2001-07-13 | 2010-08-12 | O'connell Jr Conleth S | Method and system for file-system based caching |
Family Cites Families (106)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5852747A (en) | 1995-09-08 | 1998-12-22 | International Business Machines Corporation | System for awarding token to client for accessing first data block specified in client request without interference due to contention from other client |
GB2305271A (en) * | 1995-09-15 | 1997-04-02 | Ibm | Proxy object recovery in an object-oriented environment |
US6012126A (en) * | 1996-10-29 | 2000-01-04 | International Business Machines Corporation | System and method for caching objects of non-uniform size using multiple LRU stacks partitions into a range of sizes |
US6026413A (en) * | 1997-08-01 | 2000-02-15 | International Business Machines Corporation | Determining how changes to underlying data affect cached objects |
US6122666A (en) * | 1998-02-23 | 2000-09-19 | International Business Machines Corporation | Method for collaborative transformation and caching of web objects in a proxy network |
US6108703A (en) | 1998-07-14 | 2000-08-22 | Massachusetts Institute Of Technology | Global hosting system |
US6249844B1 (en) | 1998-11-13 | 2001-06-19 | International Business Machines Corporation | Identifying, processing and caching object fragments in a web environment |
US7225264B2 (en) * | 1998-11-16 | 2007-05-29 | Softricity, Inc. | Systems and methods for delivering content over a computer network |
WO2001013578A1 (en) | 1999-08-16 | 2001-02-22 | Orblynx, Inc. | Internet caching system |
US8756342B1 (en) | 2000-02-07 | 2014-06-17 | Parallel Networks, Llc | Method and apparatus for content synchronization |
US6820133B1 (en) | 2000-02-07 | 2004-11-16 | Netli, Inc. | System and method for high-performance delivery of web content using high-performance communications protocol between the first and second specialized intermediate nodes to optimize a measure of communications performance between the source and the destination |
US6718328B1 (en) * | 2000-02-28 | 2004-04-06 | Akamai Technologies, Inc. | System and method for providing controlled and secured access to network resources |
US6757708B1 (en) * | 2000-03-03 | 2004-06-29 | International Business Machines Corporation | Caching dynamic content |
US7240100B1 (en) * | 2000-04-14 | 2007-07-03 | Akamai Technologies, Inc. | Content delivery network (CDN) content server request handling mechanism with metadata framework support |
US6996616B1 (en) | 2000-04-17 | 2006-02-07 | Akamai Technologies, Inc. | HTML delivery from edge-of-network servers in a content delivery network (CDN) |
US7752258B2 (en) * | 2000-08-22 | 2010-07-06 | Akamai Technologies, Inc. | Dynamic content assembly on edge-of-network servers in a content delivery network |
US7010578B1 (en) * | 2000-09-21 | 2006-03-07 | Akamai Technologies, Inc. | Internet content delivery service with third party cache interface support |
US7111057B1 (en) | 2000-10-31 | 2006-09-19 | Akamai Technologies, Inc. | Method and system for purging content from a content delivery network |
US7043524B2 (en) | 2000-11-06 | 2006-05-09 | Omnishift Technologies, Inc. | Network caching system for streamed applications |
US6567893B1 (en) * | 2000-11-17 | 2003-05-20 | International Business Machines Corporation | System and method for distributed caching of objects using a publish and subscribe paradigm |
WO2002044915A1 (en) | 2000-11-30 | 2002-06-06 | Appfluent Technology, Inc. | System and method for delivering dynamic content |
US20020138437A1 (en) | 2001-01-08 | 2002-09-26 | Lewin Daniel M. | Extending an internet content delivery network into an enterprise environment by locating ICDN content servers topologically near an enterprise firewall |
US7149807B1 (en) | 2001-02-02 | 2006-12-12 | Akamai Technologies, Inc. | Control and communication infrastructure (CCI) for selecting a transport mechanism to transport data to one or more servers in a content delivery network based on the size of the data, together with frequency and loss tolerance with respect to transport of the data |
EP1388073B1 (en) | 2001-03-01 | 2018-01-10 | Akamai Technologies, Inc. | Optimal route selection in a content delivery network |
US20020143798A1 (en) | 2001-04-02 | 2002-10-03 | Akamai Technologies, Inc. | Highly available distributed storage system for internet content with storage site redirection |
US20030004998A1 (en) | 2001-06-29 | 2003-01-02 | Chutney Technologies, Inc. | Proxy-based acceleration of dynamically generated content |
US6918013B2 (en) * | 2001-07-16 | 2005-07-12 | Bea Systems, Inc. | System and method for flushing bean cache |
JP2003030087A (ja) * | 2001-07-17 | 2003-01-31 | Fujitsu Ltd | コンテンツ配信ネットワークシステム |
US7200681B1 (en) * | 2001-07-30 | 2007-04-03 | Akamai Technologies, Inc. | Edge side components and application programming environment for building and delivering highly distributed heterogenous component-based web applications |
US7103714B1 (en) * | 2001-08-04 | 2006-09-05 | Oracle International Corp. | System and method for serving one set of cached data for differing data requests |
US20030069828A1 (en) | 2001-10-04 | 2003-04-10 | Eastman Kodak Company | System for and managing assets using priority tokens |
US6883068B2 (en) * | 2001-12-17 | 2005-04-19 | Sun Microsystems, Inc. | Methods and apparatus for implementing a chche replacement scheme |
US7412535B2 (en) * | 2001-12-19 | 2008-08-12 | International Business Machines Corporation | Method and system for caching fragments while avoiding parsing of pages that do not contain fragments |
US7127713B2 (en) | 2002-01-11 | 2006-10-24 | Akamai Technologies, Inc. | Java application framework for use in a content delivery network (CDN) |
US7607062B2 (en) | 2002-03-25 | 2009-10-20 | Akamai Technologies, Inc. | System for fast recovery from losses for reliable data communication protocols |
US7133905B2 (en) | 2002-04-09 | 2006-11-07 | Akamai Technologies, Inc. | Method and system for tiered distribution in a content delivery network |
US7467233B2 (en) * | 2002-07-30 | 2008-12-16 | Akamai Technologies, Inc. | Edge side components and application programming environment for building and delivering highly distributed heterogenous component-based web applications |
CN1221898C (zh) * | 2002-08-13 | 2005-10-05 | 国际商业机器公司 | 刷新网络代理高速缓存服务器对象的系统和方法 |
US7032067B2 (en) * | 2002-12-17 | 2006-04-18 | Activcard | Security token sharable data and synchronization cache |
EP1604305A2 (en) | 2003-03-17 | 2005-12-14 | British Telecommunications Public Limited Company | Web content adaption process and system |
US20040193656A1 (en) | 2003-03-28 | 2004-09-30 | Pizzo Michael J. | Systems and methods for caching and invalidating database results and derived objects |
US7209929B2 (en) | 2003-04-17 | 2007-04-24 | Salesforce.Com, Inc. | Java object cache server for databases |
US7624126B2 (en) | 2003-06-25 | 2009-11-24 | Microsoft Corporation | Registering for and retrieving database table change information that can be used to invalidate cache entries |
US20050177377A1 (en) * | 2003-07-21 | 2005-08-11 | Bae Systems Plc | Generation of subsystems |
GB0318197D0 (en) | 2003-08-02 | 2003-09-03 | Koninkl Philips Electronics Nv | Copy-protecting applications in a digital broadcasting system |
US7600230B2 (en) | 2004-07-06 | 2009-10-06 | Oracle International Corporation | System and method for managing security meta-data in a reverse proxy |
US7676835B2 (en) * | 2004-08-31 | 2010-03-09 | International Business Machines Corporation | System and method for regulating access to objects in a content repository |
US7990998B2 (en) | 2004-12-22 | 2011-08-02 | Qualcomm Incorporated | Connection setup using flexible protocol configuration |
US8402525B1 (en) * | 2005-07-01 | 2013-03-19 | Verizon Services Corp. | Web services security system and method |
US7694082B2 (en) * | 2005-07-29 | 2010-04-06 | International Business Machines Corporation | Computer program and method for managing resources in a distributed storage system |
GB0517113D0 (en) * | 2005-08-20 | 2005-09-28 | Ibm | Methods, apparatus and computer programs for data communication efficiency |
CN101401341B (zh) * | 2005-11-18 | 2016-06-01 | 安全第一公司 | 安全数据解析方法和系统 |
US7673135B2 (en) * | 2005-12-08 | 2010-03-02 | Microsoft Corporation | Request authentication token |
US7660296B2 (en) | 2005-12-30 | 2010-02-09 | Akamai Technologies, Inc. | Reliable, high-throughput, high-performance transport and routing mechanism for arbitrary data flows |
US8447837B2 (en) * | 2005-12-30 | 2013-05-21 | Akamai Technologies, Inc. | Site acceleration with content prefetching enabled through customer-specific configurations |
US8301839B2 (en) | 2005-12-30 | 2012-10-30 | Citrix Systems, Inc. | System and method for performing granular invalidation of cached dynamically generated objects in a data communication network |
US8655930B2 (en) * | 2006-06-08 | 2014-02-18 | International Business Machines Corporation | Providing multi-user access in a single-user based client-server environment with distributed repositories |
US20080098093A1 (en) | 2006-10-16 | 2008-04-24 | Palm, Inc. | Offline automated proxy cache for web applications |
WO2008098249A1 (en) | 2007-02-09 | 2008-08-14 | Dilithium Networks Pty Ltd. | Method and apparatus for the adaptation of multimedia content in telecommunications networks |
US20080307412A1 (en) * | 2007-06-06 | 2008-12-11 | Sony Computer Entertainment Inc. | Cached content consistency management |
CN101616136B (zh) * | 2008-06-26 | 2013-05-01 | 阿里巴巴集团控股有限公司 | 一种提供互联网服务的方法及服务集成平台系统 |
US9170953B2 (en) * | 2008-09-18 | 2015-10-27 | Avere Systems, Inc. | System and method for storing data in clusters located remotely from each other |
US20110029899A1 (en) * | 2009-08-03 | 2011-02-03 | FasterWeb, Ltd. | Systems and Methods for Acceleration and Optimization of Web Pages Access by Changing the Order of Resource Loading |
US20110060812A1 (en) * | 2009-09-10 | 2011-03-10 | Level 3 Communications, Llc | Cache server with extensible programming framework |
US8452932B2 (en) | 2010-01-06 | 2013-05-28 | Storsimple, Inc. | System and method for efficiently creating off-site data volume back-ups |
US9602276B2 (en) * | 2010-06-11 | 2017-03-21 | Qualcomm Incorporated | Method and apparatus for virtual pairing with a group of semi-connected devices |
WO2011159715A2 (en) * | 2010-06-14 | 2011-12-22 | Engels Daniel W | Key management systems and methods for shared secret ciphers |
BR112012032371B1 (pt) * | 2010-06-18 | 2020-11-10 | Akamai Technologies, Inc | Expansão de uma rede de fornecimento de conteúdo (cdn) para dentro de uma rede móvel ou sem fio |
JP5129313B2 (ja) | 2010-10-29 | 2013-01-30 | 株式会社東芝 | アクセス認可装置 |
US9418353B2 (en) | 2010-12-20 | 2016-08-16 | Akamai Technologies, Inc. | Methods and systems for delivering content to differentiated client devices |
US9578081B2 (en) * | 2011-02-02 | 2017-02-21 | Imvu, Inc. | System and method for providing an actively invalidated client-side network resource cache |
US8407776B2 (en) | 2011-02-11 | 2013-03-26 | Good Technology Corporation | Method, apparatus and system for provisioning a push notification session |
US9165134B2 (en) * | 2011-03-08 | 2015-10-20 | Telefonica, S.A. | Method for providing authorized access to a service application in order to use a protected resource of an end user |
JP5930847B2 (ja) * | 2011-06-29 | 2016-06-08 | キヤノン株式会社 | サーバーシステムおよび制御方法およびプログラム |
JP5410487B2 (ja) * | 2011-09-22 | 2014-02-05 | ヤフー株式会社 | キャッシュサーバ、ウェブサーバ及び方法 |
US20130086323A1 (en) * | 2011-09-30 | 2013-04-04 | Oracle International Corporation | Efficient cache management in a cluster |
ES2896059T3 (es) | 2011-12-22 | 2022-02-23 | Amadeus | Método y sistema para el seguimiento y la verificación de mensajes |
US9258249B2 (en) * | 2012-02-13 | 2016-02-09 | Microsoft Technology Licensing, Llc | Resource access throttling |
WO2013123548A2 (en) * | 2012-02-20 | 2013-08-29 | Lock Box Pty Ltd. | Cryptographic method and system |
US10097406B2 (en) * | 2012-03-19 | 2018-10-09 | Level 3 Communications, Llc | Systems and methods for data mobility with a cloud architecture |
US8918651B2 (en) * | 2012-05-14 | 2014-12-23 | International Business Machines Corporation | Cryptographic erasure of selected encrypted data |
US8756568B2 (en) | 2012-07-31 | 2014-06-17 | Pivotal Software, Inc. | Documentation generation for web APIs based on byte code analysis |
US8990375B2 (en) | 2012-08-31 | 2015-03-24 | Facebook, Inc. | Subscription groups in publish-subscribe system |
US9607132B2 (en) * | 2012-10-22 | 2017-03-28 | Koninklijke Kpn N.V. | Token-based validation method for segmented content delivery |
US9491253B2 (en) | 2012-11-27 | 2016-11-08 | Fastly, Inc. | Data storage based on content popularity |
US9736271B2 (en) | 2012-12-21 | 2017-08-15 | Akamai Technologies, Inc. | Scalable content delivery network request handling mechanism with usage-based billing |
US9654579B2 (en) | 2012-12-21 | 2017-05-16 | Akamai Technologies, Inc. | Scalable content delivery network request handling mechanism |
US9189510B2 (en) | 2013-02-26 | 2015-11-17 | Facebook, Inc. | System and method for implementing cache consistent regional clusters |
JP6155696B2 (ja) * | 2013-02-26 | 2017-07-05 | 日本電気株式会社 | データ配信システム |
US9503485B1 (en) * | 2013-03-01 | 2016-11-22 | Whatsapp Inc. | Connecting communicating devices in a multi-server communication system |
US20140258375A1 (en) * | 2013-03-11 | 2014-09-11 | Lsi Corporation | System and method for large object cache management in a network |
US9483508B1 (en) * | 2013-06-28 | 2016-11-01 | Google Inc. | Omega names: name generation and derivation |
US20150006146A1 (en) * | 2013-06-28 | 2015-01-01 | Google Inc. | Omega names: name generation and derivation |
CN105814931A (zh) * | 2013-07-02 | 2016-07-27 | 七网络有限责任公司 | 基于移动网络信号的网络建模 |
US10432482B2 (en) | 2013-07-16 | 2019-10-01 | Fastly, Inc. | Network parameter configuration based on end user device characteristics |
US9413842B2 (en) * | 2013-09-25 | 2016-08-09 | Verizon Digital Media Services Inc. | Instantaneous non-blocking content purging in a distributed platform |
US10097503B2 (en) | 2013-09-27 | 2018-10-09 | Fastly, Inc. | Content node network address selection for content delivery |
US9641640B2 (en) | 2013-10-04 | 2017-05-02 | Akamai Technologies, Inc. | Systems and methods for controlling cacheability and privacy of objects |
US9648125B2 (en) * | 2013-10-04 | 2017-05-09 | Akamai Technologies, Inc. | Systems and methods for caching content with notification-based invalidation |
US9813515B2 (en) * | 2013-10-04 | 2017-11-07 | Akamai Technologies, Inc. | Systems and methods for caching content with notification-based invalidation with extension to clients |
US10165029B2 (en) | 2014-01-31 | 2018-12-25 | Fastly Inc. | Caching and streaming of digital media content subsets |
US10068014B2 (en) | 2014-02-06 | 2018-09-04 | Fastly, Inc. | Security information management for content delivery |
WO2015122813A1 (en) * | 2014-02-14 | 2015-08-20 | Telefonaktiebolaget L M Ericsson (Publ) | Caching of encrypted content |
US10530883B2 (en) | 2014-02-18 | 2020-01-07 | Fastly Inc. | Data purge distribution and coherency |
US9002990B1 (en) | 2014-03-12 | 2015-04-07 | Instart Logic, Inc. | Fast cache purge in content delivery network |
US9430405B2 (en) | 2014-06-18 | 2016-08-30 | Fastly, Inc. | Encrypted purging of data from content node storage |
-
2013
- 2013-10-04 US US14/046,884 patent/US9648125B2/en active Active
-
2014
- 2014-10-02 CN CN201480054487.XA patent/CN105684387B/zh active Active
- 2014-10-02 WO PCT/US2014/058914 patent/WO2015051184A1/en active Application Filing
- 2014-10-02 EP EP14850783.3A patent/EP3053323B1/en active Active
- 2014-10-02 JP JP2016546887A patent/JP6438037B2/ja active Active
-
2016
- 2016-11-18 US US15/356,070 patent/US9807190B2/en active Active
-
2017
- 2017-09-29 US US15/719,940 patent/US10063652B2/en active Active
-
2018
- 2018-07-22 US US16/041,793 patent/US10547703B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001006384A1 (en) * | 1999-07-20 | 2001-01-25 | Cyberstar, L.P. | Method and apparatus for internet cache content delivery via a data distribution system |
US20100205458A1 (en) * | 2001-07-13 | 2010-08-12 | O'connell Jr Conleth S | Method and system for file-system based caching |
US20030051100A1 (en) * | 2001-09-12 | 2003-03-13 | International Business Machines Corporation | Content caching with special handling of multiple identical requests for content |
US20030188106A1 (en) * | 2002-03-26 | 2003-10-02 | At&T Corp. | Cache validation using rejuvenation in a data network |
US20040010621A1 (en) * | 2002-07-11 | 2004-01-15 | Afergan Michael M. | Method for caching and delivery of compressed content in a content delivery network |
CN1898653A (zh) * | 2003-10-22 | 2007-01-17 | 英特尔公司 | 用于互连网络上高效的有序储存的方法和装置 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107689969A (zh) * | 2016-08-03 | 2018-02-13 | 华为技术有限公司 | 一种缓存策略的确定方法及装置 |
CN107689969B (zh) * | 2016-08-03 | 2020-01-17 | 华为技术有限公司 | 一种缓存策略的确定方法及装置 |
CN106789344A (zh) * | 2017-01-19 | 2017-05-31 | 上海帝联信息科技股份有限公司 | 数据传输方法、系统、cdn网络及客户端 |
CN106789344B (zh) * | 2017-01-19 | 2019-11-12 | 上海帝联信息科技股份有限公司 | 数据传输方法、系统、cdn网络及客户端 |
CN110663050A (zh) * | 2017-06-06 | 2020-01-07 | 国际商业机器公司 | 用于认知应用的边缘缓存 |
CN110086756A (zh) * | 2018-01-26 | 2019-08-02 | 沪江教育科技(上海)股份有限公司 | 一种验证方法、终端以及服务器 |
CN111936993A (zh) * | 2018-02-16 | 2020-11-13 | 瑞典爱立信有限公司 | 保护在核心网络域之间传送的消息 |
CN111936993B (zh) * | 2018-02-16 | 2024-05-03 | 瑞典爱立信有限公司 | 保护在核心网络域之间传送的消息 |
CN109063088A (zh) * | 2018-07-26 | 2018-12-21 | 阿里巴巴集团控股有限公司 | 序列号的生成方法及装置 |
CN115378878A (zh) * | 2021-05-21 | 2022-11-22 | 北京字跳网络技术有限公司 | Cdn的调度方法、装置、设备及存储介质 |
CN115378878B (zh) * | 2021-05-21 | 2023-11-14 | 北京字跳网络技术有限公司 | Cdn的调度方法、装置、设备及存储介质 |
CN113709257A (zh) * | 2021-10-09 | 2021-11-26 | 天翼物联科技有限公司 | 消息缓存超期监控方法、装置、设备及介质 |
CN113709257B (zh) * | 2021-10-09 | 2024-04-23 | 天翼物联科技有限公司 | 消息缓存超期监控方法、装置、设备及介质 |
CN114936192A (zh) * | 2022-07-19 | 2022-08-23 | 成都新橙北斗智联有限公司 | 一种文件动态压缩混淆和双向缓存方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US10063652B2 (en) | 2018-08-28 |
CN105684387B (zh) | 2019-04-12 |
US9807190B2 (en) | 2017-10-31 |
EP3053323B1 (en) | 2019-06-05 |
JP6438037B2 (ja) | 2018-12-12 |
US20180027089A1 (en) | 2018-01-25 |
JP2016538669A (ja) | 2016-12-08 |
WO2015051184A1 (en) | 2015-04-09 |
US20150100660A1 (en) | 2015-04-09 |
US20170085667A1 (en) | 2017-03-23 |
US9648125B2 (en) | 2017-05-09 |
EP3053323A1 (en) | 2016-08-10 |
US20190058775A1 (en) | 2019-02-21 |
EP3053323A4 (en) | 2017-06-21 |
US10547703B2 (en) | 2020-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105684387A (zh) | 用于利用基于通知的无效缓存内容的系统和方法 | |
US20230363557A1 (en) | System and method for locational image processing | |
US9813515B2 (en) | Systems and methods for caching content with notification-based invalidation with extension to clients | |
US10292011B2 (en) | System and method for location based exchange network | |
US10404820B2 (en) | Systems and methods for controlling cacheability and privacy of objects | |
JP5193056B2 (ja) | 無線装置の最新データを維持するための方法及びシステム | |
CN109906586A (zh) | 跨安全网络边界的配置验证的系统和方法 | |
CN112364186A (zh) | 媒体推荐信息的呈现方法、装置、设备及存储介质 | |
US11868316B2 (en) | Event management device and method | |
KR102464116B1 (ko) | 메타데이터에 기반하여 공공기관 빅데이터를 동적으로 수집하는 방법 및 장치 | |
US9798785B2 (en) | Apparatus and method for searching for address book information |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |