一种非结构化p2p网络的资源搜索方法
【技术领域】
[0001] 本发明涉及P2P网络。更具体地,涉及一种非结构化P2P网络的资源搜索方法。
【背景技术】
[0002] 当前,互联网最流行的网络模型主要可以分为两种:C/S模型和P2P模型。由于网 络用户数量的递增以及网络信息内容的爆炸性增长,C/S模型的服务器压力越来越大,往往 成为网络性能的瓶颈,并且存在单点故障的可能很难满足用户的日益增长的需要。此时, P2P技术应运而生,并逐渐成为研宄的热点。P2P网络是一种应用层的分布式网络,由于其 具有去中心化,可扩展性高以及负载均衡等特征,使其在各个领域得到了广泛的应用,其中 非结构化P2P网络由于其简单性和高鲁棒性得到了深入的研宄。
[0003] 非结构化P2P网络采用基于洪泛的查询机制进行资源搜索。在洪泛的过程中,节 点在有限的TTL内,不断地向所有的邻居节点转发消息,直至查询到所需的结果或TTL变为 0。洪泛的优点是响应时间短、覆盖范围广以及可靠性高,但洪泛会在网络中产生大量的冗 余消息,不仅增加了节点处理负担,还会占用大量的网络带宽。因此,如何进行有效的资源 搜索同时降低冗余消息量,提高系统的可扩展性和稳定性,是非结构化P2P网络的一个核 心问题。
[0004] 针对非结构化P2P网络资源搜索的扩展性问题,现有的技术有三类:改进的洪泛 算法、树形结构的P2P网络以及将非结构化P2P网络建立在结构化P2P网络上。改进的洪 泛算法虽然减少了洪泛搜索产生的网络流量,但是没有完全消除冗余消息,往往会产生较 大的搜索延迟,搜索过程有可能丢失节点;树形结构的P2P网络虽然消除了冗余消息,但是 维护代价太大,并且存在负载不均衡的问题;由于协议的语义规定了覆盖网节点应如何连 接,在结构化P2P网络上建立非结构化P2P网络的思想并不适合高度结构化的DHT协议。
[0005] 因此,需要提供一种非结构化P2P网络的资源搜索方法。
【发明内容】
[0006] 本发明的目的在于提供一种非结构化P2P网络的资源搜索方法,使用基于转发区 间的洪泛算法,使得消息沿着生成树的结构传播,查询消息到达每个节点仅仅一次,解决了 洪泛搜索中冗余消息的问题,提高非结构化P2P网络的资源搜索的可扩展性和效率,从而 提高非结构化P2P网络在实际中的可用性。
[0007] 为达到上述目的,本发明采用下述技术方案:
[0008] -种非结构化P2P网络的资源搜索方法,该方法包括如下步骤:
[0009] S1、为非结构化P2P网络中的各节点分别分配一个与节点唯一对应的标识符,并 根据各节点在标识符空间中的相对位置分别定义各节点的前向节点、后向节点、邻居表及 邻居表中的表项,各节点的邻居表中的表项包括:开始项、结束项、区间项、邻居项和节点冗 余度;
[0010] S2、发起资源查询请求的节点分别向该节点的邻居表中各表项中的一个邻居节点 发送增加转发区间的查询消息;
[0011]S3、若在邻居节点中查询到所需资源,则拥有资源的节点向发起资源查询请求的 节点发送搜索成功的回复消息,搜索流程结束;若在邻居节点中未查询到所需资源,则邻居 节点根据邻居节点的邻居表中的表项向邻居节点的转发区间内的邻居节点转发增加转发 区间的查询消息;
[0012]S4、重复步骤S3直至查询到所需资源或已查询非结构化P2P网络中所有节点。
[0013] 优选地,步骤S1进一步包括如下子步骤:
[0014]S1. 1、使用一致性哈希函数为非结构化P2P网络中的各节点分别分配一个m位的 与节点唯一对应的标识符,则标识符空间为以2m为模依次排列的一个标识符圆环;
[0015]S1. 2、定义节点在标识符空间中沿逆时针方向的第一个节点为节点的前向节点, 定义节点在标识符空间中沿顺时针方向的第一个节点为节点的后向节点;
[0016]S1. 3、定义与节点在标识符空间中相对距离为的节点为节点的界点,定义节点 的邻居表,邻居表中记录在标识符空间中沿顺时针和逆时针方向节点至节点的界点范围内 的节点为邻居节点;
[0017]S1. 4、定义节点的邻居表中的表项,第i个表项包含变量:开始项、结束项、区间 项、邻居项和节点冗余度,i为节点的邻居表中表项标号,1 <i〈m,
[0018] 第i个表项的开始项为标识符空间中与节点相对距离为2i4的节点的标识符, [0019]第i个表项的结束项为标识符空间中与节点相对距离为21的节点的标识符,
[0020] 第i个表项的区间项为开始项到结束项的区间,区间项为[2^,20,
[0021] 第i个表项的邻居项为第i个表项的邻居节点列表,
[0022] 第i个表项的节点冗余度为邻居项中邻居节点个数的最大值。
[0023] 优选地,步骤S2中发送增加转发区间的查询消息进一步包括如下子步骤:发起资 源查询请求的节点为查询消息增加该节点的邻居表中表项中的开始项和结束项字段作为 步骤S3中转发查询消息的转发区间后再向节点的邻居表中的邻居项中的邻居节点发送修 改后的查询消息。
[0024] 优选地,步骤S3中转发增加转发区间的查询消息进一步包括如下子步骤:邻居节 点为查询消息增加该邻居节点的邻居表中表项中的开始项和结束项字段作为下一次转发 的转发区间后再向邻居节点的邻居表中的邻居项中的邻居节点发送修改后的查询消息。
[0025] 优选地,在资源搜索的过程中还包括步骤:
[0026] 随着实际非结构化P2P网络的动态变化在网络中添加和删除节点;
[0027] 实时维护各节点的邻居表。
[0028] 优选地,实时维护各节点的邻居表进一步包括子步骤:
[0029] 非结构化P2P网络中的各节点分别周期性地向该节点的邻居节点发送的探测消 息并等待回复消息,如果收到回复消息则不改变节点的邻居表,如果未收到邻居节点的回 复消息则向该邻居节点发送离开消息并把该邻居节点从节点的邻居表中移除。
[0030] 优选地,实时维护各节点的邻居表进一步包括子步骤:
[0031] 非结构化P2P网络中的各节点分别周期性地判断该节点的前向节点和后向节点 是否正确。
[0032] 优选地,实时维护各节点的邻居表进一步包括子步骤:
[0033] 非结构化P2P网络中的各节点分别周期性地检查节点邻居表中的所有表项中的 邻居节点数量,
[0034] 若表项中的邻居节点为零,则节点在该表项所属的区间项内发送连接请求并接受 来自其他节点的连接请求,
[0035] 若表项中的邻居节点数不为零且小于表项的节点冗余度,则节点会接受来自其他 节点的连接请求,
[0036] 若表项中的邻居节点数为表项的节点冗余度,贝1」节点不接受来自其他节点的连接 请求。
[0037] 本发明的有益效果如下:
[0038] 本发明所述技术方案通过为非结构化P2P网络中节点分配m位的标识符,并在查 询消息中添加两个m位的字段表示查询消息的转发区间,用于控制节点转发查询消息的转 发范围,在洪泛过程中,节点选择在查询消息的转发区间中的邻居节点转发查询消息,由于 查询消息的转发区间是不相交的,每次转发后,节点不会出现在之后的转发区间中,保证 了查询消息到达网络中所有节点仅一次,解决了洪泛搜索产生大量冗余信息的问题。且 本发明所述技术方案解决了非结构化P2P网络中资源搜索的可扩展性差的问题,动态环境 中,在很少的网络开销的情况下,就能保证资源搜索的低延迟和稳定性。且本发明所述技术 方案相对于其他算法,在算法的简单性、可靠性以及有效性等方面都有一定的优越性,能够 满足实际网络环境下对非结构化P2P网络资源搜索的性能要求。
【附图说明】
[0039] 下面结合附图对本发明的【具体实施方式】作进一步详细的说明。
[0040] 图1示出标识符位数m= 3的标志符空间示意图。
[0041] 图2示出非结构化P2P网络的环状拓扑结构图。
[0042] 图3示出查询消息的消息体示意图。
[0043] 图4示出用于非结构化P2P网络的资源搜索方法的洪泛过程中查询消息的转发示 意图,其中,4-a示出非结构化P2P网络中节点之间的连接关系,4-b示出洪泛时转发查询消 息的过程,4-c示出洪泛过程中消息的传播路径。
[0044] 图5示出用于非结构化P2P网络的资源搜索方法的发起洪泛和转发查询消息流程 图,其中,5-a示出用于非结构化P2P网络的资源搜索方法的发起洪泛流程图,5-b示出用于 非结构化P2P网络的资源搜索方法的转发查询消息流程图。
[0045] 图6示出用于非结构化P2P网络的资源搜索方法中网络维护方法的流程图。
[0046] 图7示出用于非结构化P2P网络的资源搜索方法中网络维护方法中节点加入网络 流程图。
[0047] 图8示出用于非结构化P2P网络