基于P2P的分究与实现

Computer Knowledge and Technology电脑知识与技术第7卷第1期(2011年1月)

基于P2P的分布式搜索技术研究与实现

陈辉

(武汉理工大学计算机科学与技术学院,湖北武汉430063)

摘要:该文将P2P技术引入到搜索引擎中,重点分析了P2P搜索算法对P2P搜索所带来的影响,并基于P2P架构的特点,提出了将广度优先搜索算法和本地索引搜索算法相结合,以增强节点间的交互能力,是解决目前P2P搜索技术中产生大量冗余数据包的一个行之有效的方法。在此基础上,论文针对小范围P2P搜索环境,提出了全新的P2P搜索模型。

关键词:搜索引擎;对等网络;分布式搜索;广度优先

中图分类号:TP393文献标识码:A文章编号:1009-3044(2011)01-0022-03

Implement and Research of Distributed Search Technology Based on P2P

CHEN Hui

(College of Computer Science&Technology,Wuhan University of Technology,Wuhan430063,China)

Abstract:This paper brings P2P technology into search engine,With natural advantage under P2P network,the thesis Priority has ana-lyzed the P2P algorithm searching for what be brought about effete to P2P,Suggest that the breadth-first search algorithm and elicitation method search for algorithm combine each other with extent,strengthen the node room interactive ability,be to resolve a effective scheme producing large amount of redundancy data bag at present in P2P search technique and owing to P2P frame characteristic,The thesis has searched for an environment here on the basis,specifically for small range P2P,has brought forward brand-new data synchronism mode. Key word:search engine;peer-to-peer;distributed search;the breadth-first search

P2P是peer-to-peer的缩写,peer在英语中的解释是“伙伴”的意思,P2P可以理解为“伙伴对伙伴”的意思,或称为对等联网。P2P最初的起源是联网通信方式,是一种比较古老的技术,如产生于1979年的USENET/1984年的FidoNet都是基于P2P技术的,但是目前

P2P己被赋予了新的含义,是旧有技术的新的应用模式。

P2P的原意是一种通信模式,在这种通信模式中,每一个部分具有相同的功能,任意一个部分都可以开始一次通信。现在对P2P 概念进行了扩展,如IBM公司认为:P2P系统由若干互联协作的计算机构成,且至少具有如下特征之一:系统依存于边缘化(非中央式服务器)设备的主动协作,每个成员直接从其他成员而不是从服务器的参与中受益;系统中成员同时扮演服务器与客户端的角色;系统应用的用户能够意识到彼此的存在,构成一个虚拟或实际的群体。

对等网络尚无统一的标准。2000年8月成立了P2P工作组,成员包括Intel、IBM和HP公司等。发展对等网络的其他主要障碍还有版权问题、网络带宽问题、管理问题和安全问题等。如何连接电话、手机和家电、工业设备等,也是对等网络需要解决的问题。2基于P2P的分布式搜索引擎原理

基于P2P的分布式搜索引擎的系统原理就是在P2P网络中的任意Peer节点(搜索引擎服务器)都可以提交检索的请求,然后这些检索通过某种路由机制被路由到和检索相关的节点上去,存储有和该检索相关信息的节点将会响应请求,把本地相关的内容以对等的形式直接传回到请求节点上,流程图见图1。图中的检索过程分为以下几个阶段:每个节点在加入网络的时候,会对在本节点的索引库中进行检索,以满足本地内容检索的目的。然后按某种预定的规则选择一些节点作为自己的邻居,加入到P2P网络当中。.发起者P提出检索请求。,并将。发送给自己的邻居。P的邻居收到q后,再按照某种策略转发给它在网络中的其它邻居节点。这样,q就在整个网络中传播开来。收到请求q的节点如果存储有相应内容信息,则将对应的内容返回。

3P2P搜索技术及应用

1)P2P搜索与传统搜索的比较

传统搜索(如我们熟悉的Baidu、Google、Yahoo等)并不真正搜索Inter-

net,它搜索的实际上是预先整理好的网页数据库的索引。传统意义上的搜

索引擎工作过程大致可以分为以下三个步骤。

(1)从Internet上抓取网页资料

(2)建立Internet网页索引数据库

(3)在索引数据库中进行搜索

P2P搜索和传统的搜索不同,P2P搜索是真正的去搜索Internet。在P2P

收稿日期:2010-11-15

作者简介:陈辉,男,安徽阜阳人,硕士,研究方向为嵌入式系统设计。图1P2P信息检索流程

E-mail:info@https://www.360docs.net/doc/4f12500519.html,

https://www.360docs.net/doc/4f12500519.html, Tel:+86-551-56909635690964

ISSN1009-3044

Computer Knowledge and Technology电脑知识与技术Vol.7,No.1,January2011,pp.22-24,36

Computer Knowledge and Technology 电脑知识与技术

第7卷第1期(2011年1月)网络中,用户将各自拥有的资源共享出来,而共享的资源就存储在用户的机器上。一台机器上的用户将搜索信息请求同时发给网络上另外的N 台机器,如果搜索信息不能够得到满足,这N 台机器中的每一台都会把搜索信息的请求转发给另外N 台PC ,不断重复这个过程。这样搜索的范围将会在几秒钟内以几何级数增长,一定时间内就可以搜遍百万台机器上的资源信息。

相对于传统的搜索服务而言,P2P 技术不仅仅节约了服务器的成本并提高了信息的搜索效率,更重要的意义在于促进了搜索的多元化和权利、义务的分解,使每一台机器都参与到了搜索过程中去,由普通的接受服务的客户端向可以提供服务的一方转变。通过合理可行的方法,将P2P 技术与搜索服务结合在一起,在现有的建立统一搜索索引数据库的思路之外,还可以另外引进二条思路:一是在Internet 上进行全面的分散备份和无机备份、分散索引和无机索引的思路,而是在互联网上进行至索引而无备份的思路。这样就可以使搜索技术大步向前迈进,走出搜索形式多样化的道路。

2)集中式P2P 网络的搜索技术

集中式P2P 网络采取是集中索引结构,对等体(peer)发送一个查询信息到唯一的一个中央服务器,如图2,中央服务器根据对等体发送来的查询信息,在服务器保存的索引信息进行本地搜索,然后将搜索结果发送给对等体。对等体根据服务器发送回来的消息与对应拥有资源的对等体建立连接,并在对等体之间传输所需内容。当对等体的资源发生

变化时,比如资源的增加,修改,删除等,索引服务器将收到更新消息,并据此修改服务器缓

存的资源索引信息。这种结构查询信息和更新消息只在服务器和对等体之间传播。

3)结构化P2P 网络的搜索技术

结构化P2P 网络采用分布式哈希表(Distributed Hash ,Table 简称DHT)结构,使用对应

到一个散列(Hash)空间,并且分布式哈希表索引对资源和节点进行搜索。分布式哈希表技术

简介:首先将整个搜索空间对各个节点(基于节点的IP 地址)也进行相应散列,每个节点各

负责一部分散列空间。当一个节点发布一个资源(例如文件),需要对该资源的唯一标识(如

文件名)进行散列,而根据该散列值可以确定负责管理该资源的节点。当一个节点要搜索该资源时,同样对该资源的唯一标识使用相同的散列函数进行散列得到散列值,通过有效地局部路由,找到负责该资源的节点从而可以找到要搜索的资源。在这类系统中,赋给每个节点的区域是动态的,依赖于每个时候加入和离开网络的节点数量。

下面重点以Chord 为例介绍使用DHT 搜索技术的P2P 网络。诞生于美国的麻省理工学

院。它的目标是提供一个适合于P2P 环境的Chord 项目分布式资源发现服务,它通过使用DHT 技术使得发现指定对象只需要维护O(logN)长度的路由表。在DHT 技术中,网络节点按节点标识符(node ID),资源对象通过散列运算产生一个唯一的资源标识符(Object ID),且该资源将存储在节点ID 与之相等或者相近的节点上。需要查找该资源时,采用同样的方法可定位到存储该资源的节点。因此,Chord 的主要贡献是提出了一个分布式查找协议,该协议可将指定的关键字(Key)映射到对应的节点(Node)。从算法来看,Chord 是相容散列算法的变体。

在搜索的过程中(如图3所示),源节点将点上。收到查询请求的节点如果发现自

身存储了被查询的信息,可以直接回应源节点(这与一致性哈希完全相同);如果被查

询的信息不在本地,就根据查询表将请求转发到与键值最接近的节点上。这样的过程

一直持续到找到相应的节点为止。不难看出,搜索过程实际上就是折半查找的过程。

由于P2P 模式具有的技术特点,很多IT 公司和研究部门都认为该技术蕴涵着巨

大的技术和商业潜在价值,并从不同的角度研究和应用该技术。目前P2P 的应用主要

有:文件交换、对等计算、协同工作、搜索引擎、即时通信、网络游戏软件、基于Internet

的文件存储系统等。4)非结构化P2P 网络的搜索技术

非结构化P2P 网络是在重叠网络(Overlay Network)上使用了随机图的方式,搜索

技术主要采取的是泛洪(Flooding)。非结构化P2P 网络的典型代表就是Gnutella ,Gnutella 采取的是基于随机图的泛洪算法。Flooding 的工作流程:当一台计算机要下载一个文件,它首先以文件名或者关键字生成一个查询,并把这个查询发送给与它相连的所有计算机,这些计算机如果存在这个文件,则与查询的机器建立连接,如果不存在这个文件,则继续在自己相邻的计算机之间转发这个查询,直到找到文件为止。为了控制搜索消息不至于永远这样传递下去,一般通过TTL(Time To Live)机制来控制查询的深度。随着联网节点的不断增多,网络规模不断扩大,通过这种Flooding 方式定位对等点的方法将造成网络流量急剧增加,从而导致网络中部分低带宽节点因网络资源过载而失效。所以,后来许多研究人员在Flooding 的基础上作了许多改进。主要有下面各种方法:

(1)迭代泛洪(Iterative Flooding)

(2)本地索引(Local Index)

(3)随机游走(Random Walk)搜索方法

(4)基于移动Agent 的搜索方法

5)混合式P2P 网络的搜索技术

在混合P2P 网络中,选择性能较高(处理、存储、带宽等方面性能)的节点作为超级节点,在各个超级节点上存储了系统中其他部分节点的信息,发现算法仅在超级节点之间转发,超级节点再将查询请求转发给适当的叶子节点。半分布式结构也是一个层次式结构,超级节点之间构成一个高速转发层,超级节点和所负责的普通节点构成若干层次。其代表就是Kazaa ,其搜索过程如图4所示。虚线代表二个peer 之间交流信息。

混合式P2P 网络搜索的优点是性能、可扩展性较好,较容易管理,但对超级节点依赖性大,易于受到攻击,容错性也受到影响,实现上比较困难,为了能够利用这种模式的优点,需要提供能够有效组织对等体间关系的搜索网络,这里所说的组织关系,包括超图2集中式P2P 搜索过程图3Chord 的搜索过程

级节点间的组织模式、客户对等体与超级节点间的组织模式、超级节点间的负载

平衡等。

4基于P2P 网络的分布式广度优先搜索

1)广度优先搜索算法

广度优先搜索算法(又称宽度优先搜索,即BFS)是最简便的图的搜索算法之

一,为了减少冗余的搜索包,最简单的方法就是以源节点为根,建立网络图的广

度优先生成树,源节点根据广度优先生成树将查询消息发送到每个节点。这样可

以保证每个节点都收到查询消息,而且每个节点只收到一次查询消息,不会产生

冗余。已知图G=(V ,E)和一个源顶点s ,广度优先搜索以一种系统的方式探寻G

的边,从而“发现”S 所能到达的所有顶点,并计算S 到所有这些顶点的距离(最少边数),该算法同时能生成一棵根为S 且包括所有可达顶点的广度优先树。对从S 可达的任意顶点v ,广度优先树中从S 到v 的路径对应于图G 中从s 到v 的最短路径,即包含最小边数的路径。该算法对有向图和无向图同样适用。

之所以称之为广度优先算法,是因为算法自始至终一直通过已找到和顶点之间的边界向外扩展,也就是说,算法首先搜索和s 距离为k 的所有然后再去搜索和s 距离为k+1的其他顶点。

2)广度优先搜索弊端

广度优先搜索能够确保搜索到网络中的每个节点的信息,同时每个节点只被搜索一次。但是,进行广度优先搜索需要事先知道P2P 网络中关于所有节点的网络拓扑结构,这在P2P 网络中几乎是不可能的。在P2P 网络中,虽然可以通过节点之间相互交换信息来获得所有节点的网络拓扑结构,但是这需要大量的信息交换,会给网络带来很大的负载,特别是当网络的规模比较大时,要获得网络拓扑结构图所带来的负载是不可想象的。广度优先搜索在消除了网络中存在的环路,也即消除冗余数据包的同时,又带来了新的弊端。

3)分布式广度优先搜索

结合广度优先搜索不会产生冗余的优点和P2P 网络的动态特性,以及本地索引搜索、启发式搜索的优点,本文提出在小范围内进行广度优先搜索的方法,称为分布式广度优先搜索(DBFS)。分布式广度优先搜索可以在区域内部的范围内大量减少冗余的搜索包,同时,由于范围比较小,因此具有很好的可扩展性和健壮性,能够适应P2P 网络的动态变化。那么,在多大范围内进行广度优先搜索是比较合适的呢?很显然,范围越大就越能减少冗余,当范围是整个网络时,就相当于是对所有的节点进行广度优先搜索。但是,范围越大,为获得网络拓扑结构,节点之间就需要更大的信息交流。当信息交流的增加超过一定范围之后,将会比泛洪搜索中冗余数据包带来更大的网络流量,就达不到减少冗余数据包,减轻网络负载的目的;同时,范围越大,获得的网络拓扑结构就越难及时反映P2P 网络的动态变化。

4)分布式广度优先搜索模型

如图5所示,它是一个分布式广度优先搜索的原理图,同时一个被简化了的、理想化了的P2P 网络图。在图中,在搜索信息没有收到之前,首先通过启发式搜索的统计方法发现节点A 、B 、C 、D 四个节点具有在线时间比较长,在以往的搜索中返回的搜索结果比较多,响应的时间比较快等特点,具有索引节点所应该具备的特点,同时它们相距4跳远,满足建立2跳远节点信息的条件,所以确定节点A 、B 、C 、D 四个节点为索引节点,其他节点为转发节点。

这四个节点分别索引2跳节点内的节点信息,在图中四个节点

索引的信息分别是四个椭圆中的所有节点中的信息。这一索引过程

是通过广度优先搜索和启发式搜索相结合,分别在各自的区域内确

立一棵广度优先生成树来完成的,这样就保证了在区域内部每个节

点能够收到索引信息而且只能够一次收到索引信息。保证了所有节

点的信息都存储到了索引节点上,即图中的节点A 、B 、C 、D 。

在搜索信息到来时,其它所有节点都只转发这一搜索信息,只有

节点A 、B 、C 、D 才响应搜索信息,同时返回与搜索信息相匹配的信

息。由于所有节点的信息都存储到了索引节点上,所以,只查询节点

A 、

B 、

C 、

D 四个节点,就能达到查询图3中所有节点信息的目的,大大减少了搜索次数,同时大量减少了冗余的搜索数据包,减少了

返回信息时多余的数据包。

总之,通过分布式广度优先搜索,能大量减少搜索的次数,减少区域内部冗余的数据包,减轻搜索过程中网络的负载,提高了搜索效率和搜索速度,提高了搜索结果的准确率。5)分布式广度优先搜索算法的理论证明

因为源节点s 会向它的所有邻居发送消息,所以距离s 节点—跳远的节点都能收到消息。假设距离s 节点N (N ≥1)跳远的节点都能收到消息。下面证明距离s 节点N+1跳远的节点也能收到消息。从距离s 节点N+1跳远的节点中任意选出一个节点,假设为v ,由于图是连通图,源节点s 与v 之间至少有一条路径,所以距离s 节点N 跳远的节点中至少有一个节点是v 的邻居节点,假设在距离s 节点N 跳远的节点中v 的邻居节点为{v 1,v 2,…,v m }。在距离s 节点N-1跳远的节点进行广度优先遍历时,{v 1,v 2,…,v m }中至少有一个节点不是叶子节点,因此{v 1,v 2,…,v m }中至少有一个节点会被选做转发节点。所以v 必定会收到消息。

5总结

分布式广度优先搜索在一个给定的有限的空间内,基本能够保证所有节点上信息都能被搜索出来,而且在分布式广度优先搜

(下转第36页)

图4Kazaa 搜索过程

图5分布式广度优先搜索原理图

(上接第24页)

索的区域内部,的确能大量减少冗余搜索包,能大量的减少查询的次数。而且由于索引节点的稳定性、快速性,也能提高查询的速度,从而达到提高系统的搜索速度,提高系统的搜索效率,减轻搜索过程中网络负载的目的。

参考文献:

[1]

林涨,何巍.利用JXTA 平台实现P2P 服务的研究[J].武汉理工大学学报,信息与管理版,2005(2).[2]

Daniel,Brook shier.Java P2P 程序设计[M].北京:中国电力出版社,2003.[3]

黄道颖,李祖鹏,庄雷,等.分布式Peer-to-Peer 网络Gnutella 模型研究[J].计算机与应用,2003(5).[4]

陈洪,刘双与,杨玉华.P2P 技术发展与应用[J].计算机工程,2003,29(19):127-129.[5]

李祖鹏.P2P 网络路由模型研究及其在MANET 路由协议设计中的拓展[D].中国人民解放军信息工程大学,2004.[6]

张联峰,刘乃安,钱秀槟.对等网(P2P)技术[J].计算机工程与应用,2003(12).[7]

张景祥,张京嵋,李乐民.等.P2P 网络安全的信任模型研究[J].计算机究,2003(3):78-79.[8]孙波,王军宁.IPTV 的组网及关键技术分析[J].中国有线电视,2006(2).

示例,用户只需要根据需要做少量修改就可以达到目标,配置的重点是选择合适的负载均衡算法,HAProxy 提供了下列多种算法,能够满足日常的负载要求:

①节点轮询对于所有正常工作的节点,HAProxy 会按照顺序将每个请求发送至下一个节点。避免了传统算法将非正常节点也参与轮询而导致请求丢失的情况。在这种算法下,HAProxy 最多可以支持4128个可用节点。

②节点权重这种算法类似轮询,只是在发送请求是会考虑后台节点的权重,根据权重的不同分配请求量。这种算法理论上没有最大节点个数限制,并且那些由不可用变为可用状态的节点,也会立即参与轮询。

③最少用户HAProxy 会将请求发送给当前请求数最少的节点。若一个节点组中多台服务器的节点数相同,那么将采用轮询算法。HAProxy 官方不推荐将这种算法用户HTTP 等会话时间较短的应用,对于LDAP 、SQL 等会话时间较长的应用,这种算法的优势非常明显。

④源IP 地址这个算法会根据请求来源IP 的HASH 值来分配后台节点,保证相同

源IP 的每个请求都会被发送到后台的同一个节点,这样可以实现很好的会话保持。但当

源IP 都来自某一个相同的网段时,传统算法可能会将大量请求发送到某一固定节点上,

导致负载均衡失效,HAProxy 可以在实现源ip 地址负载的同时考虑各节点的权重值,这

样既能对回话进行保持,又可以保证各节点的负载均衡。⑤URI 这个算法可以根据用户请求的URI 地址分配后台节点,即针对某些URI 地

址的请求会被固定再某一个节点上。

由于选课系统需要用户登录,所以这里选用源IP 地址的算法进行负载均衡。确定负

载均衡算法后,还需要根据实际情况配置HAProxy 的其他参数,才能使HAProxy 的性能

完全发挥出来,主要的参数如表1所示。

HAProxy 提供web 监控页面,可以监控各节点的负

载及健康状况,管理员可以通过监控信息调整负载均衡

策略,如图2所示。

3结论

HAProxy 明显提高了后台Web 服务器的吞吐量,并

且通过灵活的策略配置实现了流量负载均衡过程。采用

源IP 的策略在保证负载分配的同时很好的进行了会话

保持,这种弹性的解决方案对提高选课系统效率的作用

非常明显,为稳定、高效的提供服务打下了基础。参考文献:

[1]

周集良,彭小宁,王正华.基于集群的负载平衡调度算法研究与实现[J].计算机工程,2005(12).[2]

冯彬.高校校园网防代理服务技术浅析[J].职业时空,2008(10).[3]

吴欢欢,万晓冬.一种服务器/均衡器合作式集群体系的结构[J].科技广场,2005(6).[4]

陈柏兴,张夏雨.负载均衡在内网安全审计系统中的应用[J].广东科技,2010(6).[5]

于晓飞.一种基于负载均衡的无线传感器簇头重配置算法[J].电脑知识与技术,2010(25).[6]

黄洋.基于企业网的分布式入侵检测系统的设计与实现[J].武汉理工大学学报:交通科学与工程版,2005,(4).[7]王俊涛,郭成城,熊智,等.多前端并行负载均衡集群服务器的设计与实现[J].计算机工程与应用,2005,(30).

表1HAProxy 常用参数

图2HAProxy 监控图

相关文档
最新文档