动态群分割的制作方法

文档序号:13689743阅读:288来源:国知局
动态群分割的制作方法

背景

背景和相关技术

计算机和计算系统已经影响了现代生活的近乎每一个方面。计算机通常涉及工作、休闲、保健、运输、娱乐、家政管理等。

此外,计算系统功能还可以通过计算系统经由网络连接互连到其他计算系统的能力来增强。网络连接可包括,但不仅限于,经由有线或无线以太网的连接,蜂窝式连接,近场通信,或者甚至通过串行、并行、usb或其它连接的计算机到计算机的连接。这些连接允许计算系统访问其他计算系统上的服务,并快速且有效地从其他计算系统接收应用数据。

计算系统的互联已经促进了实现对等体通信系统的能力,其中对等体计算系统能够彼此通信并分享数字内容。在传统的对等体系统中,各对等体请求来自彼此的数字内容。通常,各对等体可彼此交换内容。例如,考虑可能包括片段a、b、c、d和e的一组数据。一对等体可具有片段a、b和e,而另一对等体具有a、b、c和d。第一对等体可将片段e提供给第二对等体,而第二对等体可将片段c和d提供给第一对等体。因此,各对等体通常符合他们具有内容片段的事实。

然而,经常发生的情况是单个内容片段表示了全组内容,但对等体需要许多不同的方式来消耗此内容,每种方式都需要一组不同的字节。想象一种情况,存在更新表示针对操作系统的完整更新的二进制数据组的需要。然而,一些对等体将仅更新集成浏览器,一些将更新集成文字处理器,且另一些将更新集成计算器。这根据更新二进制创建不同的所需部分(通常由字节范围划分),其中一些可能甚至不重叠。如果不存在重叠,则这会创建无效的对等体,因为不存在向任一方向交换的字节。重叠的程度决定了对等体将如何有效。

本文要求保护的主题不限于解决任何缺点或仅在诸如上述环境这样的环境中操作的各实施例。相反,提供该背景仅用于例示其中可实践所述一些实施例的一个示例性技术领域。

简要概述

一种方法包括用于标识客户端的对等体,以便于该客户端获得数据的动作。该方法包括从客户端接收数据集的标识和该数据集的一个或多个字节范围的指定。结果,该方法进一步包括标识与数据集的一个或多个字节范围相关联的一个或多个其他客户端以充当该客户端的对等体。该方法进一步包括提供将一个或多个其他经标识的客户端作为该客户端的对等体的指示。

提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并非旨在标识出要求保护的主题的关键特征或必要特征,亦非旨在用作辅助确定要求保护的主题的范围。

附加特征和优点将在以下描述中提出,且部分会从描述中显而易见,或者可以通过实施本文的原理来获悉。本发明的特征和优点可以通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的特征从以下描述和所附权利要求书中将更完全显而易见,或者可以通过如下文所述实施本发明而获悉。

附图简述

为了描述可获得以上记载的及其他优点和特征的方式,将参照各具体实施例呈现以上简述的主题的更具体描述,各具体实施例在附图中例示。理解这些附图仅描述典型的实施例,因此不应被视为限制本发明的范围,各实施例将通过使用附图以附加的具体性和细节来描述和解释,附图中:

图1例示了促进客户端更新的对等网络;

图2a例示了可促进寻找客户端的对等体的图;

图2b例示了图2a中的图的优化版本;

图3例示了用于标识客户端的对等体并更新该客户端的数据流;

图4例示了可促进寻找客户端的对等体的图的另一示例;

图5例示了用于标识客户端的对等体,以便于该客户端获得数据的方法;

图6例示了用于标识客户端的对等体,以便于该客户端获得数据的另一方法;以及

图7例示了可实践各实施例的系统。

详细描述

本文中的一些实施例实现了一种系统,其中有效对等体可被彼此标识,或在一些情况下,可在至少一个方向上被标识。特别地,各实施例可标识使用数据集片段的相同子集的客户端并促进将它们匹配成对等体。

这可通过使用数据集的树或图表示来完成,其中图的最高层是表示包括全部数据集片段的数据集的整体的节点。图中的子节点表示它们的父节点的片段的子集。基于哪些片段适合于客户端将使用数据集片段的各客户端放入与某些片段集相关联的各群组中。因此,使用相同的适合片段集的各客户端可被彼此匹配成对等体以创建有效的对等共享。在替换方案中,如果与和第一节点相同的节点相关联的对等体没有(或不能)被提供时,则与第一节点相关联的一客户端可被匹配为与作为该第一节点的父节点的第二节点相关联的客户端的对等体。因此,虽然这不是对两个客户端都有效的,但至少这两个客户端中的一个将具有使用该客户端所使用的全部片段的对等体。

图1例示了一个示例。在图1所例示的示例中。多个客户端102-1至102-8被连接在对等网络104中。对等网络104中的各客户端可能各自需要用于更新该客户端的一些数据。每个客户端所需的数据都包含在总体数据集202中(参见图2a)。然而,每个客户端可能仅需要总体数据集202中数据的一部分(在下面的一些具体示例中被例示为对应于字节范围的数据)。

图2a例示了总体数据集202被划分成三个片段的示例。对等网络104中的每个客户端都需要三个片段中的一个或多个,但不一定需要全部。注意到,虽然在图2a中例示了三个片段,但是应当理解其他划分和数量的片段可被包括在总体数据集中。

图2a例示了图200,其示出了三个不同的片段可能被如何划分进不同的节点204-1至204-7的分层图示。特别地,节点204-1包括总体数据集202的全部三个片段。节点204-2包括总体数据集202的第一和第二片段。节点204-3包括总体数据集202的第一和第三片段。节点204-4包括总体数据集202的第二和第三片段。节点204-5包括总体数据集202的第一片段。节点204-6包括总体数据集202的第三片段。节点204-7包括总体数据集202的第二片段。

图2a进一步例示了图1所例示的客户端被组织进对应于图200的各节点的各群组中。根据每个客户端用于更新所需的总体数据集202中的片段来将该客户端放置进群组中。因此,客户端102-1被放置进对应于节点204-1的群组206-1中,因为客户端102-1需要总体数据集202的全部三个片段来更新。客户端102-2、102-3和102-4被放置进对应于节点204-2的群组206-2中,因为客户端102-2、102-3和102-4需要总体数据集202的第一和第二片段来更新。客户端102-5和102-6被放置进对应于节点204-3的群组206-3中,因为客户端102-5和102-6需要总体数据集202的第一和第三片段来更新。客户端102-7被放置进对应于节点204-6的群组206-6中,因为客户端102-7需要总体数据集202的第三片段来更新。客户端102-8被放置进对应于节点204-7的群组206-7中,因为客户端102-8需要总体数据集202的第二片段来更新。

基于此信息,客户端102-2、102-3和102-4可被标识为彼此中的一个或多个的潜在的理想对等体,因为它们各自需要总体数据集202的相同部分,并因此处于相同群组206-2中。类似地,客户端102-5和102-6是潜在的理想对等体,因为它们各自需要总体数据集202的相同部分,并因此处于相同群组206-3中。各实施例可优选理想对等体组,因为如果各实施例使用来自图中较高的分层的群组中的对等体,则这些对等体可能不能为其他客户端服务,而这可能是更有效的。

客户端102-7在其相同群组206-6中不具有任何其他客户端,并因此将被匹配于非理想对等体,但该非理想对等体包含客户端102-7所需的总体数据集的部分。

可通过遍历图200来标识客户端102-7的对等体,以寻找与具有需要总体数据集202的适当部分的客户端的群组相关联的父节点。例如,节点204-3是节点204-6的父节点。节点204-3与包含客户端102-5和102-6的群组206-3相关联。因此,客户端102-5和102-6中的一个或两个可被标识为客户端102-7的对等体。它们将是客户端102-7的理想对等体,然而,由于客户端102-7不需要总体数据集202的第一部分,所以客户端102-7将不会是客户端102-5和102-6的理想对等体。

替换地,可遍历图200以标识节点204-1,该节点204-1不是节点204-6的相邻父节点(即直接分层于其上),而是分层于节点204-6上的更遥远的父节点。以此方式客户端102-1可被标识为可以是节点102-7的对等体的客户端。再次,客户端102-1将会是客户端102-7的理想节点,但是客户端102-7将不会是客户端102-1的理想对等体,因为客户端102-1需要总体数据集202的全部三个部分,而客户端102-7仅需要总体数据集202的第三部分。

应当理解,给出了在客户端102-5和102-6对照客户端102-1之间选择作为节点102-7的对等体的选择的情况下,一些实施例将选择客户端102-5和102-6作为对等体而将客户端102-1留作需要与总体数据集202相同的片段、或至少比客户端102-7所需的总体数据集202的片段更多的其他客户端的对等体。特别地,通过选择在对总体数据集的各部分的需求方面彼此最为类似的客户端成为对等体来在各客户端之间有效地分布负载可能是有用的。

例如,客户端102-1可以是任何客户端的理想对等体,但如果全部客户端都被分配于其作为对等体,则客户端102-1将变得过载。在一些实施例中,将客户端102-1分配给没有其他对等体可用的对等体可能是更有效的。当然,这可在一些实施例中被修改,其中其他因素权重重于(out-weigh)将具有在对总体数据集的各部分的需求方面最类似的客户端作为对等体。例如,如果预计仅需要少量的总体对等体通信量来更新全部客户端,则寻找最类似的客户端作为对等体可能不被强调。

除了相对于总体数据集的所需部分的类似性之外,客户端可在确定它们是否应该被分配作为对等体时对其他因素进行评估。基于各种因素,类似的客户端可能会因为具有相同类似性或甚至更少类似性的其他对等体而被取消作为对等体的资格(或在选择对等体时不被强调)。例如,最类似的客户端可能会因为该对等体使用昂贵或不太可靠的网络连接(如蜂窝等)而被取消资格或不被强调。最类似的客户端可能会因为该对等体由电池供电而不是由耦合于公共电力设施的电连接供电而被取消资格或不被强调。最类似的客户端可能会因为具有受限的存储空间而被取消资格或不被强调。最类似的客户端可能会因为具有现有的高工作负载而被取消资格或不被强调。最类似的客户端可能会因为具有较低的计算能力而被取消资格或不被强调。最类似的客户端可能会因为具有较低的网络或工作负载带宽而被取消资格或不被强调。最类似的客户端可能会因为具有受限的系统存储器的量而被取消资格或不被强调。最类似的客户端可能会因为试图平均分布对等体负载的负载平衡公平算法而被取消资格或不被强调。不被强调可能导致某些客户端被较少地加权,并因此不太可能被选择为其他客户端的对等体。

相反,客户端可能会因为一个或多个因素被强调或被更高地加权以作为对等体的选择。例如,客户端可能会因为具有高带宽或低成本的网络连接而被强调为作为对等体的选择。客户端可能会因为被连接到公共电力设施源而不是被连接到电池供电而被强调为作为对等体的选择。客户端可能会因为具有大量的存储空间而被强调为作为对等体的选择。客户端可能会因为该客户端当前执行较低的工作负载而被强调为作为对等体的选择。客户端可能会因为由一些公平算法作出的确定而被强调为作为对等体的选择。客户端可能会因为具有诸如近场通讯或其他理想的通讯方式的一些特殊的通讯手段而被强调为作为对等体的选择。客户端可能会因为在逻辑上接近于其他客户端而被强调为作为对等体的选择。等等。

现在例示附加细节,各实施例可将总体数据集的字节范围编码为掩码。该掩码可表示虚拟群组标识符。例如,总体数据集202的第一、第二和第三部分可以各自是字节范围。具有全部三个部分的群组可由表示全部三个部分的虚拟群组标识符111来标识。仅具有第一部分的群组可由虚拟群组标识符来标识。等等。在此示例中,被包括在群组标识符中的“1”指示与群组标识符的该部分相对应的字节范围的存在,而“0”表示相对应的字节范围的不存在。

给定群组中的客户端是彼此匹配的理想对等体。如果存在取代此群组中的片段(即,分层父节点,无论是邻近的还是遥远的)的另一群组,则该另一群组也将具有将是此群组中的客户端的理想匹配的客户端,但相反情形不成立。基于此关系,可构建其中任何子节点都是其父节点的子集的图(诸如图200)。利用此分层,各实施例能够通过向上遍历图来有效地寻找完美对等体匹配。

现在参考图3,例示了一数据流。数据流示出了两个客户端102-a和102-b、数据管理者106和对等体确定服务108的通信。应当理解,对等体确定服务108可被包括为数据管理者106的一部分或单独的服务。

在图3所示的示例中,在301,第一客户端102-a向数据管理者106发送消息,询问是否发现存在针对客户端102-a的任何更新。在302,数据管理者106用请求更新的应用的标识的消息进行回复。在303,客户端102-a发送提供应用标识符的消息。应用标识符可标识客户端102-a处的特定应用、操作系统、经安装的驱动器、硬件等。作为响应,在304,数据管理者发送内容标识符和掩码。内容标识符标识在客户端102-a处更新应用所需的总体数据集,并且掩码标识需要更新总体数据集的哪些部分。在一些实施例中,掩码可以是总体数据集的二进制位图。特别地,数据集可被划分成与位图中的位对应的字节范围。在位图掩码中设置位(例如,在本文先前所例示的示例中将该位设置为1)指示需要更新该字节范围。如果该位被清除(例如,该位被设置为0,如上文示例所示),这指示不需要更新与该位对应的字节范围。注意到,虽然在上文示例中示出了正逻辑,但是应当理解,可替换地使用其他类型的逻辑。

一旦客户端102-a知道它需要哪个数据集和该数据集的哪些部分,就可以开始尝试标识拥有和/或需要该数据集的相同部分中的每个相同部分的对等体。如305所例示的,通过向对等体确定服务108发送请求对等体来开始。该请求包括先前获得的内容标识符和掩码(或用于标识所需的数据集和数据集的各部分的等效信息)。对等体确定服务108可然后使用此信息来标识客户端102-a的对等体。理想地,对等体确定服务尝试标识对于客户端102-a所需的总体数据集的每个字节范围而言具有和/或需要完全相同的字节范围,而不需要更多或更少的字节范围的其他客户端。这可通过使用掩码作为虚拟群组标识符来完成,其中需要完全相同的字节范围的全部客户端都将具有相同的虚拟群组标识符。然而,如果对等体确定服务108不能找到客户端102-a的理想匹配,则对等体确定服务可通过使用诸如图2a所例示的图之类的图来找到另一对等体。特别地,该图可被用于标识父节点。父节点可被用于标识类似的并且需要或具有客户端102-a所需的字节范围中的全部数据的对等体。在一些实施例中,对标识最类似的客户端的尝试将被执行。例如,使用图2a的图,假设客户端102-a是图2a中所例示的客户端102-7。可使用该图来标识两个对等体群组,即群组206-3和206-1。然而,群组206-3中的客户端比群组206-1中的客户端更类似于客户端102-7。

尽管可使用图2a中的图,但是在其他实施例中,如在图2b中所例示的,图200’可仅包括存在属于对应于各节点的各群组的客户端的节点。可根据需要基于图200’添加或修剪节点。

再次返回到图3,在306,对等体确定服务108将客户端102-b标识为客户端102-a的对等体。虽然该示例仅示出正在被标识的单个对等体,但是应当理解,如果需要的话可标识多个对等体。在307,客户端102-a向客户端102-b发送标识客户端102-a具有的总体数据集的数据的字节范围以及客户端102-a所需的总体数据集的数据的字节范围的消息。作为响应,如在308所例示的,客户端102-b可发送由客户端102-b具有的和客户端102-a所需的字节范围指示的任何数据。附加地,如在309所例示的,客户端102-b向客户端102-a发送标识客户端102-b具有的总体数据集的数据的字节范围以及客户端102-b所需的总体数据集的数据的字节范围的消息。如在310所例示的,客户端102-a可发送它具有的且被客户端102-b需要的任何数据作为响应。

如果客户端不能从其他对等体获得所需的数据,则该客户端可联系管理者106以获得数据,如在311所例示的。管理者106可将所请求的数据返回给客户端102-a,如在312所例示的。客户端102-a现在具有可用于与其他对等体共享的该数据。客户端102-a可从管理者106请求数据的一个或多个字节范围,而不请求所需的全部数据。特别地,客户端102-a可尝试首先从对等体获得数据,并然后尝试从管理者106以字节范围为基础获得数据。

在一些实施例中,客户端可稍后发现它需要比原始预计的更多的字节范围的数据,并且因此将被移动到不同的容器中。例如,客户端可标识新的硬件已被安装、新的应用已被添加、新的功能已被添加等。客户端可联系管理者106以发现是否需要任何附加数据。管理者106可用附加字节范围来标识新的掩码。此时,客户端可能已经获得了一些数据,但是仍然需要新的数据,包括与新标识的字节范围相关联的新的数据。管理者106将为客户端标识掩码,该掩码包括除了该客户端仍然需要的数据的字节范围之外,还包括该客户端已经获得的数据的字节范围。客户端可尝试通过联系对等体确定服务108并提供新的掩码来标识新的对等体,该新的掩码可被用作群组标识符的一部分来为客户端标识新的群组。可将客户端添加到被标识成来自该组(或来自分层于客户端群组之上的群组)的新的群组和对等体。客户端可然后向经标识的对等体提供数据并从经标识的对等体接收数据。

例如,并且参考图2a,考虑客户端102-8最初基于指示客户端102-8需要总体数据集202的第二部分的010的掩码被放置在群组206-7中的情况。然而,在稍后的时间,在客户端102-8已经获得了总体数据集的第二部分之后,客户端102-8可确定它还需要总体数据集的第一部分以作为确定需要更新的结果并然后与管理者106联系。客户端102-8可然后联系对等体确定服务108,该对等体确定服务108标识与来自已经被客户端102-8接收的总体数据集202和仍然被客户端102-8需要的总体数据集202的附加部分的数据相对应的群组标识符110。客户端102-8将因此被添加到群组206-2中,并且将为客户端102-8标识一个或多个对等体。如先前讨论的那样处理过程。

因此,各实施例可被实现为可基于字节范围来动态创建内容标识符的系统。使用内容标识符,客户端的字节范围被用于匹配对等体。字节范围可以是所需的内容,或者在某些情况下,可以是客户端已经具有的内容,如下文将更详细地解释的。如上所述,内容标识符可被存储在图结构中。可遍历内容标识符图以发现对等体。如上所述,与图中的子节点相关联的字节范围是与父节点相关联的字节范围的子集。可在新的字节范围内容标识符可被插入图中的情况下实现各实施例。附加地,新的字节范围内容标识符可被删除到图中。

现在例示详细的示例,诸如对华盛顿州雷德蒙德市的微软公司的windows操作系统的更新之类的操作系统更新作为大文件被传递到客户端机器,单个机器从中选取并选择成功安装或打补丁所需的字节范围。这些字节范围因每个客户端的配置(已安装的软件、补丁程序、先前的更新、驱动程序等)而异。目前,这些大文件都被完整地分布,这对内容传递网络(cdn)造成巨大压力(在成本和带宽方面),但事实上,只有一部分文件是真正需要的。然而,使用上述对等体技术,各实施例可基于适当的消费模式来动态地归组客户端,并且连接具有类似消费简档需求的对等体,使得只有具有唯一稀疏数据的对等体正在传输位。这有助于限制不必要的数据被传输。

现参考图4,例示出了一替换版本。图4被用于例示一示例,其中总体数据集中所需的字节范围可能改变并且可能不被客户端所知。在一些实施例中,这可能由于在客户端上改变用户体验的用户抉择而发生。例如,考虑其中用户使用客户端上的应用参与虚拟旅游或其他模拟的应用。用户可作出将更改客户端需要哪些数据的抉择。一些实施例可使用预测技术来标识所需的更新。预测技术可使用关于客户端已经具有的总体数据集的哪些部分的信息。附加地,预测技术可使用其他输入(诸如关于用户作出的抉择的输入、客户端机器的特征),或甚至外部因素(诸如网络连接、一天里的时间或其他因素)来预测客户端可能需要哪些附加部分。

在图4所例示的示例中,图400被例示成具有多个节点404-1至404-15。每个节点分别与群组406-1至406-15相关联。每个群组定义一组客户端。任何给定的客户端都可能会随时间推移而移动到不同的群组。例如,一客户端可以具有0001的掩码,指示它需要总体数据集402的第四部分。结果,客户端可被放置在群组406-12中,并从相同群组406-12或从与节点404-12的父节点(即,节点404-6、404-7、404-8、404-2、404-3、404-4或404-1中的一个)相关联的群组中标识一个或者多个对等体。客户端将在某一时刻从对等体或管理者106获得总体数据集402的第四部分。客户端可然后向管理者106标识它具有总体数据集402的第四部分。在一些实施例中,客户端还可将客户端处的各种用户交互或其他信息标识给管理者106。管理者106可然后使用预测技术来确定客户端可能也需要,例如,总体数据集402的第二部分。对等体选择服务108可将客户端移动到群组406-7,该群组406-7是与标识总体数据集402的第二和第四部分的掩码0101相关联的群组。如上文所例示的,可基于新的群组的分配来为该客户端标识的新的对等体。

在稍后的时间,基于该客户端获得了总体数据集402的第二和第四部分,管理者可基于预测推理来确定该客户端可能还将需要总体数据集402的第一部分。结果,客户端将基于群组标识符和/或掩码1101移动到群组406-4。

各种特征可被实现在一些实施例中。例如,在一些实施例中,可对群组中的成员进行周期性地评估。因此,例如,管理者106每n分钟就使用预测模块110来为各客户端预测新的掩码和对应的群组标识符。可基于预测将各客户端移动到不同的群组中。因此,群组可能会随时间而变化。或者在非预测性实施例中,客户端更新需求可被周期性地评估。

在一些实施例中,当群组成员变化时,可从图中添加或移除节点。例如,如果一群组没有成员,则可通过简单地将空节点的任何子节点连接到空节点的(诸)父节点来从图中移除节点。通过图2a和图2b之间的差异来例示这一点的一示例。如果节点204-4从图200中移除,则节点204-4的子节点204-7将简单地被连接到节点204-4的父节点204-1。这可以使得遍历图200’以标识对等体变得更加简单,因为需要遍历较少的节点来找到与具有可能是客户端的对等体的成员的群组相关联的父节点。随着相应的群组以类似(而不是相反)的方式被创建,节点可被添加。

当父节点的群组中存在足够数量的客户端时,一些实施例可进一步被优化成从图中移除群组和/或节点。例如,在模拟环境中,许多客户端机器将逐渐从分层结构的底部的部分移动到更靠近分层结构顶部的部分。当大量客户端被移动到分层结构的较高部分中的相应群组时,图的较低节点(以及对应的群组)可被消除。在这种情况下,某些客户端可能不会被添加到群组中,而是可从具有适当字节掩码的客户端的群组中选择一个或多个对等体。因此,例如,可添加需要总体数据集402的第一部分并因此具有字节掩码1000的新的客户端。假设随着时间的推移,大量客户端已被添加到群组406-3中。由于该群组中的客户端数量众多,因此很少考虑客户端过载或者需要将客户端保留为其他客户端的对等体。因此,图400可被修剪以消除节点404-6、404-8和404-9以及连到这些节点(以及它们对应的群组)的任何子节点。节点404-3可然后被指定为具有字节掩码1011、0011、1001、1000、0001、1010和0010的任何新的客户端的入口点。因此,具有字节掩码1000的新的客户端可直接与群组406-3中的一个或多个对等体配对。注意,几个节点可能在它们的群组中具有足够的客户端,并且可覆盖重叠的字节掩码。在此情况下,各种负载平衡或随机分布技术可被用于标识对等体的群组和客户端。

下面的讨论现在涉及可被执行的多个方法和方法动作。尽管这些方法动作可以以特定次序被讨论或在流程图中被例示为以指定次序发生,但是除非特别指明否则不需要任何特定排序,或者因某一动作取决于在该动作被执行之前完成的另一个动作而要求特定排序。

现在参考图5,例示出方法500。方法500包括用于标识客户端的对等体,以便于该客户端获得数据的动作。方法500包括从客户端接收数据集的标识和该数据集的一个或多个字节范围的指定(动作510)。例如,客户端可能知道需要更新哪个数据集,以及需要该数据集的哪些字节范围。客户端可将此信息提供给对等体确定服务。

结果,方法500进一步包括标识与数据集的一个或多个字节范围相关联的一个或多个其他客户端以充当该客户端的对等体(动作520)。例如,对等体确定服务可标识具有/需要至少与该客户端相同字节范围的一个或多个其他客户端,并将它们标识为该客户端的对等体。

该方法500进一步包括提供将其他经标识的客户端中的一个或多个作为该客户端的对等体的指示。因此,例如,对等体确定服务可将其他客户端标识为该客户端的对等体。

方法500可被实践,其中对其它经标识的客户端中的一个或多个的指示是一个或多个对等体端点的标识。

方法500可被实践,其中一个或多个其它经标识的客户端与数据集的指定的一个或多个字节范围完全地相关联,其中一个或多个其它经标识的客户端与数据集的全部指定的一个或多个字节范围相关联,并且不与数据集的附加的字节范围相关联。因此,例如以上所例示的,对等体可能被选自相同的客户端群组,其中客户端按其所具有/需要总体数据集中的哪些部分被分组。

方法500可被实践,其中一个或多个其它经标识的客户端与数据集的指定的一个或多个字节范围的超集相关联,使得一个或多个其它经标识的客户端除了数据集的一个或多个附加的字节范围之外,还具有全部一个或多个指定的字节范围。

因此,例如以上所例示的,如果不能从相同的群组中标识出客户端的对等体,则可在父节点群组中选择出对等体,其中父节点群组的客户端具有/需要总体数据集的与该客户端相同的部分,除此之外还需要总体数据集的其他部分。

在一些此类实施例中,方法500可包括使用图来通过以下标识一个或多个其他经标识的客户端:使用与一个或多个指定的字节范围相关联的虚拟内容标识符来标识该图的入口节点并且从该入口节点向上分层地遍历该图以标识与所指定的一个或多个字节范围的超集相关联的客户端。因此,如以上所例示的,实施例可遍历图以找到与群组相对应的父节点以标识具有总体数据集部分的超集的群组。

使用图的各实施例可被实现,其中方法500进一步包括优化图以修剪图的节点或向图添加节点。这可随着群组成员的消失或群组的形成而实时地完成。替换地,这可在优化循环期间被周期性地执行,以基于变化的群组成员标识需要被修剪或被添加的节点。如上所述,在一些实施例中,即使群组可能不是空的,相应的节点仍可基于父节点而被修剪到与具有大量成员的群组相对应的节点,该节点能够为与经修剪的节点相对应的群组中的任何成员充当对等体点。

方法500可进一步包括使用数据集中的一个或多个字节范围来动态地创建虚拟内容标识符。例如,如以上所例示的,每个字节范围可以与掩码中的位相关联。如果需要给定字节范围,则可设置位。标识符可基于所设置的位。

方法500可被实践,其中将与数据集的一个或多个字节范围相关联的一个或多个其他客户端标识为客户端的对等体包括标识客户端,其中针对来自该数据集的每个字节范围的数据而言,该一个或多个其他客户端要么具有该字节范围内的数据要么需要该字节范围内的数据。替换地,方法500可被实践,其中将与数据集的一个或多个字节范围相关联的一个或多个其他客户端标识为客户端的对等体包括标识已经具有来自该数据集的一个或多个字节范围中的全部数据的客户端。因此,在一些实施例中,各实施例可尝试仅标识具有特定数据的对等体,而不是寻找具有/需要数据的对等体。

现在参考图6,例示出方法600。该方法包括用于标识客户端的对等体,以便于该客户端获得数据的动作。然而,与图5中所例示的方法相比,预测算法可被用于确定客户端可能需要哪些数据。方法600包括从客户端接收数据集的标识和针对该客户端已经具有的数据集的各部分的该数据集的一个或多个字节范围的指定。因此,例如,客户端可向对等体确定服务标识客户端具有总体数据集的特定部分。

方法600进一步包括预测客户端将需要的数据集的附加的字节范围。这可以基于客户端已经具有的字节范围。替换地或附加地,这可以基于其他用户输入或其他因素。

结果,方法600进一步包括标识与数据集的一个或多个字节范围和数据集的附加的字节范围相关联的一个或多个其他客户端以充当该客户端的对等体。例如,各实施例可标识具有/需要该客户端所具有的总体数据集的字节范围以及该客户端预测需要的字节范围的其他客户端。

方法600进一步包括提供将一个或多个其他经标识的客户端作为该客户端的对等体的指示。因此,例如,各实施例可向客户端标识可充当对等体的其他客户端。

方法600可被实践,其中当客户端从数据集获得附加数据时,可针对相同客户端周期性地重复动作。因此,例如,在模拟实施例中,可能会周期性地需要新的数据。因此,可重复各种动作以获得总体数据集的新部分。

方法600可被实践,其中一个或多个其它经标识的客户端与数据集的一个或多个指定的字节范围以及数据集的预测的附加字节范围相关联,其中一个或多个其它经标识的客户端与数据集的全部一个或多个指定的字节范围和数据集的预测的附加字节范围相关联,并且不与数据集的附加的字节范围相关联。在此情况下,“理想对等体”被确定。因此,例如以上所例示的,对等体可能被选自相同的客户端群组,其中客户端按其所具有/需要总体数据集中的哪些部分被分组。

方法600可被实践,其中一个或多个其它经标识的客户端与数据集的一个或多个指定的字节范围以及数据集的预测的附加字节范围的超集相关联,其中除了数据集的一个或多个其他附加的字节范围之外,一个或多个其它经标识的客户端与数据集的全部一个或多个指定的字节范围和数据集的预测的附加字节范围相关联。

方法600可进一步包括:使用图来通过以下标识一个或多个其他经标识的客户端:使用与一个或多个指定的字节范围和预测的附加字节范围相关联的虚拟内容标识符来标识该图的入口节点并且从该入口节点向上分层地遍历该图以标识与数据集的一个或多个指定的字节范围和数据集的预测的附加的字节范围的超集相关联的客户端。如先前所例示的,各实施例可允许用于优化图形以修剪节点或将节点添加到图的方法。

方法600可被实践,其中将与数据集的一个或多个字节范围和数据集的附加的字节范围相关联的一个或多个其他客户端标识为客户端的对等体包括标识客户端,其中针对来自该数据集的每个字节范围的数据而言,该一个或多个其他客户端要么具有该字节范围内的数据要么需要该字节范围内的数据。

参考图7,各方法可由计算机系统来实践,计算机系统700包括一个或多个处理器702以及诸如计算机存储器这样的计算机可读介质。特别是,计算机存储器可以存储计算机可执行指令,该计算机可执行指令在由一个或多个处理器执行时使各种功能得以被执行,诸如各实施例中记载的动作。

本发明的各实施例可以包括或使用包括计算机硬件的专用或通用计算机系统700,如以下更详细讨论的。本发明范围内的各实施例也包括用于实现或存储计算机可执行指令和/或数据结构的实体及其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统700访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质(诸如介质704)。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种显著不同的计算机可读介质:物理计算机可读存储介质和传输计算机可读介质。

物理计算机存储介质704包括ram、rom、eeprom、cd-rom或其他光盘存储(诸如cd、dvd等)、磁盘存储或其他磁存储设备、或可被用来储存计算机可执行指令或数据结构形式的所需程序代码装置且通过通用或专用计算机可访问的任何其他介质。

“网络”被定义为使得电子数据能够在计算机系统和/或模块和/或其它电子设备之间传输的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传递或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可被用来携带所需要的以计算机可执行的指令或数据结构的形式存在的程序代码装置并通过通用或专用计算机可访问的网络712和/或数据链路。上述的组合也被包括在计算机可读介质的范围内。

此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输计算机可读介质自动转移到物理计算机可读存储介质(或者相反)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块710(例如,“nic”)内的ram708中,并且然后最终被传输至计算机系统ram和/或计算机系统700处的较不易失性的计算机可读物理存储介质(诸如介质704)。因此,计算机可读物理存储介质可以被包括在同样(或甚至主要)利用传输介质的计算机系统组件中。

计算机可执行指令706包括例如使通用计算机、专用计算机或专用处理设备执行某一功能或一组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例而公开的。

本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括但不限于:个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络pc、小型计算机、大型计算机、移动电话、pda、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备二者中。

替换地或附加地,此处描述的功能可以至少部分由一个或多个硬件逻辑组件来执行。例如、但非限制,可使用的硬件逻辑组件的说明性类型可包括现场可编程门阵列(fpga)、程序专用的集成电路(asic)、程序专用的标准产品(assp)、片上系统系统(soc)、复杂可编程逻辑器件(cpld)、等等。

本发明可以以其他具体形式来体现,而不背离其精神或特征。所描述的实施例在全部方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的全部改变应被权利要求书的范围所涵盖。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1