识别高效的目标服务器的方法和装置转让专利

申请号 : CN201110423096.9

文献号 : CN102523314B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : D.G.萨勒三世

申请人 : 微软技术许可有限责任公司

摘要 :

公开了一种或多种用于识别按照针对请求机器的往返时间(RTT)排序的目标服务器列表的技术和/或系统。当客户端与地址(比如IP地址)交互时,当访问远程服务时,针对地址收集RTT,或者RTT可以针对地址范围得出,并且被保存在数据库中。当客户端随后请求访问远程服务时,目标服务器列表被返回、分别被对应的地址识别。通过确定与数据库中的匹配地址或范围相关联的预期RTT并且按照它们相应的预期RTT来分类目标服务器,从而可以按照效率来分类目标服务器。

权利要求 :

1.一种用于访问因特网的方法,包括:针对请求客户端识别包括多于一个的目标服务器的各个标识的列表;

基于响应于所述请求客户端与所述多于一个的目标服务器之间的历史交互对应的各个往返时间(RTT),对列表内的多于一个的目标服务器的标识进行排序;其中所述目标服务器的标识是地址。

2.根据权利要求1所述的方法,所述目标服务器的标识包括下列至少之一:网际协议(IP)地址;

IP地址加端口;以及

IP地址加协议。

3.根据权利要求1所述的方法,所述多于一个的目标服务器各不相同。

4.根据权利要求1所述的方法,所述多于一个的目标服务器与一个站点相关联。

5.根据权利要求1所述的方法,包括基于站点名确定所述列表。

6.根据权利要求1所述的方法,包括从域名系统接收所述多于一个的目标服务器的标识。

7.一种用于访问因特网的装置,包括:识别组件,配置用于针对请求客户端识别包括多于一个的目标服务器的各个标识的列表;

排序组件,配置用于基于响应于所述请求客户端与所述多于一个的目标服务器之间的历史交互的各个往返时间(RTT),对列表内的多于一个的目标服务器的标识进行排序;

其中所述目标服务器的标识是地址。

8.根据权利要求7所述的装置,所述目标服务器的标识包括下列至少之一:网际协议(IP)地址;

IP地址加端口;以及

IP地址加协议。

9.根据权利要求7所述的装置,所述多于一个的目标服务器各不相同。

10.根据权利要求7所述的装置,所述多于一个的目标服务器与一个站点相关联。

11.根据权利要求7所述的装置,包括确定组件,配置用于基于站点名确定所述列表。

12.根据权利要求7所述的装置,包括接收组件,配置用于从域名系统接收所述多于一个的目标服务器的标识。

说明书 :

识别高效的目标服务器的方法和装置

背景技术

[0001] 多个远程服务器可以由使用普通名称的请求客户端寻址。例如,该客户端可能希望导航到www.exampledomain.com。在该实例中,对于www.exampledomain.com的远程访问可以由多个服务器(或服务器群)提供。通常,远程服务的提供者可以将针对该服务的远程目标服务器设置在地理上不同的位置(例如,伦敦、纽约和洛杉矶),以便向许多用户提供更好的服务。例如,在英格兰的用户可能希望连接到伦敦而不是纽约的目标服务器,因为伦敦连接将典型地提供更高效的连接(例如,更快的服务),从而提供更好的用户体验。

发明内容

[0002] 该发明内容被提供以通过简化形式引入下面的具体实施方式中进一步描述的概念的选择。该发明内容不旨在标识要求保护的主题的关键因素或必要特征,也不旨在用于限制要求保护的主题的范围。
[0003] 当客户端具有要从中选择的目标服务器(例如,DNS服务器、由DNS查询返回的web服务器等)的网际协议(IP)地址集合时,对该客户端而言可能期望以期望的方式对它们进行排序,比如可以将性能最好(most performant)(例如,最快连接)的放在第一位。目标服务器可以在地理上不同(例如,在不同的州、国家或洲中),并且更靠近客户端的目标服务器通常提供更快的连接。当从用于排序的请求返回的IP地址在地理上不同时,排序应当考虑位置。然而,当前技术和系统不负责(account for)各目标在地理上远离时的情形,这可能导致减弱的用户体验。
[0004] 因此,公开了一种或多种提供选择可以具有更快连接的目标服务器而不改变服务器的技术和/或系统。而且,在先前技术和/或系统典型地利用(带宽消耗)主动(active)探测和/或附加服务器相关数据做出关于选择的决定的情况下,所公开的技术和/或系统可以仅利用现有服务器相关信息(例如,IP地址和往返时间)来识别高效目标服务器,从而可能消耗更少带宽和/或其他开销。
[0005] 在用于识别按照针对请求客户端机器的往返时间(RTT)排序的目标服务器的列表的一个实施例中,从所述请求客户端与对应于已经满足来自该客户端的在前请求的目标服务器的地址(例如IP地址)之间的历史交互的数据库收集或得出RTT。所收集或得出的RTT可以对应于目标服务器地址,其可以被访问以满足来自客户端和/或来自对应于目标服务器的地址范围的当前请求。因此,对应于所收集或得出的预期RTT的地址列表和/或对应的目标服务器可以根据预期的RTT排序,以使得可以针对当前请求产生期望(例如最短)响应时间的目标服务器例如可以被置于列表顶部。
[0006] 为了实现前述和相关目的,下面的描述和附图阐释了某些说明性方面和实现方式。这些仅仅指示了可以使用一个或多个方面的各种方式中的一些。本公开的其他方面、优点和新颖特征将在结合附图考虑时根据下文的详细描述而变得清楚明白。

附图说明

[0007] 图1是用于识别按照来自请求机器的(预期的)往返时间排序的目标服务器列表的示范性方法的流程图。
[0008] 图2是图示本文所述方法的一个或多个部分的一个实施例的流程图和伴随的说明性实例。
[0009] 图3是图示本文所述方法的一个或多个部分的一个实施例的流程图和伴随的说明性实例。
[0010] 图4是用于识别按照来自请求机器的(预期的)往返时间排序的目标服务器列表的示范性系统的组件图。
[0011] 图5是图示可以实现本文所述的一个或多个系统的实例实施例的组件图。
[0012] 图6是包括被配置成体现本文所阐述的一个或多个设置(provision)的处理器可执行指令的示范性计算机可读介质的图示。
[0013] 图7图示可以实现本文所阐述的一个或多个设置的示范性计算环境。

具体实施方式

[0014] 现在参照附图描述要求保护的主题,其中自始至终相似的附图标记用于指代相似的元件。在下面的描述中,为了解释的目的,阐述了许多特定细节,以便提供对要求保护的主题的彻底理解。然而,可能明显的是,要求保护的主题可以在没有这些特定细节的情况下被实践。在其他实例中,以框图形式示出结构和设备,以便便于描述要求保护的主题。
[0015] 可以设计一种可以识别高效满足来自客户端的请求的目标服务器的方法。在客户端与网际协议(IP)地址之间发送的数据的历史往返时间(RTT)可以被保存或被用于得出用于一定的IP地址范围的聚集的RTT状态。可以将从当前请求返回的目标服务器的IP地址与所保存的历史数据进行比较,以识别目标服务器的预期RTT。目标服务器的列表因此可以例如根据针对当前请求的预期RTT来排序以识别满足请求的、期望的(例如最高效的)目标服务器。
[0016] 图1是用于识别按照针对请求客户端机器的往返时间(RTT)排序目标服务器列表的示范性方法100的流程图。该示范性方法100开始于102处并且涉及在104处针对客户端与之交互的远程服务器的诸如网际协议(IP)地址、IP地址加关联的端口、和/或IP地址加关联的协议(例如TCP、UDP)等(例如,其中“加”并不暗示算术运算)之类的地址收集RTT。例如,随着时间的推移,客户端可以与提供对因特网站点、远程服务、网络连接和/或对等连接等等访问的多个远程服务器交互。在该实例中,在与远程服务器交互期间,用于数据分组传输的RTT可以被识别并与对应的地址相关联。以此方式,在一个实施例中,所述地址和对应的RTT可以被保存在例如数据库(例如包括满足来自客户端的在前请求的IP地址表和对应的RTT)中。
[0017] 在另一个实施例中,RTT可以针对一定地址范围得出。例如,IP地址可以被保存在包括一个或多个IP地址范围的数据库中。在该实例中,当获得针对该范围的IP地址的RTT时,该RTT可以用于确定该范围的公共RTT,比如平均值、中值、最好、最小和/或一些其他满足期望RTT特性的统计推导。例如,最慢的RTT可以被分配用于该IP地址范围,以便在确定哪一个目标服务器在后续通信中使用时提供最坏场景。
[0018] 在示范性方法100中的106处,目标服务器地址列表可以响应于来自客户端的当前请求而被接收。例如,当客户端尝试导航到网站时,可能存在被配置成服务或以另外方式提供对该网站的访问的超过一个远程服务器。网站和其他远程服务典型地提供多个服务器位置以尝试为许多位置的用户提供更好的用户体验。例如,连接到纽约的网站的服务器的俄亥俄州的用户与他们连接到伦敦的网站的服务器的情况相比可能具有不同的用户体验。而且,爱尔兰的用户在连接到伦敦的网站服务器时与在连接到纽约的网站服务器时相比将具有不同的用户体验。提供服务于不同用户的不同服务器(例如,或者服务器群)可以提供例如改进的用户体验(例如,更快的连接速度,更快的上传和下载)。
[0019] 当用户尝试导航到远程服务时,多个目标服务器地址可以响应于请求而被返回(例如可以服务于对访问远程服务的客户端请求的服务器)。在一个实施例中,所述请求客户端可以从利用其连接到远程服务的目标服务器列表中选择IP地址之一。然而,例如在不知道哪个地址可以提供期望的(例如,最高效的)连接(例如,最快的数据传输速度)的情况下,所述请求客户端可以连接到较不高效的目标服务器,从而可能导致较不理想的用户体验。
[0020] 在示范性方法100的108处,从当前请求返回的目标服务器列表根据RTT(例如,预期的RTT)排序,所述RTT从包括例如先前满足一个或多个来自客户端的请求和/或从针对IP地址范围的RTT得出的地址(例如,IP地址的范围、IP地址加关联的端口和/或IP地址加关联的协议等)的RTT的数据库识别。这里,数据库中的相应RTT可以从客户端与数据库中的地址(例如IP地址范围中的IP地址)之间的历史交互收集。即,当前请求可以返回用于可以满足当前请求的目标服务器的地址列表,并且数据库可以包括用于地址的历史RTT(例如或得出的RTT),其中对应的目标服务器(到数据库中的地址)可能已经满足来自客户端的在前请求,和/或具有落入或以另外方式对应于数据库中的地址范围的地址。如前所述,目标服务器可以位于不同的地理位置,并且基于该位置和连接可以提供不同的用户体验。
[0021] 在该实例中,可以将可满足当前请求的目标服务器的地址与保存信息的数据库中的地址进行比较。例如,与数据库中的地址相关联的RTT可以用于排序可以满足当前请求的目标服务器的返回地址;并且,在该实例中,排序列表中第一或最顶部的目标服务器可以包括最高效的(例如,最快的、最短的)RTT。以此方式,例如,客户端可以选择满足对远程服务的请求的最高效的目标服务器,并且可以具有比例如服务器被随机选择或以对客户端的旋转模式选择的情况更好的用户体验。
[0022] 在将目标服务器的地址列表排序之后,示范性方法100在110处结束。
[0023] 图2是图示本文所述的方法的一个或多个部分的一个实施例200的流程图和伴随的说明性实例。在202处,客户端254导航到站点,比如远程服务、网站或一些其他在线接入点。通常,例如,用户可以通过将站点名称或地址输入到浏览器导航字段中来导航到该站点。作为另一个实例,应用可以尝试通过发送解析站点或服务的名称的请求来可编程地访问该站点。
[0024] 在该说明性实例中,客户端可以访问分别由一个或多个目标服务器250服务的多个站点。而且,目标服务器可以连接到客户端254为了访问站点或服务可以连接到的因特网252(例如,或一些其他网络)。在204处,站点服务器250的一个或多个的IP地址可被解析。例如,域名系统(DNS)可以被用于将站点名称解析为用于该站点的目标服务器的一个或多个IP地址。在该实例中,本地DNS(LDNS)服务器可以由客户端254通过因特网252联系,并且针对该站点名称LDNS可以联系权威DNS(ADNS)服务器。而且,ADNS可以为服务于该站点的目标服务器解析一个或多个IP地址,并且将它们返回到LDNS,其又例如将它们返回到客户端。
[0025] 在206处,在一个实施例中,当客户端254使用返回的IP地址与目标服务器交互时,在客户端处的IP栈可以管理连接信息。可以理解,在一个或多个地址被返回的情况下,这些地址可以被排序(例如,基于任何在前信息)并且可以基于该排序选择期望地址。
[0026] 而且,在一个实施例中,在请求客户端254与IP地址交互时,在208处,往返时间(RTT)可以被确定。例如,当数据分组从客户端发送到该IP地址时,服务器做出响应所花费的时间可以被识别并被IP栈收集。作为说明性实例,针对与客户端机器有关的IP地址的RTT典型地由TCP/IP栈来维护至少所述连接和/或会话的持续时间。
[0027] 在一个实施例中,IP地址的数据库256可以连同相关联的针对IP地址的RTT被维护。在请求客户端254与该IP地址交互时,该数据库256可以填充有对应于IP地址的RTT。在210处,诸如由IP栈收集的RTT样本可以被检索以便保存在数据库256中并且被分配给客户端正与其交互的IP地址(例如,用于响应服务器250)。
[0028] 在一个实施例中,维护与RTT相关联的IP地址的数据库256可以包括维护包括一个或多个IP地址范围的数据库,其中相应的一个或多个范围分别与RTT相关联。在该实施例中,在212处,RTT可以与在请求机器与一定范围内的IP地址交互时的IP地址的该范围相关联(例如被分配到该范围),如下文进一步详细所述。在该实施例中,例如一个或多个IP地址范围可以在该数据库中维护,并且RTT可被分配给包括与来自IP栈的RTT样本相关联的IP地址的范围。
[0029] 以此方式,例如,可以以更高效的方式管理数据库,其中IP地址的范围与RTT相关联,而不是针对一个IP地址单独保存一个RTT。而且,在一个实施例中,IP地址的范围可以被更新,比如当新IP地址交互由客户端进行和/或用于该范围的新RTT被识别时。在该实例中,基于客户端交互,数据库可以是动态的(例如,即时或实时地改变);并且因此可能在存储装置的使用方面是高效的。此外,数据库可以例如由客户端本地地存储,和/或其至少部分可以被远程地存储在例如基于云的数据管理系统中。
[0030] 在一个实施例中,由数据库维护的IP地址的范围可以与IP地址的洲级分配相关联。例如,因特网编号分配机构(IANA)提供全球IP地址分配以及其他IP相关系统分配。IANA将IP地址块分配给若干区域因特网注册机构(RIR),其包括非洲网络信息中心(AfriNIC)、因特网编号美国注册机构(ARIN)、亚太网络信息中心(APNIC)、拉丁美洲和加勒比海网络信息中心(LACNIC)和欧洲IP网络资源协调中心(RIPE NCC)。这些RIR典型地遵循区域政策以向客户提供IP地址,客户包括因特网服务提供商(ISP)和终端用户组织,比如公司。在该实施例中,分配给相应的RIR的IP地址块可以例如在数据库中维护以便于识别目标服务器的通用位置(例如,基于洲)。
[0031] 在一个方面,抽象数据模型可以被提供用于维护(例如,存储、提供、管理、更新)IP地址和关联的RTT。在一个实施例中,“全球网络列表”可以包括若干条目(例如,列),比如:包括主机现在或先前附接到的网络的本地(例如,主机本地)标识符的“网络ID(NetworkID)”;包括主机附接到该网络的最后一次的时间戳的“最后访问的(LastVisited)”;包括与网络ID相关联的表的“Rtt表(RttTable)”,其可以包括以下条目(例如,列):包括行范围的第一IP地址的“开始地址(StartAddress)”;包括行范围中的最后一个IP地址的“结束地址(EndAddress)”;包括对行范围中地址的预期最小RTT(例如,以毫秒为单位)的“MinRTT”;以及包括最后一次MinRTT更新的时间戳的“最后更新的(LastUpdated)”。
[0032] 而且,在一个实施例中,所述抽象模型可以包括全球洲表,其可以包括以下条目(例如,列):IP地址前缀;IP地址前缀长度;以及“洲ID(ContinentID)”,比如用于ARIN、RIPE、APNIC、LACNIC或AFRNIC。在该实施例中,例如,数据库可以包括用于相应的洲级区域的相应的IP地址范围。其他实施例也被设想,例如具有国家、州和/或其他地理粒度(granlarities)等的表。
[0033] 在一个方面,RTT样本被接收并被填充(populate)到数据库。在一个实施例中,在该方面,可以使用一种算法接收RTT样本,比如针对IP地址范围的“MinRTT”样本。例如,一种算法代码可以周期性地轮询(poll)TCP数据库,比如通过使TCP调用在RTT样本可用时的内部“样本可用”功能。作为另一个实例,应用编程接口(API)可以用于针对其他协议(比如DNS)轮询的RTT样本。作为附加实例,比如当传输控制协议(TCP)提供RTT样本、此时新的一个RTT样本变得可用(例如,在接收到响应时)的情况下,可以使用非轮询方案。
[0034] 在一个实施例中,在该方面,当RTT样本得到远程IP地址R和本地IP地址L时,可以执行下述动作。本地IP地址L(例如,被分配给到特定网络的本地主机的连接)可以用于确定使用哪个RTT表(如果存在超过一个表)。远程IP地址R可以在RTT表中被查找以看看它是否落入某行的范围内。如果没有找到范围,则例如可以开始新行(例如,或者现有的行范围可以扩展以覆盖IP地址),和/或一些日期标准可以用来创建新行(例如,如果“最后访问的”满足某些标准)。
[0035] 而且,如果RTT样本满足某些标准(例如,时间相关、速度相关或一些阈值),则“MinRTT”可以被更新以说明RTT样本值(例如,使用移动平均)。此外,“最后更新的”可以被更新到当前时间戳。在该实施例中,可以确定两行或更多行可以被组合。例如,如果新IP地址包括范围的结束地址,并且它毗邻(例如,或在某个范围阈值内)另一个范围的结束地址,则这两个范围可以组合。在一个实施例中,当组合IP地址范围时,例如来自相应范围的MinRTT是相似的,使得(极大地)不同的MinRTT不被组合。
[0036] 为了节约存储器,例如可能重要的是,不允许RTT表中的多个行无限增长。在一个实施例中,最大数量的行(例如,一千)可以用作上限,并且这些行可以在需要时被从表中逐出。例如,如果该表是充满的(例如,满足上限),则最旧的现有行(例如至少最近更新的)可以在创建新行之前被逐出,比如通过使用相应行中的“最后更新的”字段。在一个实施例中,原始行可以被分割,例如以说明用于远程IP地址的新MinRTT样本,特别是当新MinRTT样本明显不同于分割之前所述范围的MinRTT时(例如,在一些增量(delta)内,比如20毫秒内)。
[0037] 在一个实施例中,当对两个IP本地/远程地址对进行比较以排序时,预期的MinRTT可以从用于相应对的表中识别,并且可以与针对该对的MinRTT估计进行比较。作为实例,具有较低MinRTT估计的对可被选择。在该实施例中,当在各对之间存在联系的情况下(例如,在MinRTT的值在彼此的某个阈值范围内并且因此不必确切相等的情况下),相应的IP地址的洲ID可以从数据库中识别,并且如果一对具有含相同洲ID的地址并且另一对具有含不同洲ID的地址,则可以选择具有相同洲ID的对。
[0038] 图3是图示本文所述方法的一个或多个部分的一个实施例300的流程图和伴随的说明性实例。在302处,客户端352例如通过使用因特网358导航到在线站点或服务。例如,用户可以将站点地址或名称输入到驻留在客户端352的浏览器中,或者客户端352所使用的应用可以可编程地尝试访问远程服务或站点。
[0039] 在304处,客户端可以连接到因特网(例如,或者一些在线网络)以请求目标服务器以求来自本地域名系统(LDNS)服务器354的所请求的站点或服务。例如,连接到因特网的客户端典型地被分配LDNS服务器,其被用于将在线名称解析为目标服务器的IP地址。针对该站点/服务名称该LDNS服务器354可以识别权威DNS(ADNS)服务器356。该ADNS服务器由站点用来解析站点的目标服务器360的IP地址,并且例如将它们返回到请求LDNS服务器。
[0040] 在306处,针对来自客户端的请求,LDNS服务器354可以比如通过因特网358从ADNS服务器356请求目标服务器360。在308处,ADNS 356可以将用于该站点的目标服务器360的IP地址返回到LDNS服务器354。在310处,LDNS服务器354可以将可以满足所述请求的目标服务器360的IP地址列表返回到请求客户端352。
[0041] 在一个实施例中,所述IP地址可以不使用DNS来解析。例如,可以利用其他类型的名称解析,比如当使用NetBIOS名称时使用视窗因特网名称服务(WINS),或者在使用用于服务的因特网主机的“对等名称”时使用对等名称解析协议(PNRP)。作为另一个实例,一些客户端可以在访问远程服务时利用预配置的目标服务器IP地址。在该实例中,该客户端可以被预配置有地理上不同位置中的目标服务器的IP地址,比如用于在传播时到达最近的服务器。在该实施例中,用于目标服务器的IP地址列表可以使用任何适当的协议来提供。
[0042] 在312处,为了对返回的目标服务器IP地址进行排序,可以请求针对列表中相应IP地址的RTT。在314处,可以将用于目标服务器360的IP地址与数据库350中的IP地址范围匹配。例如,如果返回的目标服务器IP地址落入数据库中的IP地址范围内(例如,落入序列、块、段等内),则目标服务器IP地址可以被称为匹配该范围。在另一个实例中,用于目标服务器的IP地址可以直接在数据库350中找到。
[0043] 在一个实施例中,将目标服务器的IP地址与数据库中的IP地址范围进行匹配可以包括将该IP地址与最接近的IP地址范围匹配。例如,该目标服务器IP地址可以包括邻近一定范围的IP地址,或者可以落入来自该范围结束点的阈值数量的IP地址内。在该实例中,如果目标服务器IP地址落入该范围之外的期望阈值内,则目标服务器IP地址可以匹配该范围。
[0044] 而且,在一个实施例中,目标服务器IP地址与数据库中的IP地址范围的匹配可以包括将该IP地址与IP地址的洲级范围匹配。例如,如果目标服务器IP地址没有落入数据库中的范围内(例如,或者足够接近而离开(away)期望的阈值内),则该目标服务器IP地址可以与洲级范围匹配(例如分配给RIR的IP地址块)。以此方式,例如,至少目标服务器的通用、区域位置可以被识别。
[0045] 在316处,与数据库350中的IP地址范围相关联的RTT被检索用于被针对客户端352的请求而返回的目标服务器360。例如,可以针对匹配该范围的目标服务器IP地址而检索分配给IP地址范围的“MinRTT”值。而且,例如,可以从数据库350检索用于针对所述请求返回的相应的目标服务器IP地址的MinRtt值。
[0046] 在318处,针对所述请求返回的目标服务器360可以通过它们相应的RTT值来排序。在一个实施例中,目标服务器360可以例如从最快RTT到最慢RTT进行排序,其中具有最小预期MinRTT值的IP地址(例如,根据数据库确定的)可以被分配为列表中的第一个目标服务器,并且具有最大预期MinRTT值的IP地址可以被分配为列表中的最后一个目标服务器。以此方式,例如,列表上的第一个目标服务器可以包括对于客户端而言选择与之连接以便访问远程服务的最高效的目标服务器。
[0047] 在一个实施例中,所述对从请求返回的目标服务器列表的排序可以包括与地理上不同的目标服务器列表一起工作。例如,目标服务器360A可以存在于纽约,目标服务器360B可以存在于洛杉矶,且目标服务器360C可以存在于伦敦。在该实例中,如果客户端存在于俄亥俄州,则纽约的目标服务器360A可能与具有比其他两个目标服务器360B、360C更快的RTT的IP地址范围相关联。即使各个服务器360A、360B和360C可以提供对远程服务的访问,例如从俄亥俄州的客户端连接到360A可以提供更好的用户体验(例如,更快的上传和下载时间)。
[0048] 可以设计并使用用于识别具有到访问客户端的高效连接的、用于访问在线站点或服务的目标服务器的系统。图4是用于识别按照来自请求机器的往返时间(RTT)排序的目标服务器列表的示范性系统400的组件图。基于计算机的处理器402被配置成处理用于系统的数据,并且操作地与排序组件404耦合。该排序组件404被配置成使用相应的目标服务器456的地址通过往返时间(RTT)对目标服务器456的地址列表450进行排序。以此方式,例如,表示从客户端请求返回的目标服务器的网际协议(IP)地址450(例如和/或IP地址加关联端口、和/或IP地址加关联协议等)的未排序列表可以被布置到IP地址的排序列表452,使得更高的排序IP地址可以表示用于客户端请求的更高效的目标服务器。
[0049] 地址本地(locality)数据库组件406被操作地与排序组件404耦合。该地址本地数据库组件406存储地址(或地址范围)和对应的RTT,其中RTT已通过客户端与对应于地址的远程服务器456之间的一个或多个交互454而针对该地址被识别(例如,其中远程服务器先前已经满足了来自客户端的请求)。例如,当客户端与远程服务器456交互454时,远程服务器的IP地址可以连同针对远程服务器IP地址的RTT一起被保存在数据库中。以此方式,例如,当排序组件404接收到未排序IP地址的列表450时,可以针对列表中的相应IP地址检索RTT,并且可以使用该RTT对该列表进行排序。
[0050] 图5是图示可以实现本文所述的一个或多个系统的实例实施例的组件图。地址采样组件510可以根据与地址的交互554(比如通过因特网556)向地址本地数据库组件406提供针对该地址(比如IP地址)的RTT样本。而且,地址采样组件510可以包括收集针对客户端与之交互的地址的RTT的地址栈组件512。例如,当客户端通过因特网556连接到远程服务时,地址栈组件512可以识别用于该连接的RTT,或得出与该地址相关联的地址范围的RTT,并且RTT可以与远程服务的地址(或范围)相关联地被保存到数据库406。
[0051] 名称解析组件514可以向排序组件404提供分别由从站点名称解析的地址识别的目标服务器的列表。例如,当客户端通过因特网556发送访问远程服务的请求时,名称解析组件514可以检索远程服务使用的用于其目标服务器以便提供远程服务的IP地址列表。这些检索的IP地址450可以被提供给排序组件404,其可以利用例如地址本地数据库406来确定IP地址452的排序列表并且因此确定针对远程服务的连接期望的(例如最高效的)目标服务器。
[0052] 数据库管理组件516可以维护地址本地数据库406。维护地址本地数据库406可以包括将地址分配给数据库406中地址的相应范围。例如,在维护数据库406而不是维护针对相应IP地址的RTT的过程中,RTT可以被分配给IP地址范围,比如以减小数据库的大小。而且,数据库管理组件516可以通过将特定采样的地址分配给范围来组织地址。然而,数据库管理组件516还可以仅将相应的具有对应RTT的地址分配给数据库。而且,数据库管理组件516可以将RTT分配给对应范围的地址。例如,当样本RTT从地址采样组件510被接收时,它们可以例如适当地被分配到数据库中的IP范围,并且该范围RTT可以按需要更新。
[0053] 又一个实施例涉及包括被配置成实现本文所提出的一种或多种技术的处理器可执行指令的计算机可读介质。可以通过这些方式设计的示范性计算机可读介质在图6中被图示,其中实现方式600包括计算机可读介质608(例如,CD-R、DVD-R或硬盘驱动器的母板),其上是编码的计算机可读数据606。该计算机可读数据606又包括被配置成根据本文所提出的一个或多个原理操作的一组计算机指令604。在一个这样的实施例602中,处理器可执行指令604可以被配置成执行一种方法,比如图1的示范性方法100的至少一些。在另一个这样的实施例中,处理器可执行指令604可以被配置成实现一种系统,比如图4的示范性系统400的至少一些。许多这样的被配置成根据本文所提出的技术操作的计算机可读介质可以由本领域普通技术人员设计。
[0054] 尽管已经以特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,所附权利要求中定义的主题不必限于上述特定特征或动作。相反,上述特定特征和动作是作为实现权利要求的实例形式而被公开的。
[0055] 如本申请所使用的术语“组件”、“模块”、“系统”、“接口”等等一般地旨在指计算机相关实体:硬件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是但不限于是运行在处理器上的进程、处理器、对象、可执行应用、执行的线程、程序和/或计算机。通过图示,运行在控制器上的应用和该控制器二者都可以是组件。一个或多个组件可以存在于执行的进程和/或线程内,并且组件可以位于一个计算机上和/或分布在两个或更多计算机之间。
[0056] 而且,要求保护的主题可以被实现为使用标准编程和/或工程技术产生软件、固件、硬件或其任意组合以控制计算机实现所公开的主题的方法、装置或制造品。本文所使用的术语“制造品”旨在包含可从任意计算机可读设备、载体或介质访问的计算机程序。当然,本领域技术人员将认识到可以对该配置进行许多修改,而不脱离要求保护的主题的范围或精神。
[0057] 图7和随后的讨论提供了对实现本文所阐述的一个或多个设置的实施例的适当的计算环境的简短、概括的描述。图7的操作环境仅仅是适当的操作环境的一个实例并且不旨在建议关于操作环境的用途或功能的范围的任何限制。实例计算设备包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、移动设备(比如移动电话、个人数字助理(PDA)、媒体播放器等等)、多处理器系统、消费型电子设备、小型计算机、大型计算机、包括上述任意系统或设备的分布式计算环境,等等。
[0058] 尽管没有要求,但是在“计算机可读指令”被一个或多个计算设备执行的通用背景下描述实施例。计算机可读指令可以经由计算机可读介质来分布(下文讨论)。计算机可读指令可以实现为程序模块,比如执行特定任务或实现特定抽象数据类型的功能、对象、应用编程接口(API)、数据结构等等。典型地,该计算机可读指令的功能可以在各种环境中随意组合或分布。
[0059] 图7图示了包括被配置成实现本文所提供的一个或多个实施例的计算设备712的系统710的实例。在一种配置中,计算设备712包括至少一个处理单元716和存储器718。根据计算设备的确切配置和类型,存储器718可以是易失性的(比如RAM)、非易失性的(比如ROM、闪存等)或二者的某种组合。该配置在图7中由虚线714图示。
[0060] 在其他实施例中设备712可以包括附加特征和/或功能。例如,设备712还可以包括附加的存储装置(例如可移除和/或不可移除的),其包括但不限于磁存储装置、光存储装置等等。这种附加存储装置在图7中由存储装置720图示。在一个实施例中,用于实现本文所提供的一个或多个实施例的计算机可读指令可以在存储装置720中。存储装置720还可以存储用于实现操作系统、应用程序等的其他计算机可读指令。计算机可读指令可以载入存储器718中由例如处理单元716执行。
[0061] 本文所使用的术语“计算机可读介质”包括计算机存储介质。计算机存储介质包括以用于存储诸如计算机可读指令或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。存储器718和存储装置720是计算机存储介质的实例。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光存储装置、盒式磁带、磁带、磁盘存储装置或其他磁存储设备、或可以用于存储期望信息并可以被设备712访问的任何其他介质。任意这样的计算机存储介质可以是设备712的一部分。
[0062] 设备712还可以包括允许设备712与其他设备通信的通信连接726。通信连接726可以包括但不限于调制解调器、网络接口卡(NIC)、集成网络接口、射频发射器/接收器、红外端口、USB连接或用于将计算设备712连接到其他计算设备的其他接口。通信连接726可以包括有线连接或无线连接。通信连接726可以发射和/或接收通信媒体。
[0063] 术语“计算机可读介质”可以包括通信介质。通信介质典型地包含计算机可读指令或诸如载波或其他传输机构之类的“已调制数据信号”中的其他数据,并且包括任何信息递送介质。术语“已调制数据信号”可以包括这样的信号:该信号特性中的一个或多个按照将信息编码到信号中的方式来设置或改变。
[0064] 设备712可以包括输入设备724,比如键盘、鼠标、笔、语音输入设备、触摸输入设备、红外相机、视频输入设备和/或任何其他输入设备。设备712中也可以包括输出设备722,比如一个或多个显示器、扬声器、打印机和/或任意其他输出设备。输入设备724和输出设备722可以经由有线连接、无线连接或其任意组合连接到设备712。在一个实施例中,来自另一个计算设备的输入设备或输出设备可以被用作计算设备712的输入设备724或输出设备722。
[0065] 计算设备712的组件可以通过各种互连(比如总线)连接。这样的互连可以包括外围组件互连(PCI)(比如快速PCI)、通用串行总线(USB)、火线(IEEE 1394)、光学总线结构等等。在另一个实施例中,计算设备712的组件可以通过网络互连。例如,存储器718可以由位于不同物理位置中的、通过网络互连的多个物理存储器单元构成。
[0066] 本领域技术人员将认识到,用于存储计算机可读指令的存储设备可以跨越网络分布。例如,可经由网络728访问的计算设备730可以存储用于实现本文所提供的一个或多个实施例的计算机可读指令。计算设备712可以访问计算设备730并且下载计算机可读指令的一部分或所有以供执行。可替代地,计算设备712可以按需要下载多条计算机可读指令,或者一些指令可以在计算设备712处执行并且一些指令可以在计算设备730处执行。
[0067] 本文提供了实施例的各种操作。在一个实施例中,所述的一个或多个操作可以构成一个或多个计算机可读介质上存储的计算机可读指令,其在被计算设备执行时将使得计算设备执行所述操作。描述一些或所有操作的顺序不应当被解释为暗示这些操作必需是顺序相关的。本领域技术人员将理解具有本说明书的益处的可替代的排序。而且,应当理解,不是所有操作必需在本文所提供的每个实施例中存在。
[0068] 而且,本文所使用的词语“示范性的”意指用作实例、示例或例证。本文描述为“示范性的”任意方面或设计不必被解释为比其他方面或设计更有利。相反,词语“示范性的”的使用旨在以具体方式提出概念。如本申请中所使用的术语“或”旨在意指包含的“或”而非排除的“或”。即,除非另外指定或从上下文中清楚,“X使用A或B”意指自然包括排列的任意一个。即,如果X使用A;X使用B;或X使用A和B二者,则“X使用A或B”在前述任一示例中得到满足。此外,本申请和所附权利要求中所使用的冠词“一”一般地可以被解释为意指“一个或多个”,除非另外指定或从上下文清楚导向单数形式。
[0069] 而且,尽管已经相对于一个或多个实现方式示出并描述了本公开,但是本领域技术人员基于对本说明书和附图的阅读和理解将会想到等价变型和修改。本公开包括所有这样的修改和变型,并且仅由所附权利要求的范围限制。特别地关于由上述组件(例如元件、资源等)执行的各种功能,用于描述这样的组件的术语旨在对应于执行所述组件的指定功能(例如其在功能上是等价的)的任意组件(除非另外指示),即使在结构上与执行本文所示的本公开的示范性实现方式中的功能的公开结构不等同。此外,尽管本公开的特定特征已经相对于若干实现方式中的仅一个被公开,但是这种特征可以与如可以对给定或特定应用而言是期望和有利的其他实现方式的一个或多个其他特征组合。而且,就术语“包括”、“具有”、“含有”或其变形被用在具体实施方式或权利要求中而言,这样的术语旨在以与术语“包含”相似的方式包括。