P2P 应用

Wu Jun 2020-01-08 09:43:49
Categories: > Tags:

P2P 应用就是指具有 P2P 体系结构的网络应用。所谓 P2P 体系结构就是在这样的网络应用中,没有(或只有极少数的)固定的服务器,而绝大多数的交互都是使用对等方式(P2P 方式)进行的。

P2P应用的范围很广,例如,文件分发、实时音频或视频会议、数据库系统、网络服务支持(如 P2P 打车软件、P2P 理财等)。

在 P2P 文件共享的发展史上,出现过 3 种不同的技术路线(三代)。

第 1 代:中央服务器

典型代表是 Napster。集中定位,分散传输。

采用【中央服务器】的模式 —— 每个节点都需要先连接到中央服务器,然后才能查找到自己想要的文件在哪里。

最大缺点是可靠性差 —— 中央服务器成为整个 P2P 网络的【单点故障】。

第 2 代:消息洪泛

典型代表是 Gnutella 的早期版本。分散定位和分散传输。

采用【广播】的模式 —— 要找文件的时候,每个节点使用有限范围的洪泛法向自己相连的【所有节点】进行询问;被询问的节点如果不知道这个文件在哪里,就再次进行“广播”…如此往复,直至找到所需文件。

这种技术的最大缺点是 —— 会引发“广播风暴”并严重占用网络带宽,也会严重消耗节点的系统资源。即使在协议层面通过设置 TTL(time to live),限制查询过程只递归 N 轮,依然【无法】彻底解决此弊端。

第 3 代:分布式哈希表 DHT

分布式哈希表 DHT (distributed hash table),不但避免了第一代技术的【单点故障】,也避免了第二代技术的【广播风暴】。

3.1 DHT 的主要思想

3.2 Chord 协议

第一批 DHT 协议有 Chord、CAN、Tapestry、Pastry。其中 Chord 的原理比较简单。

1)拓扑结构——环形

Chord 的拓扑结构是一致性哈希,一致性哈希是 DHT 的一种实现,避免在节点变化的时候出现的全部重新哈希的现象。

【todo】