论文部分内容阅读
P2P技术是近年来计算机网络最热门的研究领域之一,基于P2P技术构建的新型的互联网应用层出不穷,例如BT、Emule之类的资源共享软件的应用非常之广泛。P2P技术的应用还包括了分布式存储、共享计算能力和应用层组播等各方面,这些应用对于P2P网络架构的扩展性、容错性、可维护性及查找算法效率等方面提出了非常高的要求。而基于分布式哈希表(DHT)的结构化P2P网络的高扩展性、高可靠性、低开销以及支持海量节点和数据等特性满足了上述应用的需要。P2P网络通常使用DHT作为其路由表,比较典型的算法有Chord,CAN,Kademlia,Tapestry,Pastry等,这些算法不仅可靠性高,容错性强,而且查找的效率非常高,查找算法的复杂度基本上都是O(LogN),被广泛地应用于各种各样的分布式系统中。但是以DHT算法为基础的P2P网络自身也存在着很多问题,其中DHT的维护机制相当复杂,当有节点频繁加入退出P2P网络或者失效时造成的网络波动极大影响了P2P网络系统的性能,增加了DHT的维护代价,另外在某些特定的应用中,可以适当的修改和优化DHT算法中,可以在一定程度上提高P2P网络系统的效率。本文主要研究和比较了上述的DHT算法的原理和差异,对Chord算法进行了较为深入的研究和分析。Chord算法是利用了一致性哈希函数生成的标识符,并据此设计了自己的路由表,提供了一个非常有效的路由算法,提升了查找速度。但Chord算法也存在着明显的不足,其路由表的维护过程相当的复杂,而且其逻辑网络与实际网络的差异性使Chord算法在查找的时候也会存在一定的局限性,另外Chord算法中的数据安全性在某些特定场合也有待提高。本文依此提出了对Chord算法的改进,主要是针对路由表的维护和哈希空间的分配等方面进行了优化,例如初始化路由表的更新策略,标识符手工分配的策略,哈希空间的地域分割技术和哈希空间的分片技术,主要解决的就是上述问题。另外根据现成的一些P2P算法模拟器的思路设计了实验系统,利用多线程的技术进行多节点的模拟,并且设计了较符合实际情况的网络拓扑结构和失效模型,模拟网络的动态性,最后对实验的结果进行了比较和分析。此外对DHT算法的具体应用也提出了自己的见解。