无结构P2P网络中一种高效的资源搜索机制

  • 格式:pdf
  • 大小:359.27 KB
  • 文档页数:6

研究与开发 

无结构P2P网络中一种高效的资源搜索机制 

赵佩章。张同光 

(新乡学院计算机与信息工程学院新乡453003) 

1 引言 在众多P2P资源搜索技术中,基于语义相关的搜索被重点关注。本文在基于语义分组的P2P网 络拓扑下,提出了一种新颖高效的搜索方式SKIP(search with K-Iteration preference),即K一层迭代 优先选择算法。查询定位到目标节点后,SKIP系统使用 一层迭代优先选择算法进行搜索。实验 表明,SKIP算法具有高效的搜索效率和较低的搜索开销,与现有的基于语义的搜索策略相比,具 有更高的查准率和更低的查询开销。 

近来P2P网络飞速发展,已成为互联网中最流行的应 

用之一。作为一个分布式的网络,其效率在很大程度上依 

赖于资源搜索的机制。尽管近年来关于P2P资源搜索的研 

究很多,但是在资源搜索方面一直存在很多需要解决的 

问题【l1。通常情况下,结构化P2P网络更倾向于采用DHT 

(distributed hash table,分布式散列表)的搜索方式;对于无 

结构P2P网络来说,例如GnuteUa圆,资源搜索主要是使用 

洪泛(flooding)或者有一定控制的洪泛来进行,如随机走 

(random walk)m.由于这样会在资源搜索过程中访问大量 

不相关的节点。因此造成较低的搜索效率。为了提高无结 

构P2P网络资源搜索效率,研究人员提出了许多搜索机 

制 。但是这些搜索机制都没有考虑到节点之间语义的 

相关性,因此这些搜索机制仍然具有较高的搜索开销。 

在语义相关的P2P网络中.相关的节点连接在一起. 

形成一个语义组 GEStSl和Csstgl两种搜索机制都使用VSM 

新乡学院科技创新基金资助项目 (vector space mode,向量空间模型)㈣来计算节点的语义 

相关度。GES首先会对每一个节点进行矢量抽取。然后借 助于VSM来计算节点间语义相关度,并依据计算出来的 

语义相关度数值生成网络拓扑。最后采用语义目标节点定 

位和洪泛相结合的搜索方式。CSS在GES的基础上,将每 个节点按照所含内容的不同种类再细分为更小的虚拟节 

点,此法虽然可以提高资源查询的精准度,但是虚拟节点 

的引入却极大地增加了网络的开销。 

在本文中.提出了一种新颖高效的资源搜索机制 

SKIP。在GES和CSS中,当通过biased wMk(偏好查找)方 

法找到一个语义目标节点后。使用洪泛的方式在语义组中 

进行查询。本文提出的SKIP搜索机制将使用K一层迭代优 先选择的方法来取代GES和CSS中的洪泛方式,同时,在 

整个拓扑结构的维护中,SKIP与GES所产生的开销相同. 

SKIP在查准率和查询开销上的表现要优于GES.而CSS 

却要产生更大的虚拟节点开销。 

2相关研究 

一般来说,

P2P网络分为结构化P2P网络和无结构 g % s ;; 《g j电信科学_l1 

P2P网络两种。对于结构化P2P网络来说,通常使用DHT 

技术。例如CANt”]、Pastryt=] ̄Chordt”1都是使用DHT对资 

源进行搜索。DHT方法尽管有着较高的搜索效率,但是它 

只能对关键字进行精确匹配,无法进行语义相关的查询。 

无结构P2P网络.例如Gnutella,能够使用语义相关信息来 

进行资源搜索,但是其搜索的效率却比较低。 

当前无结构P2P网络被广泛应用,对于无结构P2P网 

络的搜索来说.主要有盲目搜索和非盲目搜索。盲目搜索 

算法,是不依靠任何提示信息而对其所有邻居节点或者部 

分邻居节点进行盲目的消息转发,直到满足停止的条件, 

如洪泛、random walk、BFS(breadth first search,宽度优先搜 

索) 等。非盲目搜索算法主要是路由索引[15】的方式。 

为了减少洪泛的使用和提高搜索效率,一些搜索算法 

引入了历史查询信息。参考文献【l6,17]所述算法是基于兴 

趣定位的搜索算法,假设节点A中有节点B需要的某一类 

内容,那么节点A中的另外一些类的内容也是节点B所感 

兴趣的,在节点B发起搜索查询时,首先会将查询请求消息 

发送到节点A中。参考文献『181提出了一种SON(semantic 

overlay network,语义覆盖网络)的搜索机制,对网络中的每 

个节点所包含的内容进行分类,并向全网络广播。每一个新 

加人的节点都需要广播,这样极大地增加了网络开销。 

还有一些P2P搜索机制,如SETS(search enhanced by 

topic segmentation,话题分割搜索) ,它是采用超级节点方 

式,每个超级节点负责一类的内容,同时根据普通节点所 

含不同的内容连接到不同的超级节点上。SETS的搜索路 

由分为全局路由和本地路由。全局路由就是在不同的超级 

节点之间进行路由.寻找不同类的内容:本地路由就是主 

要在某一个超级节点的范围内进行洪泛查询。由于采用超 

级节点的方式,因此单点失效是SETS机制的一个致命问 

题。GESt 】采用分布式的方法.并且通过语义相关性建立连 

接,形成语义组。在进行资源搜索时,GES使用biased walk 算法找到目标语义节点,通过目标语义节点在语义组中进 

行洪泛查询。在GES的基础上,有研究人员提出了CSSt蚓. 

CSS把每一个节点里面不同种类的内容再分成不同的虚 

拟节点,这样提高了查询的效率。但是却忽略了分割虚拟 

节点的开销。 

3 VSM的背景介绍 

VSMI。q是一种使用节点所包含的关键词来表示节点 

内容的方法。在VSM方法中,使用关键词的矢量来表示每 一个文档或者查询消息.通过余弦内积和的计算方法来判 

断是否语义相关,对于一个文档D和查询消息Q来说,其 

计算方法为: 

肌L(D,Q)= , (1) EnQ 在式(1)中,t是在文档D和查询消息Q中同时出现 

的关键词',n 是关键词t在文档D中的权重,fQ, 是关键词 

t在查询消息Q中的权重。 

4 SKIP设计 

在这一部分中,将详细阐述SKIP,分为节点矢量、拓 

扑构建和搜索协议3个子部分。 

4.1节点矢量 

对于每一个节点来说,把它的关键词按照权重抽取出 

来,形成节点矢量,使用节点矢量来表示这个节点的内容。 

使用VSM来计算节点矢量间的语义相关度。首先,对于一 

个节点中的每一个文档按权重抽取出关键词,每一个关键 

词的权重根据该关键词在文档中出现的频率来确定:其 

次,对于一个节点来说,将节点中每个文档的带权重关 

键词加起来,便得到该节点的权重关键词.其计算方法 

为 : ,在这里,n是该节点中文档数目, 是各个文档 i=1 相同的关键词。最后,把所有按照上述方法计算出来的带 

权重关键词组合在一起,便形成了该节点的节点矢量。 

以节点 和节点y为例,它们的节点间语义相关度 

用节点矢量的计算方式如下: 

E L(X,Y)=L,fx, 西, (2) tExY 在式(2)中,t是在节点 的节点矢量和节点y的节 

点矢量中共同拥有的关键词 是关键词t在节点X中的 权重 , 是关键词t在节点Y中的权重。如果通过式(2) 计算出来的相关度数值大于或等于某一个门限值。那么这 

两个节点被认为是语义相关,反之,则不相关。 

同样,可以用如下的式子来计算节点 和查询消息Q 

之间的相关度: 

髓L(X,Q): , (3) t ̄x,Y 4.2拓扑构建 每一个节点有两类邻居:一类是随机邻居,即是通过 

式(2)

计算出来的语义相关度数值小于设定的相关度门限 鼗 研燮与谱发 

值REL—THRESHOLD;一类是语义邻居,即通过式(2)计算 

出来的语义相关度数值大于或等于设定的相关度门限值 

REL—THRESHOLD。拓扑构建的目标有两个,一是把语义 

相关的节点通过语义连接组成语义组,二是每个节点保持 

一定数目的随机连接以便于发现新的语义连接。拓扑构建 

算法包含两个部分,一个是邻居发现部分。另一个是邻居 

维持部分。 

在邻居发现部分,起始节点会发起一个消息,该消息 

包含有本节点的节点矢量信息、语义相关度门限值 

REL—THRESHOLD、m(time.to.1ive,生命周期)等,该消息 

将随机地发送给其他节点。当消息到达一个节点后,该节 

点将会用式(2)计算与起始节点的语义相关度,然后把 

m的数值减去1,再随机地发送出去,直到m的数值 

等于0,这条消息将会被丢弃。 

MAX_SEM_LINKS是每个节点允许的最大语义邻居连 

接数, ND_LINKS是每个节点允许的最大随机邻居 

连接数。同时,每个节点有2个邻居候选cache:一个是随 

机邻居cache;一个是语义邻居cache。根据式(2)计算出来 

的语义相关度数值。该节点将会被起始节点按照是否语义 

相关分别放人随机邻居cache和语义邻居cache中,起始 节点将会从语义邻居cache中选择语义相关度最高的前 

MAX.sEM LINKS个语义相关节点作为它的语义邻居:同 

时从随机邻居cache中随机选择MA 一 NOLINKS个节 

点作为随机邻居。对于语义邻居,起始节点会将它们按照 

语义相关度的数值从高到低进行排序。 

在邻居维持部分,其任务就是从邻居候选cache中选择新 

的邻居以及保持现有符合要求的邻居。每个节点会周期性 

地从它的语义邻居cache中选择新的语义邻居来更新它 

的语义邻居连接,其算法为0d印f_se e动60 0,需要注 

意的是,当语义相关度数值大于或等于门限锄EL—THRESHOLD 的节点数大于最大语义邻居连接数MAX_SEM_LINKS时, 

起始节点将选择相关度最高的前MAX_SEM_LINKS作为 

新的语义邻居。同理,节点的随机邻居数也不能超过 

MAX_RND_L 。节点的邻居重新连接后,每个节点根据 

语义相关度的数值从高到低对语义邻居进行排序。在图1 

中,给出了邻居拓扑调整与维持的伪代码。 

4.3搜索协议 

SKIP资源搜索定位查询算法的主要思想简言之就 

是:优先搜索查询语义相关度最高的那部分节点。 

当一个节点发起查询请求时,首先使用biased_walk f) 

x.update—sere—neighbor0//Update semantic neighbors Y//a node that is not in the X'S semantic neighbor cache,but possesses the highest relevance //degree to node X if{SemLink<MaxSemLink} {X Connects Y Y becomes one of X’S semantic neighbors SemLink++//increment the number of SemLink } else if rY possesses a relevance degree that is higher than any X’S semantic neighbor) {Z//a semantic neighbor of X,that possesses the lowest relevant degree X discards Z//drop Z from the semantic neighbor cache 1X connects Y//add Y into the semantic neighbor cache ) X.update—ran—neighbor0//Update random nei【ghbors Y//a node that is not in the X S random nei【ghbor cache.but possesses the lowest relevance //degreeto nodeX if'(Y.capacity<=X.capacity)&&(RanLink<MaxRanLink) {X Connects Y Y becomes one of X’S random neJ ghbo ̄ RanLink++||increment the number of RanLink } else if fY.capacity is higher than any X’S random neighbor) (Z//a random ne J ghbor of X,that possesses the hi【ghest degree X discards Z//drop Z from the rDndom neighbor cache X connects Y//add Y into the random he:ighbor cache } 图1