P2P对等网络 – 基本原理

公司项目需要使用P2P技术做一个聊天功能,在网上找了下相关资料。在此做个记录。

参考内容:P2P技术原理点对点技术

基本概念

P2P(Peer to Peer)技术又称为对等互联网络技术,依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上。P2P是一种网络架构,属于覆盖层(Overlay Network)的范畴,是相对于 客户端/服务器(c/s)模式来说的一种网络信息交换方式。

在传统的C/S模式中,数据的分发使用专门的服务器,多个客户端都是从此服务器获取数据。这种模式的优点是数据的一致性容易控制,系统也容易管理。但是缺点也是非常明显,服务器的个数有限,系统容易出现单一失效点。单一服务器面对众多的客户端,由于CPU能力、内存大小以及网络带宽的限制可同时服务的客户端非常有限,可扩展性差。

P2P技术正是为了解决这些问题而提出的一种对等网络架构。在P2P网络中,每个节点既可从其他节点得到服务,也可以向其他节点提供服务。所有的客户端都能狗提供资源,包括带宽、存储空间和计算能力。因此,当有节点加入并且对系统请求增多,整个系统容量也增大。这是传统具有一组固定服务器的C/S结构不能实现的。

基本结构

1、集中式对等网络(Napster、QQ)

集中式对等网络基于中央目录服务器,为网络中各节点提供目录查询服务,传输内容无需在经过中央服务器。这种网络结构比较简单,相对传统结构而言,中央服务器的负担大大降低。但是由于存在中央节点,容易形成传输瓶颈,扩展性也比较差,不适合大型网络。但这种目录集中管理模式,对于小型网络的管理和控制是一种可选的方案。

2、无结构分布式网络

无结构分布式网络和集中式网络的最显著的区别在于,它没有中央服务器,所有节点通过与相邻的节点通信,接入整个网络。

在无结构的网络中,节点采用一种查询包的机制来搜索需要的资源。具体的方式为,某个节点将包含查询包发送到与之相邻的节点,该查询包以扩散的方式在对等网络中蔓延,由于这样的方式如果不加节制,会造成信息泛滥,因此一般会设置一个适当生存时间(TTL),在查询的过程中递减,当TTL的值为0时,将不再继续发送。

无结构分布式网络组织方式比较松散,节点的加入与离开比较自用。当查询热门内容时,很容易就能找到,但如果需求的内容比较冷门,较小的TTL不容易找到,而较大的TTL值又容易引起较大的查询流量。

3、结构化分布式网络

结构式分布式网络,是近年来基于分布式哈希表(Distributed Hash Table)技术的研究成果。它的基本思想是将网络中所有的妓院整理成一张巨大的表,表内包含资源的关键字和所存方节点的地址,然后将这张表分割分别存储到网络中的每一个几点中去。当用户在网络中搜索相应的资源时,它将能发现存储与关键字对应的哈希表内容所存放的节点,在该节点中存储了包含所需资源的节点地址,然后发起搜索的节点根据这些地址信息与对应节点连接并传输资源。这是一种技术上比较先进的对等网络,它具有高度结构化,高可扩展性,节点的加入和离开比较自由。这种方式适合比较大型的网络。

以下是3种比较流行的组织结构。

  • 分布式哈希表(DHT)结构
  • 树形结构
  • 网状结构

技术的应用

1、分布式科学计算

P2P技术可以使得众多终端的CPU资源联合起来,服务于一个共同的计算。这种计算一般是计算量巨大、数据极多、耗时很长的科学计算。在每次计算过程中,任务(包括逻辑与数据等)被划分成多个片,被分配到参与科学计算的P2P节点机器上。在不影响原有计算机使用的前提下,人们利用分散的CPU资源完成计算任务,并将结果返回给一个或多个服务器,将众多结果进行整合,以得到最终结果。

2、文件共享

BitTorrent是一种无结构的网络协议。除了BitTorrent之外,还有不少著名的无结构化P2P文件共享协议,典型的有Gnutella和KaZaA

3、流媒体直播

4、流媒体点播

5、IP层语音通信

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s