使用http资源的高速缓存间通信的制作方法

文档序号:7887242阅读:214来源:国知局
专利名称:使用http资源的高速缓存间通信的制作方法
使用HTTP资源的高速缓存间通信
背景技术
背景和相关技术计算机和计算系统已经影响了现代生活的几乎每个方面。计算机通常在工作、休闲、保健、运输、娱乐、家政管理等中都有涉猎。此外,计算系统功能还可以通过计算系统的经由网络连接互连到其他计算系统的能力来增强。网络连接可包括,但不仅限于,经由有线或无线以太网的连接,蜂窝式连接,或者甚至通过串行、并行、USB或其它连接的计算机到计算机的连接。这些连接允许计算系统访问其他计算系统上的服务,并快速且有效地从其他计算系统接收应用数据。为了访问因特网上的服务,客户机处的用户通常将域名键入诸如浏览器等用户界面的地址输入中。该域名能够在域名服务(DNS)处被转换成IP地址,该IP地址然后可用来访问因特网上的服务。通常,用户可以尝试访问物理地远离该用户的客户机的服务。例如,在日本的用户可以尝试访问在美国的服务。一般而言,只要服务提供的数据量是最少的,诸如最少文本量,这不会造成实际困难。只有少量数据必须从美国远距离行进至日本。然而,当请求诸如大型文本文件、图片、视频、音频记录等较大数据量时,这会促使世界范围的网络拥塞。具体而言,单个数据集可以占据客户机和服务之间的多个网络上的网络带宽,其中客户机和服务之间的距离越远,所需要的网络资源很有可能越多。另外,即使对于较少量的数据,也存在网络等待时间问题。简而言之,数据跨网络长距离行进这一事实导致数据传输的较高等待时间。为了缓解这一拥塞和等待时间,服务通常将实现分布式高速缓存系统。具体而言,服务可具有在地理上比实际服务更靠近客户机的高速缓存。例如,在日本大阪的客户机可以从在日本东京的高速缓存访问数据以获得在美国的服务。用于在美国的同一服务的其他数据高速缓存可位于其他地理位置,以允许客户机从比该服务更靠近客户机的高速缓存中获取来自该服务的经高速缓存的数据。高速缓存系统还可以按分层方式组织。例如,高速缓存可具有分层结构,其中在该分层结构中较高的高速缓存覆盖比在该分层结构中较低的高速缓存更大的地理区域或更多的网络。例如,在第一层的是位于华盛顿州雷蒙德市的为全世界提供服务的服务或起源。在第二层的是在新加坡的高速缓存,该高速缓存为亚洲的客户机和更低层的高速缓存对数据进行高速缓存。在第三层的是在日本东京的高速缓存,该高速缓存为全日本的客户机和更低层的高速缓存对数据进行高速缓存。在第四层的是在日本大阪的高速缓存,该高速缓存为大阪自己的客户机对数据进行高速缓存。高速缓存分层结构是在假定只有请求的子集被路由至下一层的情况下设计的,从 而意味着每一层用作“过滤器”。例如,考虑3层拓扑结构,具有子高速缓存服务器层、父高速缓存服务器层和原始服务器。在该示例中,子高速缓存服务器层将接收100%的终端用户通信量,而父高速缓存服务器层将接收小于100 %的某一百分比(比如30 %,这意味着存在70%的高速缓存命中或者所请求的资源中的70%已经被高速缓存并且将因此直接从子高速缓存服务器层服务),并且原始服务器将接收甚至更少,比如10%。基于该假设,相应地完成高速缓存分层结构的规模和容量规划。然而,该假设可能是错误的,具体而言会受到急性情况的影响。例如,考虑名人逝世的新闻第一次开始传播的情况。这导致许多用户同时向新闻服务器请求相同的信息。这导致由大量客户机作出的许多对新鲜内容(即,未被高速缓存的)请求。在这种情况下,内容尚未被子服务器或父服务器高速缓存。在上述示例中,父服务器可接收90 %的通信量(而非30% )并且原始服务器可接收70%的通信(而非10% )。在这种情况下,存在高速 缓存错失请求的级联效应,这最终可使得高速缓存分层结构过载。另一示例可涉及诸如网络和/或硬件故障等非预期服务降级,其中服务水平(如用系统的健康状况来指示)是次优的。由此,与所要求的提高相反,存在对总体“健康状况”造成负面影响的性能/可用性/可靠性降低。可能出现其他情况,但未在此处具体说明。在此要求保护的主题不限于解决任何缺点或仅在诸如上述环境中操作的各个实施例。相反,提供该背景仅用以示出在其中可实践在此描述的部分实施例的一个示例性技术领域。

发明内容
此处描述的一个实施例涉及一种在包括分布式高速缓存拓扑结构的计算环境中实施的方法。该方法包括用于为资源请求服务的动作。该方法包括在第一高速缓存节点处接收对第一资源的请求。该方法还包括在第一高速缓存节点处确定该第一高速缓存节点的健康或负载信息中的至少一个。该方法还包括生成对所述对第一资源的请求的响应,包括生成该响应的首部。该首部是自定义首部。该自定义首部包括健康或负载信息中的至少一个。该方法还包括发送对请求的响应,包括发送具有健康或负载信息中的至少一个的自定乂首部。此处描述的另一实施例涉及一种在包括分布式高速缓存拓扑结构的计算环境中实施的方法。该方法包括用于为资源请求服务的动作。该方法包括在第一高速缓存节点处从用户接收对第一资源的请求。该方法还包括在第一高速缓存节点处的本地高速缓存中检查资源,并且确定该资源在该第一高速缓存节点的本地高速缓存处不可用。该方法还包括作为结果,检查关于第二高速缓存节点的健康状况的信息,并且基于第二高速缓存节点的健康信息来确定是向该第二高速缓存节点还是向不同的高速缓存节点请求资源。提供本发明内容以便以简化形式介绍将在以下具体实施例中进一步描述的一些概念。本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。另外的特征和优点将在以下的描述中阐述,并且部分可从该描述中显而易见,或者可以从此处的教示实践中习得。本发明的特征和优点可以通过在所附权利要求中特别指出的手段和组合来实现并获取。本发明的特征将从以下描述和所附权利要求书中变得完全显而易见,或者可通过如下所述对本发明的实践而获知。


为了描述可获得本主题的上述和其它优点和特征的方式,将通过参考附图中示出的本主题的具体实施例来呈现以上简要描述的本主题的更具体描述。应该理解,这些附图仅描绘了各典型实施例,因此其不应被认为是对范围的限制,各实施例将通过使用附图用附加特征和细节来描述并解释,在附图中图IA示出了分布在全球的高速缓存分层结构;图IB示出了高速缓存分层结构的简单的分层视图;图2示出了高层高速缓存服务器、低层高速缓存服务器和客户机之间的通信;图3示出了为资源请求服务的方法;以及图4示出了为资源请求服务的另一种方法。 具体实施例在此示出的一些实施例能够通过利用各高速缓存或高速缓存和原始服务器之间的响应首部来包括健康和性能信息以使得“前一”层服务器能够作出备选决定而不是简单地将高速缓存错失请求转发至“下一”层服务器,来防止压垮系统的高速缓存错失请求的泛
IHIL O各实施例可包括在从“下一”(即,父)层高速缓存服务器到“前一”(即,子)层高速缓存服务器的自定义首部中注入健康和性能信息的能力。各实施例可包括“前一”层服务器基于包括在自定义首部中的信息来作出备选/智能决定的能力。各实施例可包括“前一”层服务器在向客户机发送响应之前移除自定义首部的能力。现在参考图1A,示出了一示例高速缓存分层结构100。在图IA所示的示例中,分层结构100基于地理位置并且用于在各地理位置建立高速缓存。在所示示例中,原始服务器102被示为在华盛顿州雷蒙德市。在分布式高速缓存系统中,具有原始服务器102中的内容的高速缓存服务器比实际原始服务器102更靠近客户机。例如,在日本大阪的客户机可以从日本东京的高速缓存中访问数据以获得在美国的服务。用于在美国的同一原始服务器102的其他数据高速缓存可位于其他地理位置以允许从比服务更靠近客户机的高速缓存中获取来自原始服务器102的经高速缓存的数据。在原始服务器下面的是位于全世界的各个地理位置的多个第二层高速缓存服务器 104-1、104-2、104-3、104-4、104-5、104-6 和 104-7 (第二层服务器此处可被统称为 104)。此外,在第二层高速缓存服务器104下面的多个第三层高速缓存服务器106-1、106-2、106-3、106-4、106-5、106-6、106-7、106-8、106-9 和 106-10 (第三层服务器此处可被统称为106)位于还有一些其他地理位置。第三层高速缓存服务器106可以对地理区域进行细分。例如,高速缓存服务器104-7可以是位于新加坡的高速缓存服务器,但该高速缓存服务器旨在为亚洲的全部或大部分服务,而高速缓存服务器106-9和106-10各自服务于亚洲的较小部分。然而,应当注意,出于负载平衡的目的,不同的高速缓存服务器可以为其主要负责区域之外的区域服务。此外,应当注意,高速缓存服务器可以按除了严格或甚至主要是地理的方式之外的方式组织。高速缓存服务器分层结构可基于网络通信量、网络连接类型、网速或各种其他因素中的任一个。此外,应当注意,在高速缓存服务器分层结构中,每一个低层(S卩,子)高速缓存服务器不一定取决于特定的高层(即,父)高速缓存服务器。由此,例如,虽然高速缓存服务器106-10通常可能在高速缓存服务器106-10处出现高速缓存错失时联系高速缓存服务器104-7,但高速缓存服务器106-10能够联系其他高速缓存服务器或原始服务器102。为方便起见,图IB示出了分层结构100的更传统的分层视图,该视图示出了允许低层高速缓存服务器联系各高层高速缓存服务器的某些互连。可以实现其中高速缓存服务器是基于代理的各实施例。具体而言,高速缓存服务器将担当它下面的系统的代理。例如,高速缓存服务器106-10将担当对于高速缓存服务器104-7的客户机的代理,高速缓存服务器104-7将担当高速缓存服务器106-10以及对于原始服务器102的客户 机的代理。由此,对内容或服务的请求以及对请求的响应两者都通过代理流动。给定该通信模式,当父高速缓存服务器引入包括关于该父高速缓存服务器的服务器健康和性能信息的自定义首部时,该自定义首部可由子高速缓存服务器用来作出备选、更智能的路由决定以避免压垮父高速缓存服务器。例如,客户机可以向高速缓存服务器106-10请求内容或服务。该请求可以是请求在高速缓存服务器106-10处不可用,但在原始服务器102处可用的内容或服务的请求。由此,对高速缓存服务器106-10的请求导致高速缓存错失。高速缓存服务器106-10然后可担当对于诸如高速缓存服务器104-7等下一层高速缓存服务器的客户机的代理。高速缓存服务器104-7可具有健康和/或负载问题,这意味着高速缓存服务器104-7可能不是适当的高速缓存服务器选择。类似地,高速缓存服务器104-7可具有事实上使其成为非常适合于更高层请求的高速缓存服务器的健康和/或负载问题。在回复高速缓存服务器106-10时,高速缓存服务器104-7可包括向高速缓存服务器106-10指示关于高速缓存服务器104-7的各种情况的自定义首部。高速缓存服务器106-10然后可使用该信息来作出关于向哪一个更高层高速缓存服务器转发将来的请求的智能决定。在一些实施例中,高速缓存服务器104-7可具有阻止其响应来自高速缓存服务器106-10的请求的健康或负载问题。从高速缓存服务器104-7到高速缓存服务器106-10的回复可拒绝请求,其中该拒绝包括该拒绝的响应首部中的负载或健康信息的指示。高速缓存服务器还可包括重写响应首部的能力。例如,子高速缓存服务器(例如,高速缓存服务器106-10)可以在向客户机转发响应之前移除父高速缓存服务器(例如,高速缓存服务器104-7)已经引入的自定义首部。这可以例如用来消除自定义首部信息所导致的任何终端用户影响。这可以用来消除在子和父高速缓存服务器之间进行的这一通信的轨迹。这可能是合乎需要的,以防止能够标识高速缓存服务器网络结构中的弱链接的黑客或其他攻击者发现关于网络的拓扑结构的知识。在一些实施例中,健康和负载信息可以在首部中加密以使得邪恶的实体无法获取该信息。然而,应当注意,在一些实施例中,允许将包括健康和/或负载信息的响应首部转发至客户机可以是有用的。客户机可包括用于起初确定适当的高速缓存服务器的功能。现在示出进一步的细节,在内容分发和高速缓存时,性能、可伸缩性和响应性经常受到若干因素的影响。这些因素可包括以下各项中的一个或多个高速缓存服务器上的存储器利用率;高速缓存服务器上的CPU利用率;高速缓存服务器上的网络利用率;高速缓存服务器上的盘i/o (输入/输出)队列长度;高速缓存服务器上的HTTP队列长度;高速缓存服务器上的盘上的文件数量;高速缓存服务器上的存储器中的未决文件句柄的数量。关于包括健康和负载因素的这些因素的信息可通过在服务器上使用性能计数器来获得。通过在自定义首部中包括关于健康和/或负载的信息以及可能推荐,父高速缓存服务器可告知子高速缓存服务器如何作出更好的路由决定以使其不压垮整个高速缓存分层结构100环境。以下示出了包括健康和负载信息的自定义首部。在现有示例中,为了说明方面起见,健康和负载信息加下划线以方便读者。HTTP/1. I 302 Found代理连接保持活动连接保持活动内容长度0期满日期Fri,03Sep 2010 22:49:48 GMT日期Fri,03 Sep 2010 22:49:48 GMT位置http://i. test, com/images/1, gif内容类型图像/gif服务器IIS-ARR/2.IARR {津康CPU = 80 :网络=90 :盘队歹l|= 30 http 队歹l|= 10高速缓存控制最大年龄=3600有了这一从父高速缓存服务器接收到的信息,子高速缓存服务器可决定父高速缓存服务器上的盘队列长度30太高。并且因此,对于接下来10个请求,子高速缓存服务器将路由至高速缓存分层结构100拓扑结构中的另一高速缓存服务器而不是将附加请求发送 到同一父高速缓存服务器,这可以使该父高速缓存服务器过载并最终使整个高速缓存分层结构100环境过载。由此,在该示例中,预定数量的请求可被路由至不同的高速缓存服务器。另外,子高速缓存服务器具有在将自定义首部发回到客户机之前移除该自定义首部的能力,以使得客户机不知道可以在高速缓存分层结构拓扑结构中的高速缓存服务器之间进行的任何高速缓存间通信。现在参考图2进一步示出细节。图2示出了高速缓存分层结构中的高层高速缓存服务器204和低层高速缓存服务器206。低层高速缓存服务器206诸如通过网络或其他适当的连接来连接到客户机208。客户机208向低层高速缓存服务器206发送资源请求210以请求某一资源,诸如文件、网页、样式表、图像等。低层高速缓存服务器206经历高速缓存错失,这意味着它在本地存储中不具有资源请求210中所请求的资源中的一个或多个。结果,低层高速缓存服务器206将其自己的资源请求212发送到高层高速缓存服务器204。在一些实施例中,除了对首部中的路由信息的一些改变之外,资源请求212可以与资源请求210非常相似或几乎相同。高层高速缓存服务器204可具有最初由客户机208请求的资源并因此返回响应214。响应214可包括所请求的资源、差错消息或其他适当的响应。响应214还包括自定义首部215。自定义首部215可包括以上在样本首部中示出的各种首部信息。此外,如上所述,自定义首部215包括关于高层高速缓存服务器204的健康或负载信息中的至少一个。注意,如果高层高速缓存服务器204具有关于一个或多个其他高速缓存服务器的健康或负载信息,则自定义首部可另选地或另外 地包括关于这些其他高速缓存中的一个或多个的健康或负载信息中的一个或多个。在另一示例中,来自高速缓存服务器的从中高层高速缓存服务器204可包括自定义首部的全部或部分的响应然后在没有或具有极少修改的情况下被简单地转发至低层高速缓存服务器。例如,高层高速缓存服务器本身可经历高速缓存错失并由此可以向甚至更高层的高速缓存服务器、同辈高速缓存服务器或一些实施例中的甚至更低层的高速缓存服务器请求最初请求的资源。响应来自更高层高速缓存服务器204的请求的高速缓存服务器可以发送响应,其中该响应包括自定义首部,该自定义首部包括作出响应的高速缓存服务器的健康或负载信息中的至少一个(和/或如在现有示例后可以迭代地想象的,又一高速缓存服务器的健康或负载信息中的至少一个)。然而,再次返回在图2中显式示出的示例,低层高速缓存服务器206可以向客户机208发送响应216。该响应可包括在响应214中接收到的资源、差错消息等。事实上,除了路由信息或其他上下文信息的改变之外,响应216可以与响应214相同或几乎相同。在图2所示的示例中,响应216与响应214的不同之处至少在于它不包括包含健康或负载信息的自定义首部115。虽然响应216可包括首部,但出于安全或其他原因,该首部可以不包括与自定义首部215相同的信息。在后续资源请求场景中,健康或负载信息可由低层高速缓存服务器使用。例如,客户机208可发送资源请求218。虽然在该示例中,客户机208被示为发送资源请求210和218两者,但应理解,不同的客户机可发送具有相似结果的不同资源请求。具体而言,第一客户机可发送资源请求210,而不同的第二客户机可发送资源请求218。资源请求218可以向低层高速缓存服务器206请求诸如网页、图像、样式表、脚本代码等一个或多个资源。低层高速缓存服务器206可经历高速缓存错失,因为它不具有资源请求218中所请求的资源。由此,低层高速缓存服务器206可能需要使用资源请求220来向另一高速缓存服务器请求资源。低层高速缓存服务器206可使用在自定义首部215中获取的健康或负载信息来确定资源请求220应被发送到高层高速缓存服务器204还是另一不同的高速缓存服务器。例如,如果来自自定义首部215的健康或负载信息指示高层高速缓存服务器204是健康的和/或未过载的,则资源请求可被发送到该高层高速缓存服务器。否则,资源请求可被发送到不同的高速缓存服务器。以下讨论现涉及可以执行的多种方法以及方法动作。虽然用特定次序讨论或用以特定次序发生的流程图示出了各个方法动作,但除非明确规定否则不需要特定次序,或因为一动作依赖于另一动作在执行该动作之前完成而需要特定次序。现在参考图3,示出了方法300。方法300可以在包括分布式高速缓存拓扑结构的计算环境中实施。方法300包括用于为资源请求服务的动作。方法300包括在第一高速缓存节点处接收对第一资源的请求(动作302)。例如,客户机或其他高速缓存服务器可发送对诸如网页、图像、样式表、脚本代码等一个或多个资源的请求。方法300还包括在第一高速缓存节点处确定该第一高速缓存节点的健康或负载信息中的至少一个(动作304)。这样的信息可包括例如以下各项中的一个或多个第一高速缓存节点的存储器利用率;第一高速缓存节点的CPU利用率;第一高速缓存节点的网络利用率;第一高速缓存节点的盘i/o队列长度;第一高速缓存节点的HTTP队列长度;第一高速缓存节点处的盘上的文件数量;或者第一高速缓存节点的存储器中的未决文件句柄的数量。方法300还包括生成对所述对第一资源的请求的响应,包括生成该响应的首部。该首部是自定义首部。该自定义首部包括健康或负载信息中的至少一个(动作306)。示例自定义首部在上文中示出。方法300还包括发送对请求的响应,包括发送具有健康或负载信息中的至少一个的自定义首部(动作308)。例如,响应可被发送到客户机或另一高速缓存节点,其中该响应包括具有健康或负载信息的自定义首部。方法300可以被实施,其中接收对第一资源的请求包括接收来自子高速缓存节点的请求。例如,如图IB所示,高速缓存节点104-4可以接收来自子高速缓存节点106-2的请求。 在一替换实施例中,方法300可以被实施,其中接收对第一资源的请求包括接收来自同辈高速缓存节点的请求。例如,高速缓存节点104-4可以接收来自高速缓存节点104-6的请求。或者,高速缓存节点106-2可以接收来自高速缓存节点106-3的请求。现在参考图4,示出了方法400。方法400可以在包括分布式高速缓存拓扑结构的计算环境中实施。方法400包括用于为资源请求服务的动作。该方法包括在第一高速缓存节点处从用户接收对第一资源的请求(动作402)。例如,高速缓存节点可以从高速缓存分层结构中较低的高速缓存节点或者直接从客户机处的用户接收请求。方法400还包括在第一高速缓存节点处的本地高速缓存中检查资源,并且确定该资源在该第一高速缓存节点的本地高速缓存处不可用(动作404)。方法400还包括作为结果,检查关于第二高速缓存节点的健康状况或负载中的至少一个的信息,并且基于第二高速缓存节点的健康或负载信息来确定是向该第二高速缓存节点还是向不同的高速缓存节点请求资源(动作406)。例如,当高速缓存节点106-2确定它不具有在高速缓存节点106-2处可用的所请求的资源时,高速缓存节点106-2可检查它已经存储的关于高速缓存节点104-4的信息以确定高速缓存节点104-4处的健康状况或负载。如果高速缓存节点104-4看上去处于不健康或过载状态,则高速缓存节点106-2可确定向与高速缓存节点104-4不同的高速缓存节点请求资源。资源请求可被发送到分层结构100中较高的高速缓存节点(诸如高速缓存节点104-5)或处在分层结构中的同一层的高速缓存节点,诸如同辈高速缓存节点(诸如高速缓存节点106-1)或分层结构100中的任何其他适当的高速缓存节点。方法400可被实施,其中第二高速缓存节点是第一高速缓存节点的父节点。在以上所示示例中,第一高速缓存节点可以是节点106-2,而第二高速缓存节点可以是高速缓存节点104-4。方法400的实施例可被实施,其中第二高速缓存节点是第一高速缓存节点的同辈。在以上所示示例中,第一高速缓存节点可以是节点106-2,而第二高速缓存节点可以是高速缓存节点106-3。方法400可被实施,其中确定向第二高速缓存节点还是向不同的高速缓存节点请求资源包括检查第一高速缓存节点的多个同辈的健康或负载信息中的至少一个。例如,高速缓存节点106-2可检查节点106-1和106-3的健康状况。方法400还可包括从第二高速缓存节点接收健康或负载信息中的至少一个。例如,正被检查的健康或负载信息可以直接从它适用的节点处接收。例如,节点104-4可以向节点106-2发送健康或负载信息。在一些实施例中,从第二高速缓存节点接收健康或负载信息中的至少一个包括接收自定义响应头部中的健康或负载信息中的至少一个。此外,在一些实施例中,健康或负载信息中的至少一个是作为对与第一资源不同的资源的请求的结果而接收的。例如,如上所示,作为高速缓存错失的结果,客户机或高速缓存节点(例如,节点106-2)可以向另一高速缓存节点(例如,节点104-4)请求资源。该另一高速缓存节点104-4可以发回资源以及自定义首部中的健康或负载信息。当高速缓存节点106-2经历对于不同资源的另一次高速缓存错失时,高速缓存节点106-2可咨询先前接收到的健康或负载信息以确定应向高速缓存节点104-4还是某一其他高速缓存节点发送对该不同资源的请求。各实施例还可包括在向用户转发响应之前从自定义响应首部中移除健康或负载信息中的至少一个。例如,如图2所示,自定义首部215中的负载或健康信息可由低层高速缓存服务器206在将响应214作为响应216转发至客户机208之前剥离。方法400还可被实施为包括本地地存储健康或负载信息中的至少一个以供在对资源请求的后续动态路由时使用。例如,如图2所示,低层高速缓存服务器206可将健康或负载信息存储在本地存储或本地存储器中以供在确定如何处理后续请求(诸如请求218)时使用。方法400可被实施,其中健康或负载信息中的至少一个包括指示即时或更短期情况的急性健康信息。例如,健康信息可指示高速缓存节点处的硬件组件的即时或即将到来的故障。或者,方法400可被实施,其中健康或负载信息中的至少一个包括慢性健康信息。例如,健康或负载信息可指示不会造成即时问题但可能逐渐造成将来的问题的不断增加的请求的趋势。或者,方法400可被实施,其中健康或负载信息中的至少一个包括将来健康信息。例如,健康信息可指示高速缓存节点将关闭以便在给定时间维护。健康信息可标识诸如防病毒和/或反垃圾邮件扫描操作、磁盘碎片整理任务等可能影响健康状况的计划任务。此外,各种方法可由包括一个或多个处理器和诸如计算机存储器等计算机可读介质的计算机系统来实施。具体而言,计算机存储器可存储计算机可执行指令,这些指令在由一个或多个处理器执行时使得诸如各实施例中所述的各个动作等各种功能被执行。本发明的各实施例可以包括或利用包含计算机硬件的专用或通用计算机,这将在下文中更详细地讨论。本发明范围内的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种完全不同的计算机可读介质物理计算机可读存储介质和传输计算机可读介质。物理计算机存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储(如CD、DVD 等)、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。
“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的网络和/或数据链路。以上介质的组合也被包括在计算机可读介质的范围内。此外,在到达各种计算机系统组件时,以计算机可执行的指令或数据结构的形式存在的程序代码装置可以自动地从传输计算机可读介质传输到物理计算机可读存储介质(或者反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传送到计算机系统RAM和/或计算机系统处的较不易失性的计算机可读物理存储介质。因此,计算机可读物理存储介质可被包括在同样(或甚至主要)利用传输介质的计算机系统组件中。计算机可执行指令包括,例如使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可位于本地和远程存 储器存储设备中。本发明可具体化为其他具体形式而不背离其精神或特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变被权利要求书的范围所涵盖。
权利要求
1.一种在包括分布式高速缓存拓扑结构的计算环境中的为资源请求服务的方法,所述方法包括 在第一高速缓存节点处,从用户接收对第一资源的请求(302); 在所述第一高速缓存节点处的本地高速缓存中检查所述资源并且确定所述资源在所述第一高速缓存节点的本地高速缓存处不可用(304);以及 作为结果,检查关于第二高速缓存节点的健康状况或负载中的至少一个的信息,并且基于所述第二高速缓存节点的健康或负载信息来确定是向所述第二高速缓存节点还是向不同的高速缓存节点请求所述资源(304)。
2.如权利要求I所述的方法,其特征在于,所述第二高速缓存节点是所述第一高速缓存节点的父节点。
3.如权利要求I所述的方法,其特征在于,所述第二高速缓存节点是所述第一高速缓存节点的同辈。
4.如权利要求I所述的方法,其特征在于,确定向所述第二高速缓存节点还是向不同的高速缓存节点请求所述资源包括检查所述第一高速缓存节点的多个同辈的健康或负载信息中的至少一个。
5.如权利要求I所述的方法,其特征在于,还包括从所述第二高速缓存节点接收健康或负载信息中的至少一个。
6.如权利要求5所述的方法,其特征在于,从所述第二高速缓存节点接收健康或负载信息中的至少一个包括接收自定义响应头部中的所述健康或负载信息中的至少一个。
7.如权利要求6所述的方法,其特征在于,所述健康或负载信息中的至少一个是作为对与所述第一资源不同的资源的请求的结果来接收的。
8.如权利要求6所述的方法,其特征在于,还包括在向所述用户转发响应之前从所述自定义响应首部中移除所述健康或负载信息中的至少一个。
9.如权利要求6所述的方法,其特征在于,还包括本地地存储所述健康或负载信息中的至少一个以供在对资源请求的后续动态路由时使用。
10.如权利要求I所述的方法,其特征在于,所述健康或负载信息中的至少一个包括急性健康或负载信息。
11.如权利要求I所述的方法,其特征在于,所述健康或负载信息中的至少一个包括慢性健康或负载信息。
12.如权利要求I所述的方法,其特征在于,所述健康或负载信息中的至少一个包括将来健康或负载信息。
13.—种在包括分布式高速缓存拓扑结构的计算环境中的为资源请求服务的方法,所述方法包括 在第一高速缓存节点处,接收对第一资源的请求(302); 在所述第一高速缓存节点处,确定所述第一高速缓存节点的健康或负载信息中的至少一个(304)。
生成对所述对第一资源的请求的响应,包括生成所述响应的首部,其中所述首部是自定义首部,所述自定义首部包括健康或负载信息中的至少一个(306);以及 发送对所述请求的响应,包括发送具有所述健康或负载信息中的至少一个的自定义首部(308)。
14.如权利要求13所述的方法,其特征在于,所述健康或负载信息中的至少一个包括以下各项中的至少一个所述第一高速缓存节点的存储器利用率;所述第一高速缓存节点的CPU利用率;所述第一高速缓存节点的网络利用率;所述第一高速缓存节点的盘i/o队列长度;所述第一高速缓存节点的HTTP队列长度;所述第一高速缓存节点处的盘上的文件数量;或者所述第一高速缓存节点的存储器中的未决文件句柄的数量。
15.如权利要求13所述的方法,其特征在于,接收对第一资源的请求包括从子高速缓存节点接收请求。
全文摘要
本发明涉及使用HTTP资源的高速缓存间通信。为资源请求服务。一种方法包括在第一高速缓存节点处接收对第一资源的请求。该方法还包括在第一高速缓存节点处确定该第一高速缓存节点的健康或负载信息中的至少一个。该方法还包括生成对所述对第一资源的请求的响应,包括生成该响应的首部。该首部是自定义首部。该自定义首部包括健康或负载信息中的至少一个。该方法还包括发送对请求的响应,包括发送具有健康或负载信息中的至少一个的自定义首部。
文档编号H04L29/08GK102638561SQ201210010998
公开日2012年8月15日 申请日期2012年1月13日 优先权日2011年1月14日
发明者A·S·D·马克, D·V·洛佩兹, J·多瑙伊斯基, W·S·刘 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1