首页> 中国专利> 一种无结构P2P网络中的均衡快速搜索方法

一种无结构P2P网络中的均衡快速搜索方法

摘要

本发明涉及对等网络技术领域,尤其涉及一种无结构P2P网络中的均衡快速搜索方法。本发明包括节点收到查询消息,在本地搜索是否有目标文件,如果有,则搜索成功,更新自己的命中能力和负载;节点判断查询消息生命期是否到期,如果已经到期则该消息不需要转发,否则需要选择下一跳节点进行转发;根据邻居节点列表的信息确定转发列表;将消息向转发列表中的节点进行转发;更新节点的负载。本发明在尽可能的避免网络中节点出现拥塞的条件下,显著提高系统的吞吐率,提高搜索命中率,减少平均搜索延迟并节省网络开销。

著录项

  • 公开/公告号CN102006238A

    专利类型发明专利

  • 公开/公告日2011-04-06

    原文格式PDF

  • 申请/专利权人 武汉大学;

    申请/专利号CN201010586676.5

  • 申请日2010-12-14

  • 分类号

  • 代理机构武汉科皓知识产权代理事务所(特殊普通合伙);

  • 代理人张火春

  • 地址 430072 湖北省武汉市武昌区珞珈山武汉大学

  • 入库时间 2023-12-18 01:52:15

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-02-03

    未缴年费专利权终止 IPC(主分类):H04L12/70 授权公告日:20140402 终止日期:20141214 申请日:20101214

    专利权的终止

  • 2014-04-02

    授权

    授权

  • 2011-05-25

    实质审查的生效 IPC(主分类):H04L12/56 申请日:20101214

    实质审查的生效

  • 2011-04-06

    公开

    公开

说明书

技术领域

本发明涉及对等网络(Peer-to-Peer,P2P)技术领域,尤其涉及一种无结构P2P网络中的均衡快速搜索方法。

背景技术

近年来,P2P软件用户增长迅速使系统面临更大的搜索压力。虽然提出了很多高效的搜索算法都能够获得更好的性能,如获得更高的搜索成功率、命中率,更短的搜索延时和更少的开销等等,但是其假设的前提都是网络的状况是良好的,节点之间的负载是均衡的不会发生网络拥塞。而这种假设在现实中是很难成立的,因为节点的能力是有限的即只能承受有限的负载,而一旦节点的负载超过其自身所能承受的最大负载就会引起拥塞,拥塞带来的后果有两种:一种是节点对消息的响应速度变慢。一旦大量的消息在节点排队等待处理,就会大大增加该消息的等待延迟从而增加搜索延迟,并使网络吞吐率下降;另一种是产生丢包现象。节点过度拥塞会丢弃部分消息,导致搜索成功率和命中率的下降。因此,搜索过程中节点的负载均衡对搜索性能有着重要的影响。

在搜索过程中,查询消息在节点间的延迟是由三个方面组成的,即节点间的传输延时、消息在节点中的排队等待时间和消息的处理时间。一旦网络负载不均衡则会在部分负荷较重的节点上出现消息滞留排队或丢包的现象,导致查询延时增大,搜索效率降低,严重的还能使节点停止工作导致网络瘫痪。而引起负载不均衡的原因主要有以下几点:1)节点能力的异构性。由于P2P系统中节点加入的随意性,使得网络中的节点在接入带宽、CPU计算能力,磁盘和内存空间等方面存在许多的异构性。节点能力的不同导致节点对消息处理的效率存在明显的差异,能力强的节点能够处理更多的消息而能力弱的节点相对来说更容易产生滞留排队的倾向。2)节点共享文件的差异较大。每个节点共享文件的内容和数目都不一定相同,共享的文件越流行数目越多,其被访问的概率也越大。3)查询分布的不均衡。研究发现,P2P系统中的查询请求分布服从Zif分布定律,各关键字查询的概率存在数量级差异,承载热点文件的结点负载将远大于其他结点.节点之间的负载极不均衡。

为了改善网络性能,充分利用网络的传输能力,必须在设计搜索协议时考虑负载均衡问题。在搜索路由建立的过程中,避开负载较重的节点,使得查询消息尽量从负载较轻的节点经过;消息沿路由传送过程中在遇到负载较重或者部分区域拥塞时有相应的机制进行处理。避免网络的部分节点会由于承受较大的网络负载而产生网络拥塞,而部分节点则会因为中继任务少而处于相对轻闲的状态,导致网络负载失衡。负载均衡的实质,是利用网络中可能存在的不同分组传输路径来构建分组的实际传输路由,通过有足够剩余容量的节点转发分组,以减轻网络的局部拥塞,适应网络中负载的动态变化,尽可能减少分组丢失和提高网络吞吐率,为业务提供更好的QoS保证。

由于在P2P环境下,单个结点无法准确了解全局负载分布信息和用户查询的平衡性,使平衡各结点负载成为一个难以解决的问题。因此P2P网络中的一个重大挑战是如何设计一个消息路由协议,使得其不仅能够使网络中的节点达到负载均衡同时能够使平均搜索路径尽可能的短。GIA方法(参见文献1)就是为实现这一目标而提出的,它考虑了节点的容量和网络的异构性,在随机漫步时将查询消息转发到高容量的节点,并采用流控制令牌来限制饱和节点接收查询消息从而达到节点之间的负载均衡,使Gnutella-like的P2P系统能够获得更高的综合查询率。但是这里的负载均衡策略是在发现节点已经达到过载的情况下才限制其接受令牌,是一种事后补救方法。

文献1:Chawathe,Y.,et al.Making gnutella-like p2p systems scalable.2003:ACM.

发明内容

针对上述存在的技术问题,本发明的目的是提供一种无结构P2P网络中的均衡快速搜索方法,能够评估节点的剩余负载,查询消息在转发时综合考虑节点的剩余负载和节点的命中可能性,采用基于随机漫步的动态K值选择算法,在每一跳转发时将消息转发到命中率高并且未饱和的节点上,从而不仅可以避免拥塞发生,增大系统的吞吐量,而且可以提高命中率、减少搜索长度。

为达到上述目的,本发明采用如下的技术方案:

节点收到查询消息,在本地和缓存表中搜索是否有目标文件,如果有,则搜索成功,将共享文件的节点ID放入命中响应消息沿原路返回,更新自己的命中能力和负载,结束;否则转下一步;

节点判断查询消息生命期是否到期,如果已经到期则该消息不需要转发,否则需要选择下一跳节点进行转发;将消息的TTL字段减1,判断TTL是否小于0;如果小于0,则结束,否则转下一步;

依次遍历邻居表中的所有邻居,根据邻居节点列表的命中能力和剩余负载信息确定下一跳随机漫步者k的个数,将负载未饱和并且命中率高的邻居节点挑选出来获得转发节点列表;

节点向转发列表中的所有邻居节点转发查询消息;

更新节点的负载,统计实时的网络维护负载、查询负载和响应负载,计算节点的总负载Li和剩余负载Ri

所述依次遍历邻居表中的所有邻居,根据邻居节点列表的命中能力和剩余负载信息确定下一跳随机漫步者k的个数,将负载未饱和并且命中率高的邻居节点挑选出来获得转发节点列表的步骤进一步包括以下步骤:

①初始化i=1,k=0。i表示第几个节点,k记录随机漫步者的个数,初始时,节点选择邻居表中的第1个邻居;

②判断Ri>Rmin,成立转③,不成立转⑤;

③判断hi>Hmin,成立转④,不成立转⑤;

④k=k+1;将节点i插入到转发列表中;

⑤判断邻居节点是否遍历结束,遍历完成转⑥,否则转⑦;

⑥选择下一个节点,i=i+1;转②;

⑦判断是否k>0,满足则⑨,不满足转⑧;

⑧随机选择一个节点插入到转发列表中;

⑨结束。

采用缓存机制将节点最近发起的查询命中节点信息保存在节点的缓存表中,所述缓存表中存放的是从该节点发起查询的命中节点的信息,包含节点ID、共享的文件信息。

所述节点向转发列表中的所有邻居节点转发查询消息步骤采用的转发策略是基于随机漫步式的转发,节点在每跳转发时随机漫步的个数K是动态变化的,K的取值与邻居节点的命中能力和剩余负载状况相关,包括:

①所有邻居节点的剩余负载Ri大于Rmin,Rmin是系统定义的能够接受新查询的最小剩余负载门限值情况下:

K的值等于邻居节点中命中能力大于命中阈值hi>Hmin的个数,Hmin是系统定义的命中能力最小阈值;

②部分节点的剩余负载大于Rmin情况下:

K的值等于邻居节点中未达到饱和并且其命中率大于阈值Hmin的个数;

③节点的剩余负载均小于Rmin情况下:

所有的节点都接近饱和状态或已饱和,则K=1。

所述命中能力为:假定系统总共发起了N次查询,节点i的命中次数为Hi,则定义节点i的命中能力为:

hi=HiN.

所述负载由节点的维护负载、节点的查询负载、节点的响应负载组成;

所述节点的维护负载为:每个节点需要周期性的通过ping/pong消息对连接进行维护,处理节点的加入离开,和缓存表的维护的能力;

所述节点的查询负载为:每个节点都能够接收查询消息并处理它们的能力;

所述节点的响应负载为:一旦节点命中查询,节点会发送响应消息沿原路返回的能力。

所述负载是节点的维护负载、节点的查询负载、节点的响应负载的加权和,其权值分别设为wm,wr,wq,并且wq<wr<wm,假定单位时间T内节点维护负载的数目为Nmain,查询负载的数目为Nquery,响应负载的数目为Nres,则节点的总负载Li为Li=Nmain×wm+Nquery×wq+Nres×wr

本发明具有以下优点和积极效果:

1)本发明和无结构P2P系统中常用的搜索算法如洪泛算法和随机漫步算法相比,能解决搜索过程中产生的负载不均衡问题;

2)本发明在尽可能的避免网络中节点出现拥塞的条件下,显著提高系统的吞吐率,提高搜索命中率,减少平均搜索延迟并节省网络开销。

附图说明

图1是本发明提供的无结构P2P网络中的均衡快速搜索方法的结构示意图。

图2是本发明随机漫步过程中转发节点的选择示意图。

具体实施方式

一种无结构P2P网络中的均衡快速搜索方法,包括:

(1)节点命中能力的计算:每个节点都可以根据其历史命中记录计算出它的命中能力。

(2)节点剩余负载的计算:每个节点都可以根据自身的容量和当前负载状况计算出节点的剩余负载。

(3)缓存表:每个节点维护一个缓存表,缓存表中存放的是从该节点发起查询的命中节点的信息,包含节点ID、共享的文件信息。

(4)邻居表:每个节点维护一个邻居表,存放邻居节点的信息,命中能力和剩余负载。

(5)转发策略:所采用的转发策略是基于随机漫步式的转发,但不同的是节点在每跳转发时随机漫步的个数K是动态变化的,K的取值与邻居节点的命中能力和剩余负载状况相关。

在上述无结构P2P网络中的一种均衡的快速搜索方法的步骤(1)中,假定系统总共发起了N次查询,节点i的命中次数为Hi,则定义节点i的命中能力为:

hi=HiN

在上述无结构P2P网络中的一种均衡的快速搜索方法的步骤(2)中,P2P网络中节点的能力是与很多因素相关的,如CPU处理能力,节点的存储能力、带宽等等。我们将节点i的能力标记为Ci。而节点的负载主要由三部分组成:

1)节点的维护负载。每个节点需要周期性的通过ping/pong消息对连接进行维护,处理节点的加入离开,和缓存表的维护。

2)节点的查询负载。每个节点都能够接收查询消息并处理它们。

3)节点的响应负载。一旦节点命中查询,节点会发送响应消息沿原路返回。

节点的负载是维护负载、查询负载和响应负载三部分的加权和,其权值分别设为wm,wr,wq,并且wq<wr<wm。假定单位时间T内节点维护负载的数目为Nmain,查询负载的数目为Nquery,响应负载的数目为Nres,则节点的总负载Li为Li=Nmain×wm+Nquery×wq+Nres×wr

则节点i的剩余负载为Ri=Ci-Li

在上述无结构P2P网络中的一种均衡的快速搜索方法的步骤(3)中,为了加快搜索,可以采用缓存机制将节点最近发起的查询命中节点信息保存在节点的缓存表中。包含节点的ID,端口号和节点共享文件的信息。为了节省网络开销防止缓存表无限增长,我们为每个节点设定固定大小的缓存空间。假设其存储节点的条目上限为R。当插入到节点的条目超过此上限时,我们可以使用LRU算法删除条目。

在上述无结构P2P网络中的一种均衡的快速搜索方法的步骤(4)中,每个节点维护一个邻居节点列表,包含节点的ID,命中能力和剩余负载能力。

在上述无结构P2P网络中的一种均衡的快速搜索方法的步骤(5)中,所采用的转发机制是随机漫步式的转发,但是节点在每跳转发时随机漫步的个数K并不是预先定义一成不变的而是随网络的当前状况动态变化的,K的取值与邻居节点的命中能力和负载状况相关,分为如下几种情况:

①所有邻居节点的剩余负载Ri大于Rmin,Rmin是系统定义的能够接受新查询的最小剩余负载门限值。

在这种情况下,所以的节点都有能力接收新的查询。则K的值等于邻居节点中命中能力大于命中阈值hi>Hmin的个数,Hmin是系统定义的命中能力最小阈值。

②部分节点的剩余负载大于Rmin

邻居节点中已经有一部分接近饱和状态或已经饱和,剩余负载已经不够处理新的消息,这时查询消息就不能发往这些节点,则K的值等于邻居节点中未达到饱和并且其命中率大于阈值Hmin的个数。

③节点的剩余负载均小于Rmin

由于所有的节点都接近饱和状态或已饱和,则K=1,随机选择下一跳节点进行转发。

当节点p接收到一个查询时,它将做以下基本操作:

1)在本地搜索文件f

2)转发查询到它的一个邻居节点。

节点先在本地搜索目标文件f。节点在自己的共享文件和缓存表里查看有没有文件f,如果有,则搜索成功。否则在邻居列表中选择K个节点进行转发。邻居节点收到查询消息,也在自己的共享文件和缓存表里查看有没有文件f,一旦搜索成功,将命中的节点及其共享资源的信息保存在查询发起节点上,以便以后再发起相同的查询可以方便的从缓存表中直接获取。

下面以具体实施例结合附图对本发明作进一步说明:

无结构P2P网络中的一种均衡的快速搜索方法其流程如图1所示,包括以下步骤:

(1)节点收到查询消息,在本地搜索是否有目标文件f,如果有,则搜索成功,更新自己的命中能力和负载,结束。否则转下一步;

(2)将消息的TTL字段减1,判断TTL是否小于0。如果小于0,则结束。否则转下一步;

(3)根据邻居节点列表的信息确定转发列表;

(4)将消息向转发列表中的节点进行转发;

(5)更新节点的负载。

在步骤(1)中,节点接收到查询消息,它在自己本地查看是否有目标文件f的信息。如果节点自身共享了文件f,则搜索成功,将自己的ID放入命中响应消息沿原路返回。如果节点的缓存表中有包含文件f的节点信息,则将共享文件f的节点ID放入命中响应消息沿原路返回。最后更新节点的命中能力和负载。如果本地搜索不成功,转步骤(2)。

在步骤(2)中,节点在本地搜索不成功,节点需要判断查询消息生命期是否到期。节点将查询消息的TTL数字减去1,判断其是否小于0.如果小于0,则消息生命期终止,结束。否则转步骤(3)。

在步骤(3)中,节点将依次遍历邻居表中的所有邻居。节点将根据邻居列表提供的信息确定随机漫步的个数,将负载未饱和并且命中率高的邻居节点都挑选出来放在转发列表中,保证选出来的节点不会造成网络拥塞并且搜索成功高,查询消息就向转发列表中的邻居节点进行转发。这个过程在图2中进行了详细描述。

①初始化i=1,k=0。i表示第几个节点,k记录随机漫步者的个数。初始时,节点选择邻居表中的第1个邻居;

②判断Ri>Rmin,成立转③,不成立转⑤;

③判断hi>Hmin,成立转④,不成立转⑤;

④k=k+1;将节点i插入到转发列表中;

⑤判断邻居节点是否遍历结束,遍历完成转⑥,否则转⑦;

⑥选择下一个节点,i=i+1;转②;

⑦判断k>0?满足则⑨,不满足转⑧;

⑧随机选择一个节点插入到转发列表中;

⑨结束。

在步骤(4)中,节点向转发列表中的所有邻居节点转发查询消息。

在步骤(5)中,节点需要更新自己的负载。节点统计实时的网络维护负载、查询负载和响应负载,计算节点的总负载Li和剩余负载Ri

以上实施例仅供说明本发明之用,而非对本发明的限制,有关技术领域的技术人员,在不脱离本发明的精神和范围的情况下,还可以作出各种变换或变型,因此所有等同的技术方案,都落入本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号