论文部分内容阅读
Peer-to-Peer网络打破了传统的客户机/服务器模式,在Peer-to-Peer网络中每个节点地位都是相同的,每个节点既充当服务器,为其他节点提供服务,同时也充当客户机,享用其他节点提供的服务.Peer-to-Peer网络为充分挖掘计算机空闲的计算能力提供了可能,实现了网络资源的全面共享和合作.在大范围内实现网络资源共享和合作的前提,就是如何有效地进行资源定位.但由于Peer-to-Peer网络无中心的特性,使得在该网络上进行资源查找变得很困难.在Peer-to-Peer网络里进行资源定位的方法,已有了很多研究成果.主要包括早期的Napster和Gnutella方法,以及目前最新的研究成果基于DHT(Distributed Hash Table)的分布式查找和路由算法.Napster利用一个目录服务器辅助资源定位,目录服务器将会成为系统的瓶颈;Gnutella采用广播的方式进行资源定位,但是这增加网络的负担;基于DHT的路由算法避免了类似Napster的中央服务器,也不像Gnutella那样基于广播进行查找,而是通过分布式哈希函数,将输入的关键字唯一映射到某个节点上,然后通过某些路由算法同该节点建立连接.这种定位方法由于在一个大系统中应用层数据必须通过唯一的哈希函数选择网络数据存储的节点,使得这种资源定位方法与实际的物理结构联系小,导致资源定位的代价会比较大,而且这种资源定位方法会影响数据的本地化,即通过DHT可能把一个本地的数据映射到和本地节点在物理距离相差较远的节点上.该论文在参考了上述技术之后,结合Peer-to-Peer网络的新特点和资源定位的特点,提出一种优化的方案,并对该方案进行了仿真.该优化方案是一种层次化基于DHT有备份的Peer-to-Peer资源定位方法,借鉴Internet路由模型,结合分层的DHT和域组(Peer Group)的概念,尽量使数据本地化,在域组内实现对数据资源的备份,尽量保证在Peer-to-Peer网络中节点失效的时候也能同样定位到网络上的资源.在设计中,首先考虑资源定位不需要全局的信息,所以根据节点所在的地理位置将整个系统分成多个域组.然后考虑到Peer-to-Peer网络中节点的异构性,根据节点的综合性能,在一个域组内选举出性能最好的实体作为一个域组的Leader,代表一个域组.Leader对其他域组提供统一入口,同时又作为该域组的统一出口实现与其他域组之间的通信,Leader就类似于Internet路由器一样.该模型用一个稳定的Leader组提高了域组中心的可靠性和服务的稳定性;不同域组采用不同的DHT方式,可以有针对性的提高本地数据资源定位的准确程度;同一域组内聚性强,根据全局的规则有针对性地分割Peer-to-Peer网络中属于相同类别的群体;每个服务对象都在同域组中得到备份,提高数据的可用性,并在部分节点失效时仍能提供相同质量的服务.在仿真的过程中鉴于实验条件的限制,简化了模型,侧重对基于DHT路由算法的模拟,利用Java语言的多线程机制和适用于网络编程的特点,通过对软件框架进行分层实现系统的仿真.