论文部分内容阅读
近几年来对P2P 的研究迅速升温,各方面的应用层出不穷。特别是它提供无穷的存储空间以及不受限制的传输容量,这是传统中央服务器所无可企及的。P2P 网络中的节点既是服务使用者,也是服务提供者。节点之间通过分布、对等的算法实现协作和共享。这样,整个网络应用的核心从中央服务器向网络边缘的终端设备扩散。目前因特网以网站为中心的状态终将彻底改变,人们将会以更主动的方式参与到网络活动中去。从C/S 模式到P2P 模式的发展,Internet 上的共享行为被提升到了一个更高的层次。这对我们解决很多难题都是一个良好契机,在分布计算、协同工作、搜索引擎、文件交换等方面有着广泛的应用前景。所有这些P2P 应用面临的最核心问题就是如何在没有中心节点的情况下完成资源的查找,并且能保证查找过程的高效性、可靠性、可伸缩性。目前的方案主要分成两类:洪泛算法(Flooding)类和基于分布式哈希表(DHT)的方法。Flooding 算法以Gnutella 为代表。Gnutella 曾经有过不少用户,但是人们很快就发现随着网络规模的增长,四处广播的数据报很快就会把网络带宽耗尽。虽然在Flooding 基础上也有很多文章提出各种控制广播流量的算法,但是终究很难应付随节点数目增长而呈指数增长的系统开销。所以目前很多研究都集中在基于DHT 的方法上。利用DHT 实现的查找算法比较多,比较知名的包括最早的Plaxton 算法及其变种Tapstry,微软提出的Pastry,伯克立和AT&T 提出的CAN 等等。特别是MIT 提出的Chord 算法在网络节点变化剧烈的环境中仍然具有较好的性能。这一点非常重要,因为现实中P2P网络的节点自治性必然导致网络结构频繁变动。在这些恶劣条件下能保持较高的查询效率才是最重要的。