CN102668513A - 用于在对等网络内对服务定位的方法和装置 - Google Patents
用于在对等网络内对服务定位的方法和装置 Download PDFInfo
- Publication number
- CN102668513A CN102668513A CN2010800575973A CN201080057597A CN102668513A CN 102668513 A CN102668513 A CN 102668513A CN 2010800575973 A CN2010800575973 A CN 2010800575973A CN 201080057597 A CN201080057597 A CN 201080057597A CN 102668513 A CN102668513 A CN 102668513A
- Authority
- CN
- China
- Prior art keywords
- node
- service
- search
- network
- request
- 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
Images
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/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/40—Support for services or applications
-
- 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/104—Peer-to-peer [P2P] networks
- H04L67/1061—Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
- H04L67/1068—Discovery involving direct consultation or announcement among potential requesting and potential source peers
- H04L67/107—Discovery involving direct consultation or announcement among potential requesting and potential source peers with limitation or expansion of the discovery scope
-
- 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/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- 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/104—Peer-to-peer [P2P] networks
- H04L67/1061—Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
- H04L67/1065—Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Telephonic Communication Services (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供一种用于在对等网络(P2P)(比如树环网络或者其它P2P网络)中支持服务定位能力的能力。在一个实施例中,提供一种用于在P2P网络内对服务定位的方法。P2P网络包括多个节点(包括执行用于在P2P网络内对服务定位的方法的目标节点)。目标节点包括搜索表,搜索表包括标识P2P网络的相应多个节点的多个条目。该方法包括检测对在P2P网络内搜索服务的请求并且朝着搜索表的节点中的至少一个节点发起服务搜索请求。服务搜索请求是对标识P2P网络的支持服务的至少一个节点的请求。服务搜索请求包括指示服务的信息和用于由接收服务搜索请求的节点使用的搜索范围。
Description
相关申请的交叉引用
本申请与标题为“METHOD AND APPARATUS FORDECOMPOSING A PEER-TO-PEER NETWORK AND USING ADECOMPOSED PEER-TO-PEER NETWORK”、于2009年12月17日提交的第12/640,049号美国专利申请[代理案号ALU/805520]有关,上述文献通过引用而整体结合于此。
技术领域
本发明涉及对等(P2P)网络领域并且更具体地但是并非排他地涉及在P2P网络内对服务定位。
背景技术
文件共享已经是密集搜索和基层使用的焦点由来已久。通过如下文件共享方式来实现文件共享,这些方式是针对该目的而具体设计的并且实施为具有与之关联的文件共享协议的不同文件共享系统。已经实施始于Napster、然后继续经过多代不同文件共享系统(比如gnutella、Kazaa、eDonkey、Winny和BitTorrent)的多个不同文件共享系统。除了这些文件共享系统之外,也在开发新系统(比如Share and Perfect Dark)。这些文件共享系统和关联协议通称为对等(P2P)文件共享系统/协议或者更简称为P2P文件共享应用。另外,除了P2P文件共享应用之外,还涌现在架构上与P2P文件共享应用不同的新一类P2P应用(P2P电视(P2PTV))。
P2P文件共享的流行从近期业务研究中不言而喻。例如Ellacoya Networks对美国一百万宽带用户的近期业务研究表明按分量划分主要业务类型如下:网络(web)(HTTP)-46%;对等(P2P)-37%;新闻组-9%;非HTTP流视频-3%;游戏-2%、IP语音(VoIP)-1%;以及其它-1%。HTTP业务分量高的主要原因是嵌入的视频流业务(比如来自YouTube的业务,该业务在上文提到的研究中占总业务的9.8%)。然而P2P文件共享仍然负责业务的大百分比,而随着P2PTV的涌现,业务数量有望急剧增加。
现有P2P应用的绝大多数涉及到文件共享;然而涉及到文件共享的现有P2P应用的大多数至少起初并非完全对等。实际上,多数现有P2P应用起初利用中央服务器以在P2P网络的成员之间协调活动。例如在bitTorrent中,尽管不同多条信息的下载为对等的,但是集中服务器(在bitTorrent中称为跟踪器)用来协调bitTorrent应用的活动。类似地,例如涉及到文件共享的许多其它P2P应用也具有相似特性(比如Napster和eDonkey)。然而使用中央服务器使现有P2P应用易受拥塞和故障影响并且还使现有P2P应用成为安全威胁的引人注意的目标。
然而不利的是,尽管现有P2P应用支持文件共享,但是现有P2P应用未支持搜索服务的能力。
发明内容
如下实施例解决了现有技术中的各种缺陷,这些实施例支持对等(P2P)网络(比如Chord(树环)网络或者其它适当P2P网络)中的服务定位能力。
在一个实施例中,提供一种用于在P2P网络内对服务定位的方法。P2P网络包括多个节点,这些节点包括执行用于在P2P网络内对服务定位的方法的目标节点。目标节点包括搜索表,该搜索表包括标识P2P网络的相应多个节点的多个条目。该方法包括检测对在P2P网络内搜索服务的请求并且朝着搜索表的节点中的至少一个节点发起服务搜索请求。服务搜索请求是标识P2P网络的支持服务的至少一个节点的请求。服务搜索请求包括指示服务的信息和用于由接收服务搜索请求的节点使用的搜索范围。
附图说明
可以通过结合以下附图考虑下文具体描述容易理解这里的教导:
图1描绘了示例Chord网络;
图2描绘了响应于图1的示例Chord网络的节点之一发起的服务定位搜索而在图1的示例Chord网络内发起的服务搜索请求消息;
图3描绘了用于在发起服务位置请求的节点生成服务搜索请求消息的方法的一个实施例;
图4描绘了用于在中间节点处理服务搜索请求消息的方法的一个实施例;
图5描绘了用于在中间节点处理服务搜索响应响应消息的方法的一个实施例;
图6描绘了示例Chord网络,该图描绘了在示例Chord网络中执行针对服务的渐进服务位置搜索的例子;
图7描绘了用于在图6的示例Chord网络中执行针对服务的渐进服务位置搜索的示例搜索范围;
图8描绘了用于使用对准式渐进搜索位置搜索在发起服务位置请求的节点生成服务搜索请求消息的方法的一个实施例;
图9A-9D描绘了响应于图1的示例Chord网络的节点之一发起的服务位置搜索而在图1的示例Chord网络内发起的服务搜索请求消息,这些图图示了在图1的示例Chord网络中执行针对服务的对准式渐进搜索位置搜索的例子;
图10描绘了适合用于在执行这里描述的功能时使用的通用计算机的高级框图。
为了有助于理解,相同标号已经在可能时用来标示各图共有的相同要素。
具体实施方式
提供服务定位能力用于在对等(P2P)网络内对服务定位时使用。
服务定位能力根据一个实施例使P2P网络内的目标节点能够在P2P网络搜索特定服务的位置(例如搜索P2P网络的支持服务的一个或者多个其它节点)。服务定位能力重用P2P网络的节点的现有搜索表以执行服务位置搜索。可以执行由目标节点发起的服务位置搜索使得向搜索表的所有节点并行发起服务搜索请求、向搜索表的所有节点串行发起服务搜索请求直至对服务定位或者穷尽搜索表、向搜索表的节点子集并行、然后向搜索表的任何剩余节点串行发起服务搜索请求直至对服务定位或者穷尽搜索表和/或使用任何其它适当方案。在服务位置搜索中,向节点发送的每个服务搜索请求包括指示所请求服务的信息、用于由接收搜索请求的节点使用的搜索范围并且可选地包括服务特有信息。服务搜索请求可以包括其它类型的信息。节点发起的服务位置搜索将至多生成M个搜索消息使得每个节点将至多接收M个响应消息(其中M是P2P网络的密钥空间的以位为单位的大小),因此整个P2P网络内的搜索被分布为使得搜索请求和/或响应消息未使P2P网络的单个节点超负荷。服务位置搜索能力使第一P2P网络中的节点能够通过使用服务定位能力来搜索第二P2P网络中的对象以标识第一P2P网络的如下节点,这些节点也是第二P2P网络的节点。将理解前文描述仅为对出于介绍服务定位能力的目的而提供的、对于服务定位能力的某些实施例的一般描述,因此服务定位能力的实施例并非旨在于受前文描述限制。
这里主要在特定P2P网络类型(即Chord网络)的背景内描绘和描述服务定位能力。在Chord网络中,分别地,在Chord网络的节点维护的搜索表称为指(finger)表,并且指表的每个条目称为指。将理解服务定位能力的原理可以应用于其它P2P网络类型,因此这里指代指表和关联指可以更一般地理解为指代搜索表和标识节点的关联条目。
图1描绘了示例Chord网络的高级框图。如图1中所示,Chord网络100包括逻辑上在环配置中布置的多个节点110。节点110各自存储可以在节点110之间共享的文件。节点110也可以托管可以使得其可由其它节点110使用的服务。节点110包括可以参与Chord网络的任何节点。例如节点110可以包括计算机、电话等。节点110各自被配置成提供服务定位能力的各种功能。
可以通过先结合图1的示例Chord网络100考虑Chord网络的一般操作来更好地理解Chord网络100在提供服务定位能力时的操作。
在Chord中,Chord网络的节点具有经由基于分组的网络(如比如IP网络或者任何其它适当网络)的网络连通性,并且Chord在下层基于分组的网络之上形成覆盖网络。Chord网络的节点以节点的节点ID为序在逻辑上布置于环中。使用散列函数来分配节点的节点ID。
在Chord中,可以参与Chord网络的节点数目基于Chord网络的密钥空间(地址空间)的大小。一般而言,密钥空间为M位,其中M可以是任何适当数。例如使用160位实现方式来提供在Chord网络中使用的典型密钥空间从而使密钥空间的大小等于2160或者~1.45×1048。一致散列函数用来将输入映射到160位的值(即:将输入映射到密钥空间中)。来自散列函数的输出均匀映射到密钥空间上。将理解可以使用诸如安全散列算法(SHA-1)、消息摘要算法5(MD5)等任何适当散列函数。散列函数的输出在映射到密钥空间上时提供用来在逻辑上将节点布置于Chord网络内的节点ID的集合。
在Chord中,活动节点(参与Chord网络的现有节点)和不活动节点(可以加入Chord网络的潜在节点)以节点的节点ID为序在逻辑上布置于环中。Chord以环绕增加节点ID值方向上设定环中的排序。在Chord网络中,在Chord网络的活动节点之间的连通是在环中的活动节点中的相邻节点之间的逻辑连通(因为不活动节点未连接到Chord网络并且因此仅为可以作为活动节点加入Chord网络的潜在节点)。以这一方式,从Chord网络中的目标活动节点的角度来看,在顺时针方向上的在环上的下一活动节点是目标活动节点的后代,并且在逆时针方向上的在环上的下一活动节点是目标活动节点的前代。
在图1中,为了清楚而显示活动节点和不活动节点。在图1中,Chord网络的密钥空间为6位(或者以顺时针方式从节点ID0到节点ID63连续编号的64个节点)在图1中,节点0、2-3、5-7、9、12、-13、16-24、26、29-30、32、34-35、37、41、43、45、49、51、53-54、56-58和62是活动的,并且剩余节点不活动。在图1中,在Chord网络100的活动节点之间的逻辑连通指示节点0连接到节点2、节点2连接到节点3、节点3连接到节点5并且以此类推而节点62连接到节点0以形成环。在Chord设定环中的排序时,使用以环绕(wraparound)顺时针方向上增加值,节点2称为节点0的后代,并且节点62称为节点0的前代,节点3称为节点2的后代,并且节点0称为节点2的前代并且以此类推。
如这里描述的那样,Chord网络支持文件共享,其中待共享的每个文件存储于Chord网络的活动节点中的一个或者多个节点上。在Chord中,使用用于标识Chord网络的节点的相同散列函数将文件的文件名散列到用于标识Chord网络的节点的相同密钥空间中。来自散列文件名的散列输出是用于文件的文件标识符。因此例如对于密钥空间为160位的Chord网络,Chord网络可以潜在地容纳1.45×1048个文件。在Chord中,如果具有与文件的文件ID匹配的节点ID的节点活动,则文件存储于该节点,而如果该节点不活动,则文件存储于具有比文件ID更大的节点ID的第一活动节点。
在图1中,Chord网络100可以容纳将存储如下的64个全部文件:节点0存储文件0和63;节点2存储文件1和2;节点3存储文件3;节点5存储文件4和5;节点6存储文件6;节点7存储文件7;节点9存储文件8和9;节点12存储文件10、11和12;节点3存储文件13,节点16存储文件14、15和16;节点17存储文件17;节点18存储文件18;节点19存储文件19;节点20存储文件20;节点21存储文件21;节点22存储文件22;节点23存储文件23;节点24存储文件24;节点26存储文件25和26;节点29存储文件27、28和29;节点30存储文件30;节点32存储文件31和32;节点34存储文件33和34;节点35存储文件35;节点37存储文件36和37;节点41存储文件38、39、40和41;节点43存储文件42和43;节点45存储文件44和45;节点49存储文件46、47、48和49;节点51存储文件50和51;节点53存储文件52和53;节点54存储文件54;节点56存储文件55和56;节点57存储文件57;节点58存储文件58;节点62存储文件59、60、61和62。
在一个最基本实施方式中,任何给定文件的仅一个副本存储于Chord网络中;然而可以运用不同方法以在Chord网络内存储文件的多个副本(例如为了在节点故障的情况下的弹性、负荷平衡等)。
例如在一个实施例中,可以通过使用商定的命名约定向文件的多个副本分配略有不同的文件名来在Chord网络中存储文件的多个版本。例如,如果文件的名称为“abc”,则可以向代表相同文件的文件名添加扩展名(比如“-n”)。在这一例子中,文件的多个副本可以存储于名称“abc”、“abc-1”、“abc-2”等之下。以这一方式,由于用于“abc”文件的多个文件名称不相同,所以不同文件名称的散列将产生不同散列输出并且因此产生不同文件ID、由此使文件的多个副本存储于Chord网络的不同节点中。
例如在一个实施例中,可以通过使用多个独立散列函数以使用文件名生成用于文件的多个文件ID(而不是上文描述的其中使用单个一致散列函数的实施方式)来在Chord网络中存储文件的多个版本。在这一实施例中,向Chord网络中播种文件的节点使用散列函数来确定文件的每个可能文件ID并且使用文件ID向Chord网络中插入文件的多个副本。在这一实施例中,在Chord网络中搜索文件的节点将确定文件的所有可能文件ID(通过使用每个散列函数来散列文件名)并且然后可以使用确定的文件ID来顺序或者并行搜索文件。
关于在Chord网络中存储文件的多个版本,将理解到,文件的多个版本可以用任何其它适当方式储存于Chord网络中。
如这里描述的那样,Chord使节点能够共享文件。为了使Chord网络的节点能够共享文件,Chord网络的每个节点需要能够搜索并且最终确定所需文件的位置以便能够获得所需文件。
在Chord中,每个节点维护搜索表。对于具有M位密钥空间的Chord网络,每个节点N将维护具有M个条目的搜索表,其中搜索表的条目称为“指”。在用于节点N的搜索表中,第i个指指向环上的与N相距至少2i-1的第一节点。一般而言,除非另有指示,术语“第i个指”将用来表示搜索表的第i个条目指向的节点。例如在Chord网络100中,节点0的第3个指为节点5。
节点的搜索表共同提供高效全局搜索算法,通过该算法可以确定Chord网络内的对象位置。
在图1中,密钥空间为6位,因此每个节点在它的搜索表中具有6个指。在图1中,可以如下表1中所示代表节点0上的搜索表:
指 | 2i-1 | 第一节点≥2i-1 |
1 | 1 | 2 |
2 | 2 | 2 |
3 | 4 | 5 |
4 | 8 | 9 |
5 | 16 | 16 |
6 | 32 | 32 |
表1
在Chord中,网络是动态的。在新节点加入Chord网络以及现有节点离开Chord网络时,可能影响在Chord网络的活动节点的搜索表。这样,在Chord中,每个活动节点K将定期更新它的关联搜索表。活动节点K可以用任何适当方式更新它的搜索表。例如活动节点K可以通过搜索节点(K+2i-1)来更新它的搜索表,因为来自执行这一搜索的结果将是用于搜索表的第i个指的值。将理解Chord网络的活动节点可以用任何其它适当方式更新它们的搜索表。
在Chord中,除了搜索表之外,每个节点也存储环中的它的后代和它的前代的标识。这一信息比如在新节点加入网络以及现有节点离开网络时以及在节点从故障中恢复时用于环维护。在一些Chord网络中,为了防范有多个并发节点故障的情形,节点可以存储环中的它的N个后代和它的N个前代的标识。
在Chord中,Chord网络的节点可以搜索并且从Chord网络的其它节点获得文件。Chord网络支持搜索算法,通过该算法,节点可以搜索从Chord网络中的其它节点可用的文件。可以使用图1的Chord网络100通过例子举例说明Chord搜索算法的操作。在这一例子中,假设节点2想要在图1的Chord网络100中搜索文件0。节点2将访问它的搜索表以便选择其它节点中的将向其发送文件请求的一个其它节点。从节点2的角度来看,由于目标文件(即文件0)的文件ID由于环绕而大于节点2(即节点34)的最大指的值,所以节点2将向节点34发送请求节点34搜索文件0的文件请求。节点34从节点2接收文件请求。节点34由于它未存储文件0所以将访问它的搜索表以便选择其它节点中的将向其转发文件请求的一个其它节点。在节点34中,搜索表包括指向节点35、37、40、43、51和2的六个指。由于文件0的对象ID在第5个与第6个指(分别为节点51和节点2)之间,所以节点34向第5个指标识的节点(节点51)转发搜索请求。节点51从节点34接收文件请求。节点51由于它未存储文件0所以将访问它的搜索表以便选择其它节点中的将向其发送文件请求的一个其它节点。在节点51中,搜索表包括指向节点53、53、56、62、3和19的六个指。由于文件0的对象ID在第4个与第5个指(分别为节点62和节点3)之间,所以节点51向第4个指标识的节点(节点62)转发搜索请求。节点62从节点51接收文件请求。节点62由于它未存储文件0所以将访问它的搜索表以便选择其它节点中的将向其发送文件请求的一个其它节点。在节点62中,搜索表包括指向节点0、0、2、6、16和30的六个指。由于在第1个和第2个指二者中指示文件0的对象ID(节点0),所以节点62知道节点0是活动的并且向节点0转发搜索请求。节点0响应于接收搜索请求而直接或者通过中间节点(即节点62、节点51、节点34、然后为节点0)对节点2做出它具有文件0这样的响应。节点2然后可以从节点0直接获得文件0。因此从这一例子清楚的是,在Chord中,Chord网络中的所有节点配合支持Chord搜索算法。
在Chord中,Chord网络是动态的,因为节点可以在任何时间加入Chord网络以及离开Chord网络。当节点加入和离开Chord网络时,在节点之间传送文件。例如加入节点可以承担用于至少存储具有与加入节点的节点ID相同的文件ID的文件(并且潜在地也存储其它文件)的职责,而离开节点可以向另一节点转交用于存储一个或者多个文件的职责。下文更加具体描述与加入和离开Chord网络关联的过程。
在Chord加入过程中,当节点想要加入Chord网络时,加入节点确定它的节点ID。加入节点通过将它的名称散列成密钥值来确定它的节点ID。例如,如果节点的名称为node-xyzcompany-abc.com,则节点ID将是SHA-1的输出(node-xyzcompany-abc.com),其中为了简化而假设散列函数为SHA-1(但是可以使用任何其它适当散列函数)。在这一例子中,令如根据散列操作而确定的用于这一节点的节点ID为K。
在Chord加入过程中,加入节点K然后联络Chord网络的活动节点(指示为初始化节点)。乍看起来,这一初始化节点可以表现为集中服务器,然而情况并非如此,因为:(a)初始化节点可以是Chord网络中当前活动的任何节点(例如如果节点K1和节点K2想要同时加入Chord网络,则它们可以并且将可能使用不同活动节点作为它们的相应初始化节点以加入网络),并且(b)初始化节点除了基本能力之外无需提供任何特殊能力(即它可以表现恰如Chord网络中的任何其它节点一样)。节点K可以用任何适当方式获得潜在候选初始化节点列表(例如从一个或者多个先前搜索表、在接入节点K上的后代列表和/或前代列表、从在加入节点K内管理配置的信息、从网站等)。在这一例子中,令初始化节点的节点ID为L。
在Chord加入过程中,加入节点K然后发送初始化节点L搜索加入节点K(即搜索具有ID=K的对象)的请求。在这一点,两个事件可能出现:
(A)节点L用N值答复加入节点K。节点N将是所有活动节点之中的具有恰好比与加入节点K关联的K更大的节点ID的节点。因此如果加入节点K要加入Chord网络,则节点N应当是用于加入节点K的后代节点。节点K然后联络节点N并且向节点N询问节点N的前代节点的标识。在这一例子中,另节点N的前代指示为节点N-。节点N向加入节点K提供N-值。基于这一信息,节点K然后知道他应当将在节点N与节点N-之间向Chord网络中插入它本身。
(B)节点L用K值答复加入节点K。这意味着有已经在Chord网络内活动的具有K这一节点ID的另一节点。尽管这一情况在多数Chord网络中极为不可能(例如在作为160位密钥空间的Chord网络100中,这一情形出现的可能性为1.45×1048之一),但是它还是有可能的。可以通过让加入节点K略微改变它自己的名称(例如添加时间戳、添加数等)并且使用新代码名称生成不同节点ID(指示为K’)来解决这一情形。加入节点K’可以通过向初始化节点L发送新搜索请求(即初始节点L搜索加入节点K’的请求)来再次开始处理。
在Chord加入过程中,在确定用于加入节点K的插入点之后,执行处理用于在Chord网络内插入加入节点。在节点K-(K的候选前代)与节点K+(K的候选后代)之间插入加入节点K,其中这时在节点K加入网络之前,节点K+为节点K-的后代。加入节点K联络后代节点K+从而指示它想要加入Chord网络。后代节点K+(1)向加入节点K通知它的前代为节点K-、(2)开始向加入节点K传送节点K应当具有职责的任何文件(即具有(k-)+1至K这些文件ID的文件)并且(3)向它的前代节点K-通知加入节点K在加入Chord网络的过程中。在文件传送完成之后,加入节点K建立与前代节点K-的连接。在建立在加入节点K与前代节点K-之间的连接之后,加入节点K向后代节点K+通知它已经成功加入Chord网络。后代节点K+然后断开与前代节点K-的连接,并且后代节点K+和前代节点K-二者更新它们的前代和后代列表。
在Chord离开过程中,执行处理用于使离开节点K能够以受控方式离开Chord网络。离开的节点K具有与之关联的前代节点(指示为K-)和后代节点(指示为节点K+)。离开节点K联络前代节点K-和后代节点K+从而向二者通知它打算离开Chord网络并且向两个节点提供其它节点的标识。离开节点K然后向后代节点K+传送离开节点K当前代表Chord网络而存储的所有文件(即具有在(K-)+1与K之间(包括K)的文件ID的所有文件)。在文件传送完成之后,加入节点通过从前代节点K-和后代节点K+断开来离开Chord网络。节点K-和K+然后建立其间的连接(这可以由它们中的任一个发起)。节点K-和K+也更新它们的前代和后代列表。
除了使用将Chord加入过程和Chord离开过程用于实现对Chord网络的动态改变之外,Chord也支持用于实现从节点故障中恢复的Chord恢复过程(即Chord离开和Chord加入过程并不用于从节点故障中恢复)。Chord网络的节点分别向它们的前代和后代节点定期发送心搏消息、由此使Chord网络的节点能够快速检测节点故障。一般而言,来自节点的心搏消息将包括心搏消息从其始发的节点的前代和后代节点的标识。以这一方式,当节点从它的后代节点接收心搏消息时,它知道它的后代节点的后代节点的标识,并且因此当节点的后代故障时,节点可以发起连接到它的后代节点的后代节点并且维持Chord环。如上文所言,在一些Chord网络中,节点维护k个前代和k个后代的列表。在这一情况下,Chord网络可以从k-1个相继节点的故障中恢复。在这一情况下,即使对于小的k值,k个相继节点故障的可能性很小。在一些这样的Chord网络中,可以确定用于k的值为2×log2(L),其中L为网络中的活动节点平均数目(即通常具有100,000个活动节点的Chord,k将为~34)。
上文描述的Chord恢复过程使Chord网络能够在节点故障的情况下被修复,但是在故障的节点存储的文件会丢失。可以用多种方式解决这一问题,上文描述了其中至少两种方式。此外,在另一实施例中,通过使获得文件的节点能够自愿变成用于文件的种子节点来解决这一问题。对一个这样的实施例的描述如下。文件原先由Chord网络的成员引入Chord网络中(其中成员节点称为文件的种子节点)。种子节点获得文件名的散列值(即文件ID)并且搜索具有与文件ID相同的节点ID的节点。种子节点将对Chord网络中的具有与文件ID相等或者比文件ID更大的节点ID的第一活动节点定位。种子节点向定位的节点发送文件。然后Chord网络的在以后时间获得文件的其它节点可以自愿变成用于文件的种子节点。用于文件的种子节点将在Chord网络中定期搜索该文件,并且如果种子节点对文件定位失败,则它将如上文描述的那样向适当节点发送文件。以这一方式,在Chord网络中恢复“丢失的”文件。
如这里描述的那样,除了存储和共享文件之外,Chord网络也可以支持服务。尽管现有Chord网络进支持文件共享服务,但是Chord网络可以最终除了文件共享服务之外还支持一个或者多个其它服务。服务可以从所有节点或者节点子集可用并且可以仅从小的节点子集可用。服务可以对于所有或者一些节点而言为强制的或者可以在自愿基础上由节点支持。支持服务的节点可以在活动与不活动之间转变。将理解与支持Chord网络中的服务关联的这些特征中的每个特征可以基于支持的服务类型、Chord网络的实现方式、相似因素中的一个或者多个因素而变化。鉴于支持Chord网络中的服务的可能性,服务定位能力使Chord网络内的每个节点能够搜索特定服务并且对提供该服务的节点定位。
服务定位能力在用来对支持特定服务的节点定位时是有利的,这至少出于以下原因:(1)它使用Chord网络的节点上维护的现有搜索表(即在节点上无需新的搜索表);(2)搜索是分布式的(例如当搜索服务时,发起服务搜索的发起节点将发起至多M个消息(其中M为Chord网络的密钥空间的长度)并且因此将接收至多M个响应消息,从而发起节点不会被压倒性数目的响应淹没);并且(3)可以用有序方式分阶段执行服务搜索,其中每个阶段可以被配置为具有高成功概率,从而使Chord网络中交换的消息数目最小。服务定位能力也具有它能够实现高效广播(这在许多应用中有用)这样的益处。
可以位于Chord网络中的服务包括适合用于由Chord网络支持的任何服务。
Chord网络的节点可以支持的第一服务是“交叉环搜索”服务,在该服务中,节点可以跨多个链接的Chord网络搜索文件。一般而言,Chord网络代表兴趣团体,其中存储和共享团体感兴趣的文件。一个节点可以属于多个Chord网络。这一点根据如下理解是清楚的:与可以加入Chord网络的节点关联的个别用户可能具有不同兴趣,从而可能的是至少一些节点将属于Chord网络的多个集合。当节点在Chord网络中搜索文件时,搜索节点可能出于多种原因而在Chord网络内对文件定位失败,这些原因比如是:(a)文件从未存储于网络中(例如芯创建文件并且Chord网络的节点都尚未获取文件);(b)文件可能未令团体感兴趣并且因此未存储于该Chord网络中;(c)由于Chord网络中的每个节点对它可以代表Chord网络而存储的文件数目具有实际限制这样的事实(例如在节点与它的前代之间的间隙太大并且因此节点不能存储所有文件这样的少见实例中;例如Chord网络的策略通常指定可以不存储更旧和/或更少流行的文件并且因此这些文件将在Chord网络内不可用);以及(d)节点故障可能使一些文件在Chord网络内不可用;以及(5)可以使文件在Chord网络中不可用的任何其它原因。如果Chord网络的搜索文件的节点属于多个Chord网络,则节点可以在它属于的每个Chord网络中搜索文件。如果Chord网络的节点不能在节点属于的Chord网络中对文件定位,则节点然后可以希望在一个或者多个其它Chord网络中搜索文件。在这一情况下,节点可以想要对Chord网络中的连接到一个或者多个其它Chord网络(即除了已经搜索的Chord网络之外)的其它节点定位。使用交叉环搜索服务来执行将文件的搜索扩展到一个或者多个附加Chord网络,通过该服务对Chord网络的属于其它Chord网络的节点进行定位以在跨多个Chord网络搜索文件中使用。
Chord网络的节点可以支持的第二服务是“翻译”服务。翻译服务可以例如在语言之间转译文档。例如Chord网络的节点可以想要从英语翻译成德语的文档,并且Chord网络中的一些节点可以具有这一能力。类似地,Chord网络的节点可以想要从意大利语翻译成法语的文档,并且Chord网络中的一些节点可以具有这一能力。对于这一服务类型,节点可以尝试并非仅对支持翻译服务的节点进行定位,而是更具体对如下节点定位,这些节点支持搜索节点所需要的具体翻译服务(即从一种语言翻译成另一语言)。
上文描述的示例范围示范了除了文件共享之外还有可以由Chord网络支持的许多不同服务。因此虽然这里在描述服务定位能力时为了简洁而描述可以在Chord网络中提供的服务的具体例子,但是将理解服务定位能力并不限于与任何特定服务一起使用。
服务定位能力提供如下算法,通过该算法,Chord网络上的节点可以对Chord网络上的支持或者提供特定服务的一个或者多个其它节点定位。
如这里描述的那样,现有Chord网络使Chord网络上的节点能够搜索Chord网络上的其它节点或者搜索存储于Chord网络中的文件。这里描绘和描述的服务定位能力使Chord网络能够支持Chord网络内的新搜索类型,即服务位置搜索,通过该服务位置搜索,Chord网络上的节点能够搜索Chord网络上的特定服务的位置(即搜索Chord网络上的支持如在服务搜索请求中指定的特定服务的一个或者多个其它节点)。
为了简化对服务定位能力的描述,除非另外具体指示或者描述,术语“搜索”将在以下段落中用来指代服务位置搜索;然而由于服务定位能力利用Chord网络的节点上的现有搜索表,所以在以下段落中使用的术语“搜索表”仍然指代在Chord网络的节点维护的Chord“指”表。
使用例子来描述、然后使用如下方法图以更一般的术语呈现服务定位能力,这些方法图示出了在Chord网络的、参与在Chord网络内提供服务定位能力的不同节点执行的处理。
如图1中描绘和前文描述的那样,Chord网络100具有6位密钥空间(即支持64个地址),并且64个节点中的36个节点是活动的(即节点0、2、3、5、6、7、9、12、13、16、17、18、19、20、21、22、23、24、26、29、30、32、34、35、37、41、43、45、49、51、53、54、56、57、58、62)。如图1中进一步描绘的那样,活动节点的子集(即节点7、19、30和51)支持服务,指示为服务A(作为图示,使用比与未支持服务A的活动节点所使用的阴影更暗的阴影来指示支持服务A的每个活动节点)。
作为例子,参照图1,假设节点0想要对Chord网络100的节点中的支持服务A的节点定位。为了简化对例子的描述,假设初始化搜索的节点是节点0(将理解不失一般性,因为如果初始化搜索的节点是节点N则可以做出相同假设(因为可以通过仅将Chord网络中的所有节点的节点ID减去N值来执行相同过程))。如上文在表1(下文重复)中所示,在节点0的搜索表具有包括以下信息的六个条目:
指 | 2i-1 | 第一节点≥2i-1 |
1 | 1 | 2 |
2 | 2 | 2 |
3 | 4 | 5 |
4 | 8 | 9 |
5 | 16 | 16 |
6 | 32 | 32 |
表1
在这一例子中,节点0发起用于在Chord网络100内对服务A定位的搜索。基于在节点0维护的这一搜索表,节点0通过分别向搜索表的M个指标识的M个节点发送M个搜索请求消息来发起搜索定位服务A。去往第i个指的搜索请求消息包括以下信息:(1)待定位的服务的指示;以及(2)搜索范围,即第i个指应当搜索的节点范围。
可以使用任何用于指定服务的适当标准(比如服务标识符、可以用来描述服务的一个或者多个参数等以及其各种组合)来指定待定位的服务的指示。
可以用任何适当方式指定标识了对第i个指应当搜索的节点范围的搜索范围。在描述搜索范围时为了清楚起见,令符号表示[m,n)用来表示从m到n的范围(包括m但是排除n)。
在一个实施例中,对于第i个指,搜索范围将是[第i个指,第i+1个指)。在本例中,节点0将向节点2、节点5、节点9、节点16和节点32发送搜索消息,并且搜索消息将分别包括搜索范围[2,5)、[5,9)、[9,16)、[16,32)和[32,0)。
在另一实施例中,对于第i个指,搜索范围可以从[第i个指,第i+1个指)减少至[第i个指,2i)。在本例中,对于节点5的第3个指,搜索范围将是[5,8)而不是[5,9),因为第(i+1)个指是大于或者等于2i的第一节点(即在2i与第i+1个指之间无活动节点)。尽管这一实施例提供减少的范围,但是减少的范围不会考虑罕见实例(其中范围为[2i,第i+1个指)的新节点可能在节点0已经更新它的搜索表之前已经加入网络。可以通过考虑节点0的第3个指(这代表节点8在节点0更新它的搜索表之前加入Chord网络100的情况)来了解这一潜在问题。
对于这些搜索范围实施例的描述,清楚的是两个实施例均在实践中起作用,然而基于[第i个指,第i+1个指)搜索范围的实施例比基于[第i个指,2i)搜索范围的实施例更鲁棒。
如上文描述的那样,节点0通过分别向节点2、5、9、16和32发送服务搜索请求消息来发起用于在Chord网络100内对服务A定位的搜索。出于继续服务位置搜索的目的而处理节点2、5、9、16和32分别接收的服务搜索请求消息。
在从节点0接收服务搜索请求消息时,节点2、5、9、16和32中的每个节点先确定是否本地支持请求的服务。如果从节点0接收服务搜索请求消息的节点2、5、9、16和32中的任何节点确定本地支持服务,则该节点用指示它支持服务的服务搜索响应消息对节点0做出响应。对于从节点0接收服务搜索请求消息的节点2、5、9、16和32中的确定未本地支持服务的每个节点,该节点发起处理以确定是否向一个或者多个其它节点发起一个或者多个搜索消息用于对节点0请求的服务定位。接收服务搜索请求消息的节点(其中未本地支持服务)将向它的本地搜索表中的落入在接收的服务搜索请求消息中指定的搜索范围内的一个或者多个指(如果有)发起服务搜索请求消息。
在这一例子中,由于从节点0接收服务搜索请求消息的节点2、5、9、16和32都未支持服务A,则节点2、5、9、16和32中的每个节点确定是否向一个或者多个其它节点发起一个或者多个搜索消息用于对节点0请求的服务A定位。
可以通过考虑由从节点0接收服务搜索请求消息的节点之一(即节点2、5、9、16和32之一)执行的处理来更好地理解在从节点0接收服务搜索请求消息的节点执行的处理。
在这一例子中,考虑在从节点0接收服务搜索请求消息时在节点16执行的处理。节点16从节点0接收范围为[16,32)的搜索请求。如上文所示,节点16先确定它是否支持请求的服务。在这一例子中,节点16未支持服务A。节点16然后确定是否向Chord网络100的另一个或者多个节点发起服务搜索请求消息。节点16使用在从节点0接收的服务搜索请求消息中包括的搜索范围[16,32)并且使用它的本地搜索表来确定是否向Chord网络100的另一个或者多个节点发起服务搜索请求消息。在表2中指示节点16的搜索表,如下:
指 | 2i-1 | 16+2i-1 | 第一节点≥2+2i-1 |
1 | 1 | 17 | 17 |
2 | 2 | 18 | 18 |
3 | 4 | 20 | 20 |
4 | 8 | 24 | 24 |
5 | 16 | 32 | 32 |
6 | 32 | 48 | 48 |
表2
在这一例子中,基于在从节点0接收的服务搜索请求消息中包括的搜索范围[16,32)和上文指定的搜索表,节点16将向节点17、18、20和24生成服务搜索请求消息。节点16发起的服务搜索请求消息,类似于节点0发起的服务搜索请求消息,包括:(1)待定位的服务的指示;以及(2)搜索范围,即第i个指应当搜索的节点范围。在这一例子中,向节点17、18、20和24发起的服务搜索请求消息各自指定服务A并且还分别包括搜索范围[17,18)、[18,20)、[20,24)和[24,32)。节点16未向节点32(第5个指)和节点48(第6个指)发起服务搜索请求消息,因为那些节点处于从节点0接收的服务搜索请求消息中指定的搜索范围以外。
图2描绘了响应于图1的示例Chord网络100的节点0发起的服务位置请求而在图1的示例Chord网络100内发起的服务搜索请求消息。
如图2中描绘的那样,在Chord网络100内发送服务搜索请求消息如下:节点0向节点2、5、9、16和32发送消息;节点2向节点3发送消息;节点5向节点6和7发送消息;节点9向节点12和13发送消息;节点16向节点17、18、20和24发送消息;节点18向节点19发送消息;节点20向节点21和22发送消息;节点22向节点23发送消息;节点24向节点26和29发送消息;节点29向节点30发送消息;节点32向节点34、37、41和49发送消息;节点32向节点33发送消息;节点40向节点42和45发送消息;节点49向节点51、53和56发送消息;节点53向节点54发送消息;节点56向节点57、58和62发送消息。
以这一方式,在整个Chord网络100内传播由节点0发起的针对服务A的服务位置请求,从而使得Chord网络100的每个节点可以用关于它是否支持请求的服务的指示做出响应(并且因此节点0可以了解支持服务A的任何节点的标识)。
如上文描述的那样,出于对服务定位的目的而在Chord网络内发起的每个服务搜索请求消息造成发起对应服务搜索响应消息。服务搜索响应消息朝着始发服务位置搜索的节点往回传播。以这一方式,向始发服务位置搜索的节点通知Chord网络的支持请求的服务的节点。
关于服务搜索响应消息的传播,以不同方式处置肯定响应消息和否定响应消息的传播。
在从上游节点接收服务搜索请求消息的给定下游节点处,从给定的下游节点朝着上游节点立即传播肯定响应消息。例如这可以是响应于给定的下游节点确定它本地支持请求的服务,或者这可以是响应于给定的下游节点从下游节点进一步下游的节点(即给定的下游节点向其发起服务搜索请求消息的下游节点)接收肯定响应消息。
在从上游节点接收服务搜索请求消息的给定下游节点处,仅在等待来自每个下游节点(给定的下游节点向该下游节点发起服务搜索请求消息)的响应消息之后从给定的下游节点朝着上游节点传播否定响应消息。以这一方式,给定的下游节点可以将来自它的下游节点的响应合并成向上游节点发送的单个响应消息。
可以通过考虑图1和图2的示例Chord网络100来更好地理解服务搜索响应消息的传播。
在这一例子中,当节点19节点18接收服务搜索请求消息时,节点19立即对节点18做出响应从而指示它支持服务A,节点18将立即向节点16转送这一响应,节点16又将立即向节点0往回转送响应。
在这一例子中,当节点9从节点0接收服务搜索请求消息时,节点9分别向节点12和13发送两个服务搜索请求消息,因为节点9本身未支持服务A。这里假设节点9从在从节点13接收否定响应之前从节点12接收否定响应,节点9将在等待来自节点13的响应之时存储来自节点12的否定响应。然后在从节点13接收否定响应时,节点9将把来自节点12和13的两个否定响应合并成单个否定响应并且将向节点0发送单个否定响应。
在这里描绘和描述的服务定位能力中,指代消息(并且更具体为响应消息)一般指代应用级消息。对这一区分的需要可以通过考虑如下情形来理解:当节点N向节点J发送消息时节点J通常将用确认来答复节点N以向节点N指示它已经接收消息。如果节点N在一些时间之后未接收确认,则节点N将重发消息(例如上至某一尝试次数)。在这里描绘和描述的服务定位能力中,假设这一确认过程为后台过程,并且这里出于简化对服务定位能力的描述而忽略该确认过程。换而言之,这里指代的服务搜索响应消息并不是这一可以在或者可以不在Chord网络中运行的后台过程的确认。
为了提供对服务定位能力的实施例的更好理解,关于图3-5描绘和描述始发节点和中间节点在提供服务定位能力时执行的处理。
图3描绘了用于在始发节点生成服务搜索请求消息的方法的一个实施例。
在步骤302,方法300开始。
在步骤304,始发节点检测服务位置请求。服务位置请求是搜索在P2P网络内服务的请求,以用于标识P2P网络内的服务位置(例如标识P2P网络的支持服务的一个或者多个节点)。
服务位置请求标识在始发节点需要或者希望的服务。可以用任何适当方式(该方式可以依赖于在始发节点发起服务位置请求的方式)检测服务位置请求。可以人工(例如由始发节点的用户)或者自动(例如由始发节点响应于检测到触发条件而)发起服务位置请求。
在步骤306,始发节点发起针对服务的服务位置搜索。服务位置搜索是用于在P2P网络内搜索服务以便标识P2P网络内的服务的位置的过程。
可以使用在始发节点上维护的搜索表来发起服务位置搜索。可以通过向在始发节点上维护的搜索表的一个或者多个节点发起服务搜索请求来发起服务位置搜索。始发节点可以通过朝着搜索表的节点中的一个或者多个节点传播一个或者多个服务搜索请求消息来发起服务搜索请求。
始发节点生成和传播的服务搜索请求消息包括适于在使始发节点能够对P2P网络的支持请求的服务的至少一个节点定位时使用的信息。
服务搜索请求消息包括始发节点的节点ID,该节点ID用于由接收服务搜索请求消息的节点用来对服务搜索请求消息做出响应。
服务搜索请求消息包括服务搜索请求消息的消息ID,该消息ID用于由始发节点和接收服务搜索请求消息的节点用于匹配相同服务位置搜索的请求消息和响应消息。
服务搜索请求消息包括适于在标识请求的服务时使用的服务标识信息。例如服务标识信息可以包括标识服务的服务ID、服务描述信息(例如适于在标识服务时使用的和/或描述服务的一个或者多个参数、属性和/或标准)等中的一项或者多项。
服务搜索请求消息包括始发节点指定的用于由向其发起服务搜索请求消息的节点使用的搜索范围。将搜索范围指示为[K1,K2),其中K2为搜索范围的最大值而K1为搜索范围的最小值。服务搜索请求消息的搜索范围可以依赖于始发节点发起的服务位置搜索类型(例如全网络搜索、分阶段网络搜索、渐进网络搜索等)。
将理解在服务搜索请求消息内包括的信息可以不同(例如可以包括更少信息、可以包括更多信息、可以包括不同信息等)。
始发节点发起服务位置搜索的方式(即,始发节点发起的服务搜索请求消息数目和那些服务搜索请求消息的定时)依赖于执行的服务位置搜索类型(例如全网络搜索、分阶段网络搜索、渐进网络搜索等)。
在其中始发节点发起全网络搜索的一个实施例中,从始发节点向指表中的每个指并行传播服务搜索请求消息。
在其中始发节点发起分阶段网络搜索的一个实施例中,从始发节点朝着指表中的一个或者多个指串行传播服务搜索请求消息。可以通过参照图6和图7结合这里描绘和描述的其它图更好地理解对分阶段网络搜索的使用。
在其中始发节点发起渐进网络搜索的一个实施例中,作为初始搜索,从始发节点向指表中的指的子集并行地传播服务搜索请求消息,并且可选地作为一个或者多个后续搜索,朝着指表中的一个或者多个后续指串行地传播服务搜索请求消息。可以通过参照图8和图9结合这里描绘和描述的其它图更好地理解对渐进网络搜索的使用。
在步骤308,方法300结束。
虽然描绘和描述为结束,但是在始发节点发起服务位置搜索之后,始发节点然后可以继续通过发起用于处置由始发节点响应于始发节点发起的一个或者多个服务请求消息而接收的一个或者多个服务搜索响应消息的处理来执行在支持服务位置搜索时的处理。
虽然这里主要描绘和描述为串行执行,但是可以同时或者以与关于图3描绘和描述的顺序不同的顺序执行方法300的步骤的至少部分。虽然这里主要描绘和描述了用于在中间节点执行服务搜索请求消息生成的处理逻辑的一个具体实施方式,但是将理解可以用各种其它方式实施用于在中间节点执行服务搜索请求消息生成的处理逻辑而仍然支持这里描绘和描述的服务定位能力。
图4描绘了用于在中间节点处理服务搜索请求消息的方法的一个实施例。
在步骤402,方法400开始。
在步骤404,中间节点(表示为节点J)从上游节点(表示为节点N)(该节点可以是服务位置搜索的发起者或者上游中间节点)接收服务搜索请求消息。
搜索服务请求消息包括适合用于搜索请求的服务的任何信息。
服务搜索请求消息包括服务搜索请求消息的始发者(即上游节点N)的节点ID。
服务搜索请求消息包括服务搜索请求消息的消息ID。
服务搜索请求消息包括适用于在标识请求的服务时使用的服务标识信息。例如服务标识信息可以包括标识服务的服务ID、服务描述信息(描述服务和/或适于在标识服务时使用的一个或者多个参数、属性和/或标准)等中的一项或者多项。
服务搜索请求消息包括上游节点N指定的用于中间节点J的搜索范围。将搜索范围表示为[K1,K2),其中K2为搜索范围的最大值而K1为搜索范围的最小值。
将理解可以在服务搜索请求消息中包括不同信息。
在步骤406,关于中间节点J是否支持请求的服务进行确定。可以用任何适当方式执行这一确定(例如通过比较服务标识信息的至少部分与在中间节点J可用的信息)。
如果中间节点J支持请求的服务,则方法400继续步骤408(在该点,中间节点J向上游节点N发起肯定服务搜索响应消息)。
如果中间节点J未支持请求的服务,则方法400继续步骤410(在该点,中间节点J发起用于确定是否将服务位置搜索扩展至网络的在服务搜索请求消息的搜索范围内的其它节点的附加处理)。
在步骤408,中间节点J向上游节点N发送肯定服务搜索响应消息。服务搜索响应消息可以包括适合用于在向始发节点通知请求的服务受中间节点支持并且使始发节点能够请求来自中间节点J的服务的任何信息。例如服务搜索响应消息可以包括中间节点J的标识符、关于消息是对来自上游节点N的服务搜索请求消息的响应的指示(例如服务搜索请求消息的消息ID)、关于中间节点J支持请求的服务的指示、用于由始发节点在请求来自中间节点J的服务时使用的用于中间节点J的网络联络信息(例如IP地址、端口号等)等。将理解服务搜索响应消息可以包括不同信息。从步骤408,方法400继续步骤434,在该步骤中方法400结束。
在步骤410,中间节点J识别它的搜索表的第一个指。
如图4中所示,结合步骤410或者在任何其它适当时间,中间节点J也可以执行用于在执行用于确定是否将服务位置搜索扩展至网络的其它节点的附加处理时使用的初始化功能。例如中间节点j可以初始化指计数器(i)等于1、设置第一指变量(F1)等于中间节点j的第一个指(即F1=第一个指)、设置第二指变量(F2)等于空、设置搜索列表等于空(其中搜索列表是中间节点J已经代表从上游节点N接收的服务搜索请求消息而向其发送服务搜索请求消息的节点的列表,该列表可以用来管理对中间节点J发起的任何服务搜索请求消息的响应)等。将理解可以用任何其它适当方式利用和/或初始化更少、更多和/或不同变量、列表和/或相似参数。
在步骤412,关于搜索范围的最大值(K2)是否大于中间节点J的第一个指(F1)进行确定。中间节点J校验它的第一个指是否在搜索范围以外。如果K2不大于F1,则方法400继续步骤414。如果K2大于F1,则方法400继续步骤416。
在步骤414,中间节点J向上游节点N发送否定服务搜索响应消息。在这一情况下,中间节点J未生成服务搜索请求消息。服务搜索响应消息可以包括适合于在向上游节点N通知在范围[F1,F2)中无支持服务A的节点时使用的任何信息。从步骤412,方法400继续步骤434,在该步骤中方法400结束。
在步骤416,中间节点J识别它的搜索表的第(i+1)个指。在第一次通过方法400时,这是中间节点J的搜索表的第二个指。
在步骤418,关于搜索范围的最大值(K2)是否大于中间节点J的第(i+1)个指(F2)进行确定。中间节点J校验它的第(i+1)个指是否在搜索范围以外。
如果K2大于F2,则方法400继续步骤428(即消息的搜索范围减少至[F1,K2),并且中间节点J生成的所得服务搜索请求消息是中间节点J响应于从上游节点N接收的服务搜索请求消息而最后生成的)。
如果K2不大于F2,则方法400继续步骤420(即中间节点J生成的所得服务搜索请求消息是中间节点J响应于从上游节点N接收的服务搜索请求消息而生成的最后服务搜索请求消息)。
在步骤420,中间节点J向节点F1发送具有搜索范围[F1,F2)的服务搜索请求消息。在这一点,F1和F2二者少于K2,因此搜索范围[F1,F2)在搜索范围[K1,K2)之内。服务搜索请求消息包括如这里描述的那样在服务搜索请求消息内通常包括的信息。
在步骤422,中间节点J向搜索列表添加节点F1,用于由中间节点J用来管理对中间节点J发起的任何服务搜索请求消息的响应。
在步骤424,中间节点J更新第一指变量(F1)等于第二指变量(F2)并且递增指计数器(i=i+1)。
在步骤426,关于指计数器是否大于或者等于M进行确定(其中2M为密钥空间的大小而M为中间节点J上的指表的大小)。
如果指计数器i不大于或者等于M,则方法400返回到步骤416。
如果第一指计数器i大于或者等于M,则方法400继续步骤428(即F1为最后指,并且中间节点J生成的所得服务搜索请求消息是中间节点J响应于从上游节点N接收的服务搜索请求消息而最后生成的)。
在步骤428,中间节点J向节点F1发送具有搜索范围[F1,K2)的服务搜索请求消息。服务搜索请求消息包括如这里描述的那样在服务搜索请求消息内通常包括的信息。
在步骤430,中间节点J向搜索列表添加节点F1用于由中间节点J用来管理对中间节点J发起的任何服务搜索请求消息的响应。
在步骤432,中间节点J启动计时器并且等待中间节点J将响应于中间节点J发起的一个或者多个服务搜索请求消息而接收的一个或者多个服务搜索响应消息。
在步骤434,方法400结束。
虽然描绘和描述为结束,但是当方法400的执行造成中间节点J发起一个或者多个服务搜索请求消息时,中间节点J可以继续通过发起用于处置由中间节点J响应于中间节点J发起的一个或者多个服务搜索请求消息而接收的一个或者多个服务搜索响应消息的处理(例如通过执行关于图5描绘和描述的方法500)来执行在支持由始发节点发起的服务位置请求时的处理。
虽然这里主要描绘和描述为串行执行,但是可以同时或者以与关于图3描绘和描述的顺序不同的顺序执行方法400的步骤的至少部分。虽然这里主要描绘和描述了用于在中间节点执行服务搜索请求消息生成的处理逻辑的一个具体实施方式,但是将理解可以用各种其它方式实施用于在中间节点执行服务搜索请求消息生成的处理逻辑而仍然支持这里描绘和描述的服务定位能力。
图5描绘了用于在中间节点(表示为节点J)处理服务搜索响应消息的方法的一个实施例。中间节点J出于向上游节点提供服务搜索响应消息的目的而执行用于处理服务搜索响应消息的方法,其中中间节点J从该上游节点接收服务搜索请求消息,该消息触发中间节点J向一个或者多个下游节点发送一个或者多个附加服务搜索请求消息。
在步骤502,方法500开始。
在步骤504,中间节点J等待一个或者多个服务搜索响应消息。响应于中间节点J发起的一个或者多个服务搜索请求消息,中间节点J期待服务搜索响应消息(例如通过执行关于图4描绘和描述的方法400)。
在步骤506,中间节点J确定是否从下游节点接收服务搜索响应消息。
如果从下游节点接收服务搜索响应消息,则方法500继续步骤510(在该点,服务搜索响应消息的处理开始)。
如果未从下游节点接收服务搜索响应消息,则方法500继续步骤508。
在步骤508,确定计时器是否已经到期。中间节点J可以用任何适当方式设置计时器(例如作为在执行方法500时的初始化步骤、作为执行方法400的部分或者以任何其它适当方式)。计时器可以设置成任何适当时长。
如果计时器尚未到期,则方法500返回到步骤504并且从步骤504继续步骤506(即继续等待状态,在该状态期间中间节点J等待来自一个或者多个下游节点的一个或者多个服务搜索响应)。
如果计时器已经到期,则方法500继续步骤522(在该点,中间节点J向上游节点发起否定服务搜索响应消息,因为中间节点J在分配的时长内尚未从下游节点接收所有未完成的服务搜索响应消息)。
关于步骤504、506和508,将理解可以用其它方式实施这一功能。例如在方法500中显式地执行确定是否接收服务搜索响应消息(步骤506)和确定计时器是否到期(步骤508)的步骤,比在方法500内在特定序列中执行的步骤少得多,方法500可以仅保持于等待状态(即步骤504)直至检测到接收服务搜索响应消息(在该点,方法500继续步骤510)或者直至检测到计时器已经到期(在该点,方法500继续步骤522)。例如在方法500内不作为显式步骤监视计时器,而是可以作为后台过程执行计时器的监视,从而无论方法500的处理正执行到何点,中间节点J检测到计时器已经到期都可以使得方法500(例如直接或者温和地)继续步骤522。将理解可以用其它方式实施这一功能。
在步骤510,确定接收的服务搜索响应消息是否合法。可以用任何适当方式确定接收的服务搜索响应消息的合法性。例如在一个实施例中,通过校验在接收的服务搜索响应消息内包括的请求ID以验证是否响应于来自中间节点J的服务搜索请求消息而提供服务搜索响应消息来确定接收的服务搜索响应消息的合法性。
如果服务搜索响应消息不合法,则方法500继续步骤512。
如果服务搜索响应消息合法,则方法500继续步骤514。
在步骤512,中间节点J忽略接收的服务搜索响应消息。从步骤512,方法500返回到步骤504(即中间节点J继续等待一个或者多个服务搜索响应消息)。
在步骤514,确定接收的服务搜索响应消息是肯定的(即已经定位支持所请求服务的节点)还是否定的(尚未定位支持所请求服务的节点)。
如果服务搜索响应消息是肯定的,则方法500继续步骤516。
如果服务搜索响应消息是否定的,则方法500继续步骤518。
在步骤516,中间节点J向上游节点发送肯定服务搜索响应消息。
服务搜索响应消息可以包括适合在向上游节点提供对已经被标识为支持所请求服务的节点的指示时使用的任何信息。例如服务搜索响应消息可以包括中间节点J的标识符、关于消息是对来自上游节点的搜索请求消息的响应的指示(例如服务搜索请求消息的消息ID)、关于支持所请求服务的节点的指示、用于由始发节点在请求来自支持所请求的服务的节点的服务时使用的用于支持所请求的服务的节点的网络联络信息(例如IP地址、端口号等)等。将理解服务搜索响应消息可以包括不同信息。从步骤516,方法500继续步骤524,在该步骤中方法500结束。
在步骤518,中间节点J从搜索列表去除源节点。源节点是中间节点J接收的服务搜索响应消息的来源。搜索列表是一个或者多个、中间节点J预期来自这些节点的服务搜索响应消息的节点的列表,该列表如关于方法400描述的那样由中间节点J用来管理对中间节点J发起的任何服务搜索请求消息的响应。
在步骤520,确定搜索列表是否为空。这是确定关于是否事实上已经接收中间节点J预期接收的所有服务搜索响应消息(从而可以从中间节点J向上游节点发送关联的服务搜索响应消息)。
如果搜索列表为空(即已经接收所有预期服务搜索响应消息),则方法500继续步骤522。
如果搜索列表不为空(即尚未接收所有预期服务搜索响应消息),则方法500返回到步骤504并且从步骤504继续步骤506(即继续等待状态,在该状态期间中间节点J仍然等待来自一个或者多个下游节点的一个或者多个服务搜索响应消息)。
在步骤522,中间节点J向上游节点发送否定服务搜索响应消息。
服务搜索响应消息可以包括适合用于在向上游节点提供如下指示时使用的信息:中间节点J未支持请求的服务并且中间节点J代表上游节点而联络的下游节点都未支持请求的服务。从步骤522,方法500继续步骤524,在步骤中方法500结束。
在步骤524,方法500结束。
虽然这里主要描绘和描述为串行执行,但是可以同时或者以与关于图5描绘和描述的顺序不同的顺序执行方法500的步骤的至少部分。虽然这里主要描绘和描述了用于在中间节点执行服务搜索响应消息处理的处理逻辑的一个具体实施方式来,但是将理解可以用各种其它方式实施用于在中间节点执行服务搜索响应消息处理的处理逻辑而仍然支持这里描绘和描述的服务定位能力。
如这里所示,图5主要涉及在中间节点执行的服务搜索响应消息处理。然而图5也可以适于指定在始发节点(即在发起针对服务的服务位置请求的节点)执行的服务搜索响应消息处理。对于始发节点,通过去除步骤516和522来适配方法500。关于步骤516和步骤522,这些步骤对于始发节点而言非必需,因为始发节点是服务位置请求的来源(即无需始发节点发送响应)。关于去除步骤516,方法500可以从步骤514继续步骤524(例如一旦始发节点已经标识节点中的支持请求的服务的一个节点,始发节点不关心是否有支持请求的服务的任何其它节点)或者如果任何服务搜索响应消息仍然未完成(例如其中当始发节点可能想要网络的支持请求的服务的所有节点的列表)则可以继续监视附加服务搜索响应消息。关于去除步骤522,方法500从步骤508(其中计时器已经到期)和步骤520(其中搜索列表为空)继续步骤524。
在如上文描述的服务位置搜索中:(1)如果Chord网络的密钥空间为M位,则服务位置搜索的来源将发出至多M个服务搜索请求消息并且将接收至多M个服务搜索响应消息,并且中间节点将发出甚至更少请求消息并且接收甚至更少响应消息,从而消息未使任何Chord网络的节点超负荷;并且(2)从上游节点向下游节点发送的服务搜索请求消息可以使得在下游节点生成一个或者多个附加服务搜索请求消息,从而针对服务的服务位置搜索可以生成可以分布于一个或者多个步骤或者阶段上至至多M-1个步骤或者阶段的搜索序列。从这一点可见,在如上文描述的服务位置搜索中,如果在服务定位请求时在Chord网络中有K个活动节点,则服务定位请求将在服务位置搜索过程向Chord网络的每个节点(排除服务位置请求的来源)最终递送一个服务搜索请求消息时在Chord网络中生成K-1个消息。这些消息分布于所有节点,从而消息未使任何节点超负荷;然而一般而言,K为大数,因此将希望减少出于对服务定位的目的而在Chord网络中生成的消息数目。
在一个实施例中,可以通过执行如下渐进搜索来减少出于对服务定位的目的而在Chord网络中生成的消息数目,在该渐进搜索中在环的部分中分阶段串行发起针对服务的搜索而不是向环的所有部分并行发起针对服务的搜索。这一服务位置搜索类型在这里称为渐进服务位置搜索。
可以通过先考虑这样一种用于减少在Chord网络中出于对服务定位的目所生成的消息的数目的方法来更好地理解渐进服务位置搜索,其中该方法是在初始搜索中仅搜索环的部分而不是全环。在这一情况下,由于未搜索全环,所以这一搜索可以未对提供请求的服务的节点定位。在这一情况下,可以平衡环的部分的搜索成功的概率与为了对服务定位而发起的消息数目(即在环内的搜索范围的大小)。在这一情况下,可以确定搜索范围的大小如下。
可以通过考虑例子更好地理解可以确定搜索范围的大小用于确保小的搜索失败率的方式。在这一例子中,令密钥空间为2M,并且假设在网络中通常平均有提供服务的2K个活动节点。基于这些假设,针对特定节点ID有提供服务的活动节点的概率为α=2K/2M=2-(M-K)。在这一例子中,还假设节点0在初始搜索范围[1,L)内搜索服务A。在范围[1,L)内没有将提供服务A的节点的概率为(1-α)L-1。在这一例子中,令所需搜索失败率例如少于2%(但是可以使用任何所需搜索失败率),这产生算式(1-α)L-1<1/50。使用这一算式并且取算式两侧的对数(以e为底),产生(L-1)×In(1-α)<-In(50),其中In(1-α)=-α-α2/2-α3/3-α4/4并且以此类推。一般而言,α为很小的数,因此更高阶项不显著并且可以被忽略。因此,上述算式可以近似如下:-(L-1)×α<-In(50)或者L>(3.91)×1/α+1或者更简单地为L>(3.91)×1/α(忽略1)。
也可以通过考虑更示例性的例子更好地理解可以确定搜索范围的大小用于确保小的搜索失败率的方式。在这一例子中,考虑密钥空间为160位的Chord网络。假设在网络中平均有100,000个活动节点,其中在活动节点之中通常有提供服务A的210(或者1024)个节点(即活动节点的~1%)。在这一情况下,α=2-150并且选择L大于(3.91)×2150。令L=4×2150=2152。利用对L的这一选择,初始搜索将覆盖环的2152/2160=1/28=1/256部分。因此,在这一例子中,初始搜索将具有98%的成功可能性,而出于对服务定位的目的而在网络中交换的消息数目按照因子256减少(即在初始范围中的节点数目平均近似为400,因此初始搜索生成仅约400个搜索消息,而不是如果初始搜索遍历整个Chord网络则将生成的100,000个搜索消息)。
如上文描述的那样,初始搜索不能对支持服务的节点进行定位可能仅有略微可能性。在初始搜索不能对支持服务的节点定位的情况下,服务位置搜索的来源然后可以向环的第二部分发起第二搜索(例如在上述例子中,节点0将发起范围为[L,2L)的第二服务位置搜索)。如果第二搜索不能对支持服务的节点定位,则服务位置搜索的来源然后可以向环的第三部分发起第三搜索(例如在上述例子中,节点0将发起范围为[2L,3L)的第三服务位置搜索)。因此,源节点可以继续搜索Chord网络的环的多个部分中的每个部分直至定位支持服务的节点或者已经搜索整个环而未定位支持服务的节点,由此提供可以明显减少为了对支持服务的节点定位而在Chord网络内交换的消息数目的渐进服务位置搜索。
在上文描述的渐进服务位置搜索实施例中,搜索圆弧的(并且因此搜索范围的)端点为L、2L、3L、4L并且以此类推。在图6中指示了这一点。
图6描绘了示例Chord网络,图示了用于在示例Chord网络中执行针对服务的渐进服务位置搜索的例子。在Chord网络600中,密钥空间为6位(即64个ID),并且用于渐进服务位置搜索的每个阶段的搜索范围的大小为8个节点。
在上文描述的渐进服务位置搜索实施例中,搜索圆弧的端点为L、2L、3L、4L并且以此类推,这可能未兼容于在发起服务位置请求的源节点维护的搜索表(即它们不是在源节点维护的搜索表的指)。因而当在圆弧之一内(例如在[n×L,(n+1)×L)内)执行搜索时,可能需要生成多个服务位置搜索消息。在图7中描绘了这一点。
图7描绘了用于在图6的示例Chord网络中执行针对服务的渐进服务位置搜索的示例搜索范围。如图7中所示,第(k+1)个指落在搜索范围内(即n×L<第(k+1)个指<(N+1)×L),并且第k个指和第(k+2)个指落在搜索范围之外。在这一情况下,为了在圆弧内执行服务位置搜索,源节点将生成两个服务搜索请求消息如下:(a)向第k个指发送搜索范围为(n×L,第(k+1)个指)的一个搜索请求;并且(b)向第(k+1)个指发送搜索范围为[第(k+1)个指,(N+1)×L)的一个搜索请求。
在一个实施例中,可以修改渐进服务位置搜索,从而渐进服务位置搜索与源节点的搜索表对准、由此防止其中在一个圆弧内的搜索需要多个服务搜索请求消息的情形。
关于图8和图9描绘和描述对准式渐进服务位置搜索的一个示例实施例。
图8描绘了用于使用对准式渐进搜索位置搜索在发起服务位置请求的节点生成服务搜索请求消息的方法的一个实施例。
在步骤802,方法800开始。
在步骤804,节点确定支持服务的活动节点的估计平均数目(表示为L)。
支持服务的活动节点的估计平均数目可以从这样的信息的任何适当来源(例如从节点的本地储存器、从网上服务器等)来确定。
可以用任何适当方式估计支持服务的活动节点的平均数目。在一个实施例中,可以使用关于图1-图6描绘和描述的服务位置搜索算法的修改版本来估计支持服务的活动节点的平均数目。在关于图1-图6描述的服务位置搜索算法中,一旦从下游节点接收肯定响应消息,中间节点就向上游节点转发它。在一个实施例中,可以修改关于图1-图6描绘和描述的服务位置搜索算法使得每个中间节点将等待来自它向其发起服务搜索请求消息的所有下游节点的所有响应消息、然后将向上游节点转发合并响应(该响应将包括支持服务的下游节点总数和这些节点中的至少一个节点的节点ID和IP地址)而不是在从它向其发起服务搜索请求消息的下游节点之一接收第一肯定响应时向上游节点立即转发肯定响应。可以用任何适当方式指示中间节点执行这一修改的处理。例如在一个实施例中,可以向服务搜索请求消息添加新指示符,以便关于是否执行用于估计支持服务的活动节点的平均数目的处理来通知中间节点。在一个这样的实施例中,可以针对特定服务的至少前数次搜索将新指示符设置成TRUE,从而源节点接收支持服务的活动节点数目的至少数个估计,从而节点可以据此确定支持服务的活动节点的平均数目的估计。然后新指示符可以设置成FALSE,从而无需中间节点针对服务的每个请求来执行修改的处理。在另一个实施例中,可以通过在新指示符设置成TRUE时使用关于图1-图6描述的服务位置搜索算法来定期执行针对服务的服务位置搜索来更新支持服务的活动节点的平均数目的估计。在已经确定支持服务的活动节点的平均数目的估计之后,节点然后可以使用支持服务的活动节点的平均数目的估计以使用渐进服务位置搜索能力来执行针对服务的后续搜索。另外,除了上文描述的实施例之外,还可以运用上文描述的实施例的许多变化。例如从始发节点到网络的部分的搜索消息可以具有设置成TRUE的指示符,而针对剩余部分将指示符设置成FALSE。在这一例子中,来自具有设置成TRUE的指示符的搜索消息的响应可以用来估计支持服务的活动节点的平均数目、但是准确性更低;然而具有设置成FALSE的指示符的搜索消息将产生更快响应,这是因为没有等待肯定响应。将理解许多其它方法也是有可能的。一般而言,在不同方法之间的差异包括在估计的准确性、算法的复杂性、响应时间、生成的消息数目等之间的折衷。
在步骤806,节点确定用于针对服务的初始搜索的指数目(表示为K)。使用支持服务的活动节点的平均数目来确定用于初始搜索的指数目。通过根据算式(L-1)×In(1-a)<In(1/b)求解L来确定用于初始搜索的指数目,其中(i)a是节点ID将具有支持服务的活动节点的概率,(ii)b是搜索为否定的概率,并且(iii)L为搜索范围。
在步骤808,节点向在节点维护的搜索表的前K个指发送服务搜索请求消息。服务搜索请求消息包括适合用于在搜索请求的服务时使用的任何信息(比如服务搜索请求消息的ID、适于在标识请求的服务时使用的服务标识信息、搜索范围等)。用于第i个指的搜索范围为[第i个指,第(i+1)个指),其中i=1,…,K。将理解可以在服务搜索请求消息中包括不同信息。
在步骤810,确定是否已经标识支持服务的节点(即基于来自步骤808的初始服务搜索请求消息并且可选地基于来自步骤816的一个或者多个后续服务搜索请求消息)。如果已经标识支持服务的节点,则方法800继续步骤818,在该点,方法800结束。如果尚未标识支持服务的节点,则方法800继续步骤812。
在步骤812,确定是否已经选择搜索表中的最后指(即是否K=M)。如果已经选择搜索表中的最后指,则方法800继续步骤818,在该点,方法800结束。如果尚未选择搜索表中的最后指,则方法800继续步骤814。
在步骤814,递增K值。在步骤816,节点向在节点维护的搜索表的第k个指发送服务搜索请求消息。从步骤816,方法800返回到步骤810,在该点确定是否在渐进搜索的当前阶段期间已经标识支持服务的节点。
在步骤816(当标识支持服务的节点或者在已经处理搜索表的所有指之后尚未标识支持服务的节点时进入该步骤),方法800结束。
关于图8,在一个实施例中,如果第(i+1)个指与第i个指相同,则未针对第(i+1)个指发送服务搜索请求消息(以免在初始搜索中向指发送重复消息)、由此防止向相同节点发送多个服务搜索请求消息。
虽然这里主要描绘和描述为串行执行,但是可以同时或者以与关于图8描绘和描述的顺序不同的顺序执行方法800的步骤的至少部分。虽然这里主要描绘和描述了用于在中间节点执行服务搜索请求消息生成的处理逻辑的一个具体实施方式,但是将理解可以用各种其它方式实施用于在中间节点执行服务搜索请求消息生成的处理逻辑而仍然支持这里描绘和描述的服务定位能力。
图9A-9D描绘了响应于图1的示例Chord网络的节点之一发起的服务位置搜索而在图1的示例Chord网络内发起的服务搜索请求消息,这些图图示了在图1的示例Chord网络中执行针对服务的对准式渐进搜索位置搜索的例子。
在图9A-9D的例子中,节点0发起服务位置请求。支持请求的服务的活动节点的估计平均数目等于八(L=23=8),这指示了针对服务的初始搜索将包括节点0的搜索表的前三个指(即节点2、2和5)。因此向节点2和5发送搜索范围分别为[2,5)和[5,9)的服务搜索请求消息(节点9为第4个指)。在图9A中图示了节点0的这一初始搜索,其中向节点2和5发送服务搜索请求消息并且节点2向3发送服务搜索请求消息而且节点5向节点6和7发送服务搜索请求消息。在这一例子中,节点7是支持请求的服务的活动节点,因此节点0将在初始搜索中已经对支持请求的服务的节点定位并且对准式渐进服务位置搜索将完成。
然而在图9A-9D的例子中,出于示例目的,假设节点7未支持服务、因此初始搜索失败。在确定初始搜索已经失败时,节点0然后向它的搜索表中的下一指(即节点9)发起针对服务的搜索请求。因此向节点9发送搜索范围为[9,16)的服务搜索请求消息。在图9B中图示了节点0的这一后续搜索,其中向节点9发送服务搜索请求消息并且节点9向节点12和13发送服务搜索请求消息。在这一例子中,在范围[9,16)内无支持请求的服务的活动节点,因此对准式渐进服务位置搜索将继续。
在图9A-9D的例子中,在确定第一后续搜索已经失败时,节点0然后向它的搜索表中的下一指(即节点16)发起针对服务的第二后续搜索。因此向节点16发送搜索范围为[16,32)的服务搜索请求消息。在图9C中图示了节点0的这一后续搜索,其中向节点16发送服务搜索请求消息并且节点16向节点17、18、20和24发送服务搜索请求消息(并且那些节点传播附加服务搜索请求消息)。在这一例子中,节点19是支持请求的服务的活动节点,因此节点0将在初始搜索中已经对支持请求的服务的节点定位,并且对准式渐进服务位置搜索将完成。
然而在图9A-9D的例子中,出于示例目的,假设节点19未支持服务、因此第二后续搜索失败。在确定第二后续搜索已经失败时,节点0然后向它的搜索表中的下一指(即节点32)发起针对服务的第三后续搜索。因此向节点32发送搜索范围为[32,0)的服务搜索请求。在图9D中图示了节点0的这一后续搜索,其中向节点32发送服务搜索请求消息并且节点32向节点34、37、40和49发送服务搜索请求消息(并且那些节点传播附加服务搜索请求消息)。在这一例子中,节点51是支持请求的服务的活动节点,因此节点0将在初始搜索中已经对支持请求的服务的节点定位,并且对准式渐进服务位置搜索将完成。
在对准式渐进服务位置搜索中,始发节点在初始搜索中发送多个服务搜索请求消息,然而始发节点在每个后续阶段中发送单个服务搜索请求消息。这从图8的示例方法和图9A-9D的例子中不言而喻。一般而言,用于前两次搜索的搜索范围各自覆盖L个节点ID,并且此后,后续搜索的搜索范围在每个阶段中加倍(例如第3次搜索覆盖近似2×L个节点ID,第4此搜索覆盖近似4×L个节点ID,并且以此类推)。
如这里描述的那样,渐进服务位置搜索是一种用于减少为了对支持请求的服务的节点定位而在Chord网络内交换的消息数目的适当手段。
在一个实施例中,可以通过在网络的节点高速缓存先前作为支持请求的服务的节点而标识的一个或者多个节点的节点ID来减少为了对支持请求的服务的节点定位而在Chord网络内交换的消息数目。在这一实施例中,从节点的源节点的角度来看,可以在源节点高速缓存先前由源节点作为支持请求的服务的节点而标识的一个或者多个节点的节点ID。在这一实施例中,当搜索服务时,搜索消息可以包括如下指示符,该指示符可以被设成指示源节点愿意接受高速缓存的信息,因此当节点接收这样的搜索请求时,节点可以用来自它的高速缓存的节点ID做出响应。以这一方式,减少搜索消息数目,并且响应时间更快;然而有高速缓存的信息陈旧的风险。在一个实施例中,为了避免陈旧信息,将在响应中仅包括在最后时间量X的内高速缓存的节点,其中可以如需要或者希望的那样配置时间量X(例如最后30分钟、最后4小时、最后一天等)。
在一个实施例中,可以通过在Chord网络的节点之间交换的心搏消息上背负式传输以交换关于哪些节点支持哪些服务的信息来减少为了对支持请求的服务的节点定位而在Chord网络内交换的消息数目。如这里描述的那样,Chord网络中的节点向它的前代和后代节点定期发送心搏消息。节点向它的前代发送的心搏消息包括节点的一个后代(或者K个后代)的节点ID,并且类似地,节点向它的后代发送的心搏消息包括节点的一个前代(或者K个前代)的节点ID。在这一实施例中,除了前代/后代信息之外,节点发送的心搏消息将包括指示该节点支持的任何服务的信息、由此使每个节点能够知道它的邻居的服务能力。以这一方式,减少为了在Chord网络中对服务定位而需要交换的消息数目。
如上文描述的那样,Chord网络可以支持的一个服务为交叉环搜索服务。交叉环搜索服务使目标节点能够发起对在目标节点不是其成员的一个或者多个其它Chord网络上搜索对象的请求。
一般而言,Chord网络的成员形成想要共享与诸如某一类型的音乐、某一类型的视频、学术研究主题等一些共同兴趣有关的文件的团体。用户可以具有多个兴趣,因此他的或者她的节点可以同时加入多个Chord网络。如果搜索文件的节点在它属于的Chord网络中对文件定位失败,则节点可能希望将针对文件的搜索扩展至一个或者多个附加Chord网络,这可以使用交叉环搜索服务来实现。
使用交叉环搜索服务,搜索文件的始发节点将搜索它为其成员的Chord网络以对属于一个或者多个其它Chord网络的任何节点定位。始发节点发起搜索请求。在搜索请求中,始发节点指定服务为交叉环搜索服务。搜索请求可以包括附加服务特有信息。
附加服务特有信息可以包括无搜索列表,该列表是始发节点已经在其中搜索文件的Chord网络的Chord网络ID列表。在这一情况下,当对这一请求做出响应时,这些Chord网络应当被忽略(即如果接收搜索请求的节点是除了在无搜索列表中指示的Chord网络之外的Chord网络的成员,则该节点将仅发送肯定响应)。
附加服务特有信息可以包括特有搜索列表,该列表是始发节点想要在其中搜索文件的Chord网络的Chord网络ID列表。在这一情况下,当对这一请求做出响应时,除了这些Chord网络之外的所有Chord网络应当被忽略(即如果接收搜索请求的节点是在特有搜索列表中指示的Chord网络之一的成员,则该节点将仅发送肯定响应)。
使用交叉环搜索服务,搜索文件的始发节点将响应于搜索请求而接收搜索响应。在这一情况下,任何肯定搜索响应包括触发肯定搜索响应的Chord网络的Chord网络ID。在接收肯定搜索响应时,始发节点可以尝试以任何适当方式从标识的Chord网络获得文件。
在一个实施例中,在接收肯定搜索响应时,始发节点可以尝试通过加入标识的Chord网络从标识的Chord网络获得文件。在这一情况下,一旦加入Chord网络,始发节点然后可以在加入的Chord网络内发起针对文件的搜索。
在一个实施例中,一旦接收肯定搜索响应,始发节点可以请求用肯定搜索响应做出响应的节点代表始发节点在标识的Chord网络内发起针对文件的搜索。这可以在始发节点不能或者不愿加入标识的Chord网络时是有用的,比如当始发节点没有用于加入标识的Chord网络的授权时、当始发节点没有或者不愿贡献所需资源以便加入和离开所标识的Chord网络时(即当节点加入Chord网络时隐含假设是节点将代表Chord网络存储多个文件并且加入和离开Chord网络由于需要在节点之间传送文件而需要花费时间和网络资源)、当始发节点在技术上不能加入标识的Chord网络时(例如当始发节点为仅IPv4节点而标识的Chord网络为IPv6Chord网络时或者当始发节点为仅IPv6节点而标识的Chord网络为IPv4网络时)等。始发节点可以通过向用肯定搜索响应做出响应的节点发送搜索请求消息来请求用肯定搜索响应做出响应的节点代表始发节点在标识的Chord网络内发起针对文件的搜索。在这一情况下,始发节点发送的搜索请求消息包括始发节点搜索的文件的全名,因为标识的Chord网络可以具有与始发节点的Chord网络不同的密钥空间和/或使用不同散列函数。如果文件未位于标识的Chord网络内,则始发节点接收否定搜索响应。如果文件位于标识的Chord网络内,则存储文件的节点向始发节点转发文件。文件可以存储于或者不存储于始发节点的Chord网络内。
虽然这里主要描绘和描述了其中在特定类型的P2P网络(即Chord网络)内实施服务定位能力的实施例,但是可以在适合用于支持服务搜索能力的任何其它类型的P2P网络内实施P2P服务定位能力。
在一个实施例中,可以适配服务定位能力使得服务定位能力一般地适合用于在基于DHT的P2P网络中使用。在一个这样的实施例中,为其提供服务定位能力的P2P网络具有井结构几何形状(例如对于Chord,几何形状为环),并且可以根据这一几何形状定义“区域”的概念(例如对于Chord,“区域”为环的圆弧)。当基于DHT的P2P网络的源节点发起服务位置搜索时,源节点向它的路由表中的节点发送服务搜索请求,并且向节点发送的每个服务搜索请求包括对如下区域的描述,接收该服务搜索请求的节点应当使搜索限于该区域。当中间节点接收服务搜索请求时,中间节点确定它是否本地知道支持请求的服务的节点(例如它可以标识它本身、它的前代、它的后代、来自中间节点上可用的高速缓存信息的一个或者多个节点等以及其各种组合)。如果中间节点本地标识支持请求的服务的节点,则中间节点用肯定响应做出响应。如果中间节点不能本地标识支持请求的服务的节点,则中间节点基于它自己的路由表传播服务搜索请求。中间节点对服务搜索请求的传播具有由在中间节点接收的服务搜索请求内包括的信息和来自中间节点的路由表的信息限制的范围。可以适配用来对服务定位的服务搜索请求的搜索范围使得在搜索范围之间的重叠最小以便提高搜索的效率;然而在某些情况下,如果至少一些重叠简化搜索范围描述要求,则该重叠可以是希望的。在服务定位能力的这样的广义实施方式中,也可以利用这里关于Chord网络描绘和描述的许多其它能力(例如用来估计在搜索限于区域时的成功搜索概率、执行渐进搜索等以及其各种组合)。
虽然这里描绘和描述了其中提供服务定位能力的实施例,但是将理解这里描绘和描述的服务定位能力可以适于提供用于在P2P网络内分布信息的信息分布能力。在这样的实施例中,这里在服务位置搜索能力的背景内描述的服务搜索请求消息可以适于在信息分布能力中用作信息分布消息。在这样的实施例中,可以实施信息分布能力使得可以向P2P网络的所有节点、P2P网络的一个或者多个节点范围、P2P网络的满足一个或者多个标准的一个或者多个节点等以及其各种组合分布信息。
图10描绘了适合用于在执行这里描述的功能时使用的计算机的高级框图。如图10中所示,计算机1000包括处理器单元1002(例如中央处理单元(CPU)或者其它适当处理器)、存储器1004(例如随机存取存储器(RAM)、只读存储器(ROM)等)、服务位置搜索模块/过程1005和各种输入/输出设备1006(例如用户输入设备(比如键盘、键区、鼠标等)、用户输出设备(比如显示器、扬声器等)、输入端口、输出端口、接收器、发送器和存储设备(例如磁带驱动、软盘驱动、硬盘驱动、光盘驱动等))。
应当注意可以用软件和/或用软件与硬件的组合(例如使用通用计算机、一个或者多个专用集成电路(ASIC)和/或任何其它硬件等效物)实施这里描绘和描述的功能。在一个实施例中,服务位置搜索过程1005可以加载到存储器1004中并且由处理器1002执行以实施如上文讨论的功能。这样,服务位置搜索过程1005(包括关联数据结构)可以存储于诸如RAM存储器、磁或者光学驱动或者盘等计算机可读存储介质或者载体上。
设想实施为软件的这里讨论的功能的部分可以用任何适当方式配置于对等网络的节点上(例如在制造节点期间提供、在节点由管理员加载、从网上服务器或者其它适当来源下载等,以及其各种组合)。设想这里作为软件方法而讨论的步骤中的一些步骤可以实施于硬件内(例如作为与处理器配合以执行各种方法步骤的电路)。这里描述的功能/单元的部分可以实施为计算机程序产品,其中计算机指令在由计算机处理时适配计算机的操作使得调用或者以别的方式提供这里描述的方法和/或技术。用于调用本发明方法的指令可以存储于固定或者可移除介质上、在广播或者其它信号承载介质中经由数据流发送和/或存储于根据指令操作的计算机设备内的存储器内。
在权利要求中指明本发明的各个方面。在以下编号条款中指明本发明的这些和其它方面。
1.一种用于在包括多个节点的对等(P2P)网络内搜索服务的方法,所述方法包括:
在所述P2P网络的目标节点检测对在所述P2P网络内搜索服务的请求,其中所述目标节点包括搜索表,所述搜索表包括标识所述P2P网络的相应多个节点的多个条目;以及
朝着在所述搜索表中标识的节点中的至少一个节点发起服务搜索请求,其中所述服务搜索请求是对标识所述P2P网络的支持所述服务的至少一个节点的请求,其中所述服务搜索请求包括指示所述服务的信息和用于由朝着其发起所述服务搜索请求的所述节点使用的搜索范围。
2.根据条款1所述的方法,其中朝着所述搜索表的所有所述节点并行发起所述服务搜索请求。
3.根据条款1所述的方法,其中朝着所述搜索表的所述节点串行发起所述服务搜索请求直至标识支持所述服务的至少一个节点或者进确定行所述P2P网络的所述节点都未支持所述服务的确定。
4.根据条款3所述的方法,其中响应于从所述搜索表的第i个节点接收否定搜索响应而朝着所述搜索表的所述第i个节点发起服务搜索请求。
5.根据条款1所述的方法,其中朝着所述搜索表的所述节点的子集并行发起所述服务搜索请求,其中所述搜索表的所述节点的子集包括在所述搜索表的前K个条目中标识的节点。
6.根据条款5所述的方法,还包括:
如果从所述搜索表的所述节点的子集的至少一个节点接收肯定搜索响应,则发起针对所述服务的请求;以及
如果未从所述搜索表的所述节点的子集的至少一个节点接收肯定搜索响应,则:
朝着未在所述搜索表的所述节点的子集中的、与所述搜索表的下一条目关联的下一节点发起用于在所述P2P网络内对所述服务定位的后续服务搜索请求。
7.根据条款5所述的方法,还包括:
使用所述P2P网络的支持所述服务的节点的估计平均数目来标识所述搜索表的所述节点的子集。
8.根据条款7所述的方法,其中通过针对L求解算式(L-1)×In(1-a)<In(1/b)来标识所述搜索表的所述节点的子集,其中(i)a是节点ID将具有支持所述服务的活动节点的概率,(ii)b是所述搜索为否定的概率,并且(iii)L为所述搜索范围。
9.根据条款7所述的方法,其中从所述节点的本地存储器或者从网上服务器确定所述P2P网络的支持所述服务的节点的所述估计平均数目。
10.根据条款7所述的方法,其中通过包括以下操作的方法估计所述P2P网络的支持所述服务的节点的所述估计平均数目:
朝着所述搜索表的每个所述节点发起相应服务搜索请求消息,所述服务搜索请求消息被配置成实现所述目标节点标识所述P2P网络的支持所述服务的每个所述节点;以及
从所述搜索表的每个所述节点接收相应服务搜索响应消息,所述服务搜索响应消息包括对所述P2P网络的由该节点作为支持所述服务的节点而标识的节点数目的指示或者适于在导出所述P2P网络的支持所述服务的节点数目时使用的信息;以及
处理所述服务搜索响应消息用于计算所述P2P网络的支持所述服务的节点的估计数目,其中所述P2P网络的支持所述服务的节点的所述估计数目适于在确定所述P2P网络的支持所述服务的节点的所述估计平均数目时使用。
11.根据条款1所述的方法,还包括:
从所述搜索表的所述节点中的朝着其发起所述服务搜索请求的所述至少一个节点中的每个节点接收搜索响应,所述搜索响应指示所述节点是否支持所述服务或者已经标识支持所述服务的另一节点。
12.根据条款1所述的方法,还包括:
当所述目标节点接收指示已经对支持所述服务的节点定位的肯定搜索响应时,从所述目标节点朝着支持所述服务的所述节点发起针对所述服务的请求。
13.根据条款12所述的方法,其中所述肯定搜索响应包括支持所述服务的所述节点的节点标识符和支持所述服务的所述节点的IP地址。
14.根据条款1所述的方法,其中所述服务是用于标识所述P2P网络的至少一个其它节点的交叉环搜索服务,所述至少一个其它节点为另一P2P网络的成员。
15.根据条款14所述的方法,还包括:
当所述目标节点接收指示已经对作为另一P2P网络的成员的节点定位的肯定搜索响应时,执行以下操作中的至少一个操作:
从所述目标节点发起用于所述目标节点加入所述另一P2P网络的过程;以及
从所述目标节点朝着作为所述另一P2P网络的成员的所述节点发起让作为所述另一P2P网络的成员的所述节点发起在所述另一P2P网络内针对对象的搜索的请求。
16.一种用于在包括多个节点的对等(P2P)网络内搜索服务的装置,所述装置包括:
存储器,用于存储搜索表,所述搜索表包括标识所述P2P网络的相应多个节点的多个条目;以及
处理器,配置用于:
检测对在所述P2P网络内搜索服务的请求;以及
朝着在所述搜索表中标识的节点中的至少一个节点发起服务搜索请求,其中所述服务搜索请求是对标识所述P2P网络的支持所述服务的至少一个节点的请求,其中所述服务搜索请求包括指示所述服务的信息和用于由朝着其发起所述服务搜索请求的所述节点使用的搜索范围。
17.一种用于在包括多个节点的对等(P2P)网络内对服务定位的方法,所述方法包括:
在所述P2P网络的目标节点接收服务搜索请求,其中所述服务搜索请求包括指示请求的所述服务的信息和用于所述目标节点的搜索范围;
使用指示请求的所述服务的所述信息的至少部分来确定所述目标节点是否支持所述服务;
当确定所述目标节点支持所述服务时,从所述目标节点发起指示所述目标节点支持所述服务的服务搜索响应消息;并且
当确定所述目标节点未支持所述服务时,确定是否从所述目标节点朝着所述P2P网络的至少一个其它节点发起服务搜索请求。
18.根据条款17所述的方法,其中当确定未从所述目标节点朝着所述P2P网络的至少一个其它节点发起服务搜索请求时,所述方法还包括:
从所述目标节点发起否定响应消息,所述否定响应消息指示所述目标节点使用所述搜索范围不能对支持所述服务的节点定位。
19.根据条款17所述的方法,其中当确定朝着所述P2P网络的至少一个其它节点发起服务搜索请求时,所述方法还包括:
为将由所述目标节点发起的新服务搜索请求确定搜索范围,其中使用在所述目标节点接收的所述服务搜索请求中包括的所述搜索范围和存储于所述目标节点上的搜索表来确定所述搜索范围;以及
从所述目标节点发起所述新服务搜索请求,其中所述新服务搜索请求包括指示请求的所述服务的所述信息和为所述新服务搜索请求确定的所述搜索范围。
20.根据条款17所述的方法,其中确定是否朝着所述P2P网络的至少一个其它节点发起服务搜索请求包括:
确定所述目标节点的所述搜索表的任何条目是否标识落在所述目标节点接收的所述服务搜索请求的所述搜索范围内的节点;以及
如果所述目标节点的所述搜索表的条目都未标识落在所述服务搜索请求的所述搜索范围内的节点,则确定所述目标节点无需发起任何服务搜索请求;以及
如果所述目标节点的所述搜索表的至少一个条目标识落在所述服务搜索请求的所述搜索范围内的至少一个节点,则从所述目标节点朝着所述目标节点的所述搜索表的所述至少一个条目的落在所述服务搜索请求的所述搜索范围内的所述相应至少一个节点发起至少一个服务搜索请求。
21.根据条款17所述的方法,其中当确定朝着所述P2P网络的至少一个其它节点发起服务搜索请求时,所述方法还包括:
接收与所述目标节点朝着所述P2P网络的另一节点发起的服务搜索请求关联的服务搜索响应;
如果所述服务搜索响应不是合法响应,则忽略所述服务搜索响应并且继续等待至少一个附加服务搜索响应;
如果所述服务搜索响应为合法响应,则确定所述服务搜索响应是肯定响应还是否定响应:
如果所述服务搜索响应为肯定响应,则从所述目标节点朝着从其接收所述服务搜索请求的节点发起肯定服务搜索响应;
如果所述服务搜索响应为否定响应,则确定所述目标节点是否已经接收所有预期服务搜索响应消息;
如果所述目标节点尚未接收所有所述预期服务搜索响应消息,则继续等待至少一个附加服务搜索响应;
如果所述目标节点已经接收所有所述服务搜索响应,则从所述目标节点朝着从其接收所述服务搜索请求的节点发起否定服务搜索响应。
22.一种用于在包括多个节点的对等(P2P)网络内对服务定位的装置,所述装置包括:
用于在所述P2P网络的目标节点接收服务搜索请求的装置,其中所述服务搜索请求包括指示所述服务的一个或者多个标准和用于所述目标节点的搜索范围;
用于使用所述一个或者多个服务搜索标准的至少部分来确定所述目标节点是否支持所述服务的装置;
用于当确定所述目标节点支持所述服务时从所述目标节点发起指示所述目标节点支持所述服务的服务搜索响应消息的装置;以及
用于当确定所述目标节点未支持所述服务时确定是否从所述目标节点朝着所述P2P网络的至少一个其它节点发起服务搜索请求的装置。
虽然这里已经具体示出和描述并入本发明教导的各种实施例,但是本领域技术人员可以容易设计仍然并入这些教导的许多其它变化的实施例。
Claims (10)
1.一种用于在包括多个节点的对等(P2P)网络内搜索服务的方法,所述方法包括:
在所述P2P网络的目标节点检测对在所述P2P网络内搜索服务的请求,其中所述目标节点包括搜索表,所述搜索表包括标识所述P2P网络的相应多个节点的多个条目;以及
朝着在所述搜索表中标识的节点中的至少一个节点发起服务搜索请求,其中所述服务搜索请求是对标识所述P2P网络的支持所述服务的至少一个节点的请求,其中所述服务搜索请求包括指示所述服务的信息和用于由朝着其发起所述服务搜索请求的所述节点使用的搜索范围。
2.根据权利要求1所述的方法,其中朝着所述搜索表的所有所述节点并行发起所述服务搜索请求。
3.根据权利要求1所述的方法,其中朝着所述搜索表的所述节点串行发起所述服务搜索请求直至标识支持所述服务的至少一个节点或者确定所述P2P网络的所述节点都未支持所述服务。
4.根据权利要求1所述的方法,其中朝着所述搜索表的所述节点的子集并行发起所述服务搜索请求,其中所述搜索表的所述节点的子集包括在所述搜索表的前K个条目中标识的节点。
5.根据权利要求4所述的方法,还包括:
如果从所述搜索表的所述节点的子集的至少一个节点接收肯定搜索响应,则发起针对所述服务的请求;以及
如果未从所述搜索表的所述节点的子集的至少一个节点接收肯定搜索响应,则:
朝着未在所述搜索表的所述节点的子集中的、与所述搜索表的下一条目关联的下一节点发起用于在所述P2P网络内对所述服务定位的后续服务搜索请求。
6.根据权利要求4所述的方法,还包括:
使用所述P2P网络的支持所述服务的节点的估计平均数目来标识所述搜索表的所述节点的子集。
7.根据权利要求1所述的方法,还包括:
从所述搜索表的所述节点中的朝着其发起所述服务搜索请求的所述至少一个节点中的每个节点接收搜索响应,所述搜索响应指示所述节点是否支持所述服务或者已经标识支持所述服务的另一节点。
8.根据权利要求1所述的方法,还包括:
当所述目标节点接收指示已经对支持所述服务的节点定位的肯定搜索响应时,从所述目标节点朝着支持所述服务的所述节点发起针对所述服务的请求。
9.一种用于在包括多个节点的对等(P2P)网络内搜索服务的装置,所述装置包括:
存储器,用于存储搜索表,所述搜索表包括标识所述P2P网络的相应多个节点的多个条目;以及
处理器,配置用于:
检测对在所述P2P网络内搜索服务的请求;并且
朝着在所述搜索表中标识的节点中的至少一个节点发起服务搜索请求,其中所述服务搜索请求是对标识所述P2P网络的支持所述服务的至少一个节点的请求,其中所述服务搜索请求包括指示所述服务的信息和用于由朝着其发起所述服务搜索请求的所述节点使用的搜索范围。
10.一种用于在包括多个节点的对等(P2P)网络内对服务定位的方法,所述方法包括:
在所述P2P网络的目标节点接收服务搜索请求,其中所述服务搜索请求包括指示请求的所述服务的信息和用于所述目标节点的搜索范围;
使用指示请求的所述服务的所述信息的至少部分来确定所述目标节点是否支持所述服务;
当确定所述目标节点支持所述服务时,从所述目标节点发起指示所述目标节点支持所述服务的服务搜索响应消息;并且
当确定所述目标节点未支持所述服务时,确定是否从所述目标节点朝着所述P2P网络的至少一个其它节点发起服务搜索请求。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/640,072 | 2009-12-17 | ||
US12/640,072 US10084856B2 (en) | 2009-12-17 | 2009-12-17 | Method and apparatus for locating services within peer-to-peer networks |
PCT/US2010/058490 WO2011084272A1 (en) | 2009-12-17 | 2010-12-01 | Method and apparatus for locating services within peer-to-peer networks |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102668513A true CN102668513A (zh) | 2012-09-12 |
CN102668513B CN102668513B (zh) | 2016-03-23 |
Family
ID=43530576
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080057597.3A Expired - Fee Related CN102668513B (zh) | 2009-12-17 | 2010-12-01 | 用于在对等网络内对服务定位的方法和装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10084856B2 (zh) |
EP (1) | EP2514175A1 (zh) |
JP (1) | JP5567683B2 (zh) |
KR (2) | KR20120104341A (zh) |
CN (1) | CN102668513B (zh) |
WO (1) | WO2011084272A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106681794A (zh) * | 2016-12-07 | 2017-05-17 | 同济大学 | 基于兴趣行为的分布式虚拟环境缓存管理方法 |
CN109962942A (zh) * | 2017-12-22 | 2019-07-02 | 中国电信股份有限公司 | 副本更新方法和装置以及计算机可读存储介质 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9298732B2 (en) * | 2010-09-29 | 2016-03-29 | Red Hat, Inc. | Searching cloud-based distributed storage resources using a set of expendable probes |
US8443086B2 (en) * | 2011-06-22 | 2013-05-14 | National Chiao Tung University | Decentralized structured peer-to-peer network and load balancing methods thereof |
GB2500720A (en) * | 2012-03-30 | 2013-10-02 | Nec Corp | Providing security information to establish secure communications over a device-to-device (D2D) communication link |
US9069761B2 (en) * | 2012-05-25 | 2015-06-30 | Cisco Technology, Inc. | Service-aware distributed hash table routing |
US9658841B2 (en) * | 2012-08-30 | 2017-05-23 | Avaya Inc. | System and method for efficient software replication |
CN103973460B (zh) * | 2013-01-30 | 2017-06-27 | 华为终端有限公司 | 用于实现网络意图的方法及装置 |
WO2014186593A1 (en) * | 2013-05-15 | 2014-11-20 | Intel Corporation | Techniques to support power-saving background device discovery in a wireless communications system |
KR101534555B1 (ko) * | 2013-06-25 | 2015-07-08 | 숭실대학교산학협력단 | 원형 메시 오버레이 생성 및 유지 방법 |
KR20150063906A (ko) | 2013-11-29 | 2015-06-10 | 주식회사 케이티 | M2m 환경에서 사용 가능한 장치를 검색하는 방법 및 장치 |
WO2015080461A1 (ko) * | 2013-11-29 | 2015-06-04 | 주식회사 케이티 | M2m 환경에서 사용 가능한 장치를 검색하는 방법 및 장치 |
JP6131907B2 (ja) * | 2014-04-24 | 2017-05-24 | カシオ計算機株式会社 | 分散データベース、データ共有方法、プログラム、装置 |
JP6697158B2 (ja) * | 2016-06-10 | 2020-05-20 | 富士通株式会社 | 情報管理プログラム、情報管理方法、及び情報管理装置 |
CN106202303B (zh) * | 2016-06-30 | 2019-09-10 | 南京邮电大学 | 一种Chord路由表压缩方法及优化文件查找方法 |
CN106571973A (zh) * | 2016-09-28 | 2017-04-19 | 杭州鸿雁智能科技有限公司 | 心跳包超时管理方法及系统 |
WO2019022360A1 (ko) * | 2017-07-28 | 2019-01-31 | 전자부품연구원 | 위치 정보 기반의 특정 타입 디바이스 데이터 조회 방법 |
CN108055651A (zh) * | 2017-11-14 | 2018-05-18 | 华中科技大学 | 一种基于d2d技术的移动终端设备心跳包转发方法 |
CN116346892A (zh) * | 2021-12-24 | 2023-06-27 | 上海诺基亚贝尔股份有限公司 | 用于服务提供的方法、设备、装置和介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060007942A1 (en) * | 2004-07-09 | 2006-01-12 | Fujitsu Limited | Method for finding resource and service in network and relay node apparatus |
CN101159755A (zh) * | 2007-11-07 | 2008-04-09 | 中兴通讯股份有限公司 | 移动搜索系统及移动搜索方法 |
CN101394423A (zh) * | 2008-09-27 | 2009-03-25 | 中兴通讯股份有限公司 | 一种媒体定位、搜索方法和系统 |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US1000000A (en) * | 1910-04-25 | 1911-08-08 | Francis H Holton | Vehicle-tire. |
US5819258A (en) | 1997-03-07 | 1998-10-06 | Digital Equipment Corporation | Method and apparatus for automatically generating hierarchical categories from large document collections |
US7020698B2 (en) * | 2000-05-31 | 2006-03-28 | Lucent Technologies Inc. | System and method for locating a closest server in response to a client domain name request |
US6961723B2 (en) * | 2001-05-04 | 2005-11-01 | Sun Microsystems, Inc. | System and method for determining relevancy of query responses in a distributed network search mechanism |
DE10143754A1 (de) | 2001-09-06 | 2003-04-03 | Siemens Ag | Skalierbares Peer-to-Peer-Netzwerk mit einem Verzeichnisdienst |
US7213047B2 (en) * | 2002-10-31 | 2007-05-01 | Sun Microsystems, Inc. | Peer trust evaluation using mobile agents in peer-to-peer networks |
US7831367B2 (en) * | 2002-11-21 | 2010-11-09 | Lucas Automotive Gmbh | System for influencing the speed of a motor vehicle |
JP2004258994A (ja) | 2003-02-26 | 2004-09-16 | Nippon Telegr & Teleph Corp <Ntt> | P2pネットワークにおける動的なファイル検索方法、端末、プログラム、および記録媒体 |
US7805448B2 (en) * | 2003-04-18 | 2010-09-28 | Hewlett-Packard Development Company, L.P. | Storing attribute values of computing resources in a peer-to-peer network |
US7558875B2 (en) * | 2003-09-15 | 2009-07-07 | Microsoft Corporation | Measurement-based construction of locality-aware overlay networks |
US7779415B2 (en) | 2003-11-21 | 2010-08-17 | International Business Machines Corporation | Adaptive load distribution in managing dynamic and transient data for distributed applications |
US7975035B2 (en) | 2003-12-01 | 2011-07-05 | International Business Machines Corporation | Method and apparatus to support application and network awareness of collaborative applications using multi-attribute clustering |
EP1725948A4 (en) * | 2004-03-08 | 2013-01-16 | First Oversi Ltd | METHOD AND DEVICE FOR PEER TO PEER FILE SHARING |
US9160571B2 (en) * | 2004-03-11 | 2015-10-13 | Hewlett-Packard Development Company, L.P. | Requesting a service from a multicast network |
US7487239B2 (en) * | 2004-03-25 | 2009-02-03 | International Business Machines Corporation | Composite resource models |
CA2566984A1 (en) * | 2004-05-18 | 2005-12-01 | British Telecommunications Public Limited Company | Peer-to-peer networks |
US8014321B2 (en) | 2004-10-22 | 2011-09-06 | Microsoft Corporation | Rendezvousing resource requests with corresponding resources |
US20070288638A1 (en) * | 2006-04-03 | 2007-12-13 | British Columbia, University Of | Methods and distributed systems for data location and delivery |
US7516116B2 (en) * | 2006-04-07 | 2009-04-07 | Microsoft Corporation | Range and cover queries in overlay networks |
US9507778B2 (en) | 2006-05-19 | 2016-11-29 | Yahoo! Inc. | Summarization of media object collections |
US7908389B2 (en) * | 2006-06-20 | 2011-03-15 | Patentvc Ltd. | Methods and systems for retrieving fragments from peer clients and servers |
WO2008041173A2 (en) * | 2006-10-02 | 2008-04-10 | Nokia Corporation | Method system and devices for network sharing or searching of resources |
CN101207531A (zh) | 2006-12-21 | 2008-06-25 | 浙江工业大学 | 一种可跨越多级子网的p2p覆盖网建立方法及系统 |
US9026628B2 (en) * | 2007-01-22 | 2015-05-05 | Xerox Corporation | Two-level structured overlay design for cluster management in a peer-to-peer network |
US20080275969A1 (en) * | 2007-02-02 | 2008-11-06 | Blaksley Ventures 108, Llc | System and method for managing a plurality of network clusters |
JP4306740B2 (ja) | 2007-02-21 | 2009-08-05 | ソニー株式会社 | オーバレイネットワークシステム及びサービス提供プログラム |
CN101257396B (zh) | 2007-03-02 | 2010-12-08 | 中国科学院声学研究所 | 一种基于p2p技术的多域内容分发系统及相应的方法 |
JP2008234563A (ja) | 2007-03-23 | 2008-10-02 | Nec Corp | オーバレイ管理装置、オーバレイ管理システム、オーバレイ管理方法およびオーバレイ管理用プログラム |
US7978631B1 (en) * | 2007-05-31 | 2011-07-12 | Oracle America, Inc. | Method and apparatus for encoding and mapping of virtual addresses for clusters |
US8238237B2 (en) * | 2007-06-18 | 2012-08-07 | Sony Computer Entertainment Inc. | Load balancing distribution of data to multiple recipients on a peer-to-peer network |
US7802009B2 (en) | 2007-06-26 | 2010-09-21 | Microsoft Corporation | Automatic reverse engineering of message formats from network traces |
CN101374087A (zh) | 2007-08-20 | 2009-02-25 | 华为技术有限公司 | 一种移动自组网络、节点及其区域划分方法 |
US8041773B2 (en) * | 2007-09-24 | 2011-10-18 | The Research Foundation Of State University Of New York | Automatic clustering for self-organizing grids |
JP5151511B2 (ja) * | 2008-01-30 | 2013-02-27 | ソニー株式会社 | 検索サービス提供システム及び検索サービス提供方法 |
CN100537201C (zh) | 2008-04-09 | 2009-09-09 | 宁波朗格世明汽车部件有限公司 | 用废旧pvc料制造汽车脚踏垫的方法 |
CN102197406B (zh) * | 2008-10-23 | 2014-10-15 | 起元技术有限责任公司 | 模糊数据操作 |
US8144611B2 (en) * | 2009-02-10 | 2012-03-27 | Microsoft Corporation | Network coordinate systems using IP information |
BRPI1016200B1 (pt) * | 2009-04-16 | 2020-10-20 | Tibco Software Inc | método para adicionar um nó a uma coleção de nós computacionais e método para a remoção de um nó de saída de uma coleção de nós de computação |
EP2491698B1 (en) * | 2009-10-21 | 2013-07-17 | Telefonaktiebolaget LM Ericsson (publ) | Method and arrangement for locating services in a peer-to-peer network |
US8805932B2 (en) * | 2009-11-03 | 2014-08-12 | Telecom Italia S.P.A. | Sharing of digital contents in P2P networks exploiting localization data |
WO2011054376A1 (en) * | 2009-11-03 | 2011-05-12 | Telecom Italia S.P.A. | Improved caching of digital contents in p2p networks |
EP2780835B1 (en) * | 2011-11-15 | 2019-08-07 | Ab Initio Technology LLC | Data clustering, segmentation, and parallelization |
US9268589B2 (en) * | 2011-12-09 | 2016-02-23 | Yahoo! Inc. | Method and system for deploying multiple distributed application stacks on a target machine |
-
2009
- 2009-12-17 US US12/640,072 patent/US10084856B2/en active Active
-
2010
- 2010-12-01 WO PCT/US2010/058490 patent/WO2011084272A1/en active Application Filing
- 2010-12-01 KR KR1020127018264A patent/KR20120104341A/ko active Application Filing
- 2010-12-01 CN CN201080057597.3A patent/CN102668513B/zh not_active Expired - Fee Related
- 2010-12-01 KR KR1020147008205A patent/KR101433702B1/ko not_active IP Right Cessation
- 2010-12-01 EP EP10793358A patent/EP2514175A1/en not_active Withdrawn
- 2010-12-01 JP JP2012544578A patent/JP5567683B2/ja not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060007942A1 (en) * | 2004-07-09 | 2006-01-12 | Fujitsu Limited | Method for finding resource and service in network and relay node apparatus |
CN101159755A (zh) * | 2007-11-07 | 2008-04-09 | 中兴通讯股份有限公司 | 移动搜索系统及移动搜索方法 |
CN101394423A (zh) * | 2008-09-27 | 2009-03-25 | 中兴通讯股份有限公司 | 一种媒体定位、搜索方法和系统 |
Non-Patent Citations (1)
Title |
---|
YUH-JZER JOUNG: "Approaching neighbor proximity and load balance for range query in P2P networks", <COMPUTER NETWORKS,ELSEVIER> * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106681794A (zh) * | 2016-12-07 | 2017-05-17 | 同济大学 | 基于兴趣行为的分布式虚拟环境缓存管理方法 |
CN106681794B (zh) * | 2016-12-07 | 2020-04-10 | 长春市三昧动漫设计有限公司 | 基于兴趣行为的分布式虚拟环境缓存管理方法 |
CN109962942A (zh) * | 2017-12-22 | 2019-07-02 | 中国电信股份有限公司 | 副本更新方法和装置以及计算机可读存储介质 |
CN109962942B (zh) * | 2017-12-22 | 2022-06-07 | 天翼云科技有限公司 | 副本更新方法和装置以及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2011084272A1 (en) | 2011-07-14 |
CN102668513B (zh) | 2016-03-23 |
US10084856B2 (en) | 2018-09-25 |
KR20120104341A (ko) | 2012-09-20 |
JP5567683B2 (ja) | 2014-08-06 |
KR101433702B1 (ko) | 2014-08-27 |
KR20140044948A (ko) | 2014-04-15 |
EP2514175A1 (en) | 2012-10-24 |
US20110153634A1 (en) | 2011-06-23 |
JP2013514733A (ja) | 2013-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102668513A (zh) | 用于在对等网络内对服务定位的方法和装置 | |
KR101481874B1 (ko) | 피어-투-피어 네트워크를 분해하고 분해된 피어-투-피어 네트워크를 사용하기 위한 방법 및 장치 | |
US8909747B2 (en) | Method and apparatus for localization in peer-to-peer systems | |
CN102035886B (zh) | 联盟基础结构内的一致性 | |
JP5684110B2 (ja) | ルーティングテーブルを維持する方法およびオーバレイネットワーク内で使用するためのノード | |
US20090157684A1 (en) | Load distribution in distributed database system | |
US8010488B2 (en) | Information distribution system, information processing device and memory medium | |
JP2005323346A (ja) | ピアツーピアネットワークにおけるルーティング | |
KR20090034322A (ko) | 랑데뷰 연합 내에서의 근접지간 통신을 위한 방법, 컴퓨터 판독가능 저장 매체 및 컴퓨터 프로그램 제품 | |
US7433928B1 (en) | System pre-allocating data object replicas for a distributed file sharing system | |
CN102947821A (zh) | 索引服务器及其方法 | |
CN109644160B (zh) | 通过分类在icn中进行名称解析和制作者选择的混合方法 | |
US8332463B2 (en) | Distributed storage system, connection information notifying method, and recording medium in which distributed storage program is recorded | |
EP2211525B1 (en) | Method for distributing in a self-organizing, distributed overlay network a reference to an object | |
Yoon et al. | Exploring a system architecture of content‐based publish/subscribe system for efficient on‐the‐fly data dissemination | |
Singh et al. | Resource-Cardinality Based Scheme to Reduce Resource Lookup Cost in Structured P2P Networks | |
Antonopoulos et al. | Efficient resource discovery in grids and P2P networks | |
Singh et al. | Finger forwarding scheme to reduce lookup cost in structured P2P networks | |
Karapapas et al. | Enhancing IPFS Bitswap | |
Birman et al. | Network perspective | |
Ahmed et al. | Collaborative Web Hosting: Challenges and Research Directions | |
KR20240041207A (ko) | 탈중앙화 방식의 주소지정방식 p2p 스토리지를 파일시스템으로 사용한 메세지큐 시스템 | |
Yamashita et al. | Link Stress Reduction against Bursty Arrivals of Content Requests | |
Locher et al. | equus: A provably robust and efficient peer-to-peer system | |
JP2010278617A (ja) | 分散保存システム、データファイル分散保存方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160323 Termination date: 20161201 |