论文部分内容阅读
P2P是Peer-to-Peer的缩写,中文可称为对等网,是一种新的分布式计算模式。在这种模式下,服务器与客户机的界限消失了,网络上的所有节点都可以“平等”地共享其他节点的计算资源。 P2P系统是一种分布式系统,系统中的每个节点都是对等的,既向其他节点提供服务,又向其他节点索取服务。在P2P系统中,节点之间直接交换的资源可以是文件、消息、存储空间和CPU周期等,系统中的节点是动态的,可以随时加入或退出。 随着计算机技术和网络技术的发展,渐渐形成了一种从集中的单机系统转向分布式系统的趋势,P2P越来越受到学术界和工业界的重视。P2P系统具有非集中化、可扩展性、鲁棒性、可用性、自适应性、负载均衡、匿名性等特点,主要的应用领域包括:文件交换、对等计算、协同工作、即时通讯、搜索引擎、网络游戏、基于Internet的文件存储系统和操作系统等。P2P技术尚未成熟,许多问题有待深入研究。本文的研究对象就是P2P系统的一个重要分支——文件共享系统。 本文提出了一个高效的P2P文件共享系统模型,吸纳了各种先进思想,综合了现有多个系统的优点,有力提升了系统的整体性能,本文的主要贡献有: 一、系统介绍了P2P的基础知识,归纳出P2P文件共享系统的4大主要研究问题,分别介绍了各个问题的研究状况,分析了现有技术的优缺点,总结出影响P2P文件共享系统效率的4个主要因素,即网络结构、查询方式、路由选择和文件传输方式。 二、提出了一个高效的P2P文件共享系统模型EfficientPeer,从以下几个方面提高了系统性能: (1)提出一种基于偏好的超节点网络模型,充分体现幂规律和小世界特征,提出了偏好相似度的概念和计算公式,并给出了动态自调整网络的实现策略; (2)采用分布式广度优先(DBFS)方法处理超节点间的消息转发问题,给出了DBFS的算法,分析了该算法的时间、空间复杂度和效用;并给出了进一步优化查询机制的3条规则。 (3)利用元数据自动抽取和增量更新技术,在超节点上以XML格式存储了共享文件的众多特征信息,可以支持基于XQuery的高效复杂查询。 (4)通过并行多点下载技术大幅度提高了文件传输效率。 三、详细论述了在P2P环境中进行并行多点下载的实现策略,提出了下载节点的优化选择和数据完整性判断的方法,给出了下载程序的详细算法。通过实验评估了并行多点传输技术对下载效率的提升情况(加速比),并分析了影响下载效率的因素。 下面概要介绍一下本文的特色之处。 网络结构模型是构建P2P系统的基础,与系统所提供的功能和整体性能直接相关。研究表明,P2P网络拓扑图遵循两个规律——幂规律和小世界特征,主要表现在网络中少数节点的“度”较高,以及网络拓扑具有高聚集度两个方面。根据这两个规律,我们提出了一种“基于偏好的超节点网络模型”,即将网络中的节点按兴趣偏好划分为若干个簇,同一簇中的节点偏好相似,每个簇中有一个超节点(Super-peer),各节点直接连接到本簇的超节点上,向它发送资源索引和查询消息,超节点负责资源的搜索,并能将消息转发到其他簇的超节点上。这种网络模型使大部分查询能够在本簇内完成,大大提高了查询效率,同时兼备了分布式搜索的自治性、负载平衡和健壮性。 本文研究的一个重点内容是基于偏好的簇划分方法。我们按某种标准,将P2P网络中共享的文件分为n个类别,文件的全体看作具有n个元素的集合U。定义某个节点A的偏好F(A)或某个簇X的偏好F(X)为U的一个子集,提出“偏好相似度”的概念,定义其计算公式为D(A,X)=Num(F(A)∩F(X))/Num(F(A)∪F(X)) 其中Num(S)表示集合S中的元素个数。这样,我们就可利用该公式来计算节点与簇的偏好相似度,从而将相似度高的节点划分到一起了。 在超节点之间的消息转发方面,我们采用了分布式广度优先(DBFS)的方法。即将超节点构成的网络看作一张无向图,每个超节点收集2跳(Hop)范围内的节点信息,得到小范围内的网络拓扑,这样在转发查询消息时,超节点可构造BFS生成树,然后广度优先遍历即可。此种方法可以在一定范围内保证每个节点能且只能收到一次查询消息,不会产生冗余。为了进一步提高查询效率,我们又给出了暂存相关索引,迭代深入和有向宽度优先3条优化规则。 EfficientPeer还采用了基于元数据的结构化查询技术,通过程序将共享文件的元数据提取出来,以XML格式集成到超节点上,这样就可以根据元数据,在P2P网络中更精确地查找所需的文件。可以选用XML的查询语言XQuery进行复杂查询,对某些本身带有丰富元数据的文件(如mp3、word等),可以大大提高查全率和查准率。在这部分中,我们还提出了一种简洁的元数据增量更新的方法。 为了弥补基于偏好的超节点网络无法同时顾及节点物理位置的不足之处,尽可能提高文件下载效率,EfficientPeer采用了并行多点下载的技术。该技术使请求节点能够从多个源节点同时下载一个文件的不同部分,然后拼装成完整的文件,使下载效率成倍提高。而且该技术使下载节点可以动态选择高速源节点,避免了下载过程中源节点出现故障后任务无法完成的缺陷。本文详细论述了在EfficientPeer中进行并行多点下载的实现策略,提出了利用MD5算法确保数据完整性的思路,给出了超节点网络中任意两点间距离的估算公式,从而实现了下载源节点的优选。我们编程实现了下载模块,实验证明该技术可以实现并行下载中接近线性的加速比,我们还分析了影响下载效率的各个因素。 本文的写作是沿着“如何构造一个高效的系统”这条主线进行的,各种先进思想和先进技术在基于偏好的超节点网络这一总体架构下取长补短,相互配合,构成一个有机的整体。系统表现出来的最突出的特点就是整体性能的“高效”,这也是我们寓于“EfficientPeer"这个名字中的殷切期望。