Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3247927
  • 博文数量: 530
  • 博客积分: 13360
  • 博客等级: 上将
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-13 13:32
文章分类

全部博文(530)

文章存档

2017年(1)

2015年(2)

2013年(24)

2012年(20)

2011年(97)

2010年(240)

2009年(117)

2008年(12)

2007年(8)

2006年(9)

分类: 系统运维

2010-09-20 09:52:26

1.非结构化
       在非结构化的系统中,每个节点存储自身的信息或信息的索引(如指针和IP地址)。当用户需要在P2P系统中获取信息时,他们预先并不知道这些信息 (如某个文件)会在那个节点上存储。因此,在非结构化P2P系统中,信息搜索的算法难免带有一定的盲目性,例如最简单的泛洪式查找(类似于广播)和扩展环查找(从最近的n个节点开始,层层转发直到找到目标或超出了跳数的上限为止)。

       一些典型的应用采用了一些优化的办法。如在Gnutella中,采用了等级制的组成结构:节点被分成超级节点(Super Node)和普通节点。普通节点必须依附于超级节点,每个超级节点作为一个独立的域管理者,负责处理域内的查询操作。在查找的过程中,查询首先在域内进行,失败后才会扩展到超级节点之间。

      优点:实现结构简单,无须中央服务器,节点之间完全平等,网络的层次是单一的,而且节点之间无需维护拓扑信息。
      缺点:信息查询存在盲目性,很难查询网络中所有节点的信息

2.结构化
       P2P网络中的节点是有固定结构的,每个节点只存储特定的信息或特定信息的索引。当用户需要在P2P系统中获取信息时,他们必须知道这些信息(或索引)可能存在于那些节点中。
       用户预先知道应该搜索哪些节点,避免了非结构化P2P系统中使用的泛洪式查找,因此提高了信息搜索的效率。

结构化P2P也引入了新的问题:
       1.既然信息是分布存储的,那么如何将信息分布存储在重叠网中的节点上?
       2.由于节点动态的加入和离开重叠网,如何将拓扑的变更信息通知其它节点?
       3.如何知道获取的信息存在于哪些节点上?

3.DHT与结构化
       DHT使用分布式哈希算法来解决结构化的分布式存储问题。分布式哈希算法的核心思想是通过将存储对象的特征(关键字)经过哈希运算,得到键值(Hash Key),对象的分布存储依据键值来进行。具体来讲,大致有以下步骤:
       1.对存储对象的关键字进行哈希运算,得到键值。这样就将所有的对象映射到了一个具体的数值范围中。
       2.重叠网中的每个节点负责数值范围中的特定段落。例如,节点A负责存储键值从8000到8999的对象;而节点B负责7000~7999的对象。这样就将对象集合分布地存储在所有的节点中。节点可以直接存储对象本身,如文件中的一个片段;也可以存储对象的索引,如该对象所在节点的IP地址。

结构化的分布式存储问题解决后,剩下的问题就是用户如何才能找到存储着目标信息的节点。在有着大量节点(如100万个)的P2P系统中,任何节点都不可能拥有全部的节点?键值?内容的对应关系;因此用户获得了键值之后,如何找到该键值对应的节点就被称为DHT的路由问题。DHT协议必须定义优化的查找(路由)算法来完成这一搜寻的工作。不同的DHT协议之间区别很大程度上就在于定义了不同的路由算法。


参考文献
1.p2p网络中DHT算法. http://hi.baidu.com/aiwoadidas/blog/item/635e1d2591b57f22d5074264.html

阅读(10252) | 评论(1) | 转发(0) |
0

上一篇:DHT概述

下一篇:FLEX开源组件库网站

给主人留下些什么吧!~~

chinaunix网友2010-09-21 07:50:48

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com