数据网格产品经常会使用P2P进行通信,借此机会系统地学习一下P2P网络和其资源搜索策略。
1 P2P网络架构
谈到P2P就涉及到一个概念:Overlay Network(覆盖网络)。所谓覆盖网络是应用层网络,几乎不考虑网络层和物理层,它具体指的就是建立在另一个网络上的网络。例如P2P网络就是覆盖网络,因为它运行在互联网之前,但允许对未知IP主机的访问。通过DHT等算法,可以在事先不知道IP地址的情况下,访问到存储某个文件的结点。
常见的P2P系统主要有Unstructured Network和Structured Network两种架构。
1.1 Unstructured Network
非结构化的P2P网络并不给覆盖网络强加某种特定架构,而是结点间随机形成链接。最流行的P2P网络,像Bittorrent、eMule、Gnutella、Kazaa等都是非结构化的P2P协议。因为缺少结构,所以网络面对频繁的动态添加和删除结点时,依然能够健壮地运行。但也正因为缺少结构,所以当某个结点想要搜索某些数据或文件时,查询必须flood整个网络(详见1.3搜索策略)。
1.2 Structured Network
结构化P2P网络将覆盖网络组织成某种特定的拓扑结构,并且它的协议能够保证:任何结点都能高效地搜索网络中的资源,即使资源是非常冷门的。常见的结构化P2P网络通常实现一致性哈希或者其变种分布式哈希表DHT分配文件的所有权到特定的结点。
1.3 搜索策略
两种P2P网络可以使用不同的检索策略:中央索引、本地索引和分布式索引。分布式索引策略是对其他两种策略的权衡。

本文详细介绍了P2P网络的两种架构——Unstructured Network和Structured Network,以及搜索策略。重点讨论了一致性哈希的构造、查找过程和结点增删的影响。此外,还讲解了分布式哈希表DHT的概念,并以Chord为例,阐述了Chord环、Finger表和查找过程,展示了DHT的高效查找特性。
2317

被折叠的 条评论
为什么被折叠?



