消除p2p结构中使用洪泛算法带来的网络拥塞,也提高了资源搜索效率,并且超级节点的引入也能在一定程度上提高整个网络的负载平衡。
三、结构化p2p网络模型
结构化(structured)p2p网络模型与非结构化p2p网络模型的根本区别在于每个节点所维护的邻居是否能够按照某种全局方式组织起来,以利于快速查找。结构化p2p模式采用纯分布式的消息传递机制,及根据关键字进行查找的定位服务。目前的主流方法是采用分布式哈希表(distributed hash table,dht)这种资源定位技术:首先将网络中的每一个节点分配虚拟地址(vid),同时用一个关键字(key)来表示其可提供的共享内容。取一个哈希函数,这个函数可以将key转换成一个哈希值h(key)。网络中节点相邻的定义是哈希值相邻。发布信息的时候就把(key,vid)二元组发布到具有和h(key)相近地址的节点上去,其中vid 指出了文档的存储位置。资源定位的时候,就可以快速根据h(key)到相近的节点上获取二元组(key,vid),从而获得文档的存储位置。
不同的dht算法决定了不同的p2p网络的逻辑拓扑,有的结构化p2p网络具有环形拓扑结构,有的具有网状拓扑结构,而有的是采用多维向量空间。
chord:chord采用了相容哈希函数 (consistent hashing),把所有节点和节点的文档对应到一个由n个整数所形成的标识环(identifier circle)上。每个节点用一个节点标识(node id)来代表节点在标识环中的位置,节点标识是节点ip的哈希值。而每个文档则用一个文档标识(object id)来表示,文档标识也是通过对求文档的哈希值来得到。当一个新文档加入系统时,系统会根据文档标识来寻找其在标识环中的后继者(successor)来保存这个新文档的信息,即保存此文档的节点的ip地址等信息。一个标识k的后继者successor(k)均是从k开始,沿标识环顺时针方向所找到的第一个节点,即节点标识符大于等于k的第一个节点。
can:相对于chord使用环状架构,can则采用基于虚拟的d维笛卡尔坐标空间实现其数据组织和查找功能,整个坐标空间动态地分配给系统中的所有节点,每个节点都拥有独立的互不相交的一块区域。虚拟坐标空间采用下面的方法保存(关键字,值)对。当保存(k1,v1)时,使用统一的哈希函数把关键字k1映射成坐标空间中的点p。那么这个值将被保存在该点所在区域的节点中。
pastry:在pastry中,每一个节点都被分配了一个128位全局唯一的节点标识(nodeid),当给定一条消息和一个关键字时,pastry节点将会把这条消息路由到在当前所有的pastry节点中nodeid和关键字最接近的那个节点。pastry考虑了网络的位置信息,它的目标是使消息传递的距离最短。距离采用类似于ip路由的hop数的标量距离来度量。
参考文献
[1] 龚海刚, p2p 流媒体关键技术的研究进展.计算机研究与发展.2005
[2] 郭水强, gnutella网络中的异构延迟现象及解决方案.计算机应用研究.2004
上一页 [1] [2]