共计 2492 个字符,预计需要花费 7 分钟才能阅读完成。
1、P2P 的定义
P2P 是 peer-to-peer 的简称,又称为点对点技术,是没有核心服务器、依附用户群节点进行信息替换的对等式网络。区别于传统的 C / S 地方服务器构造,P2P 网络中每一个用户节点即是客户端又是服务端,能同时作为服务器给其余节点提供服务。
无核心服务器的对等式网络,如下图:
有核心服务器的地方网络系统,如下图:
目前包含比特币、以太坊等在内的去中心化的区块链平台,其底层网络都是采纳的 P2P 技术实现,每个节点都是对等的。
2、P2P 的特点
在传统的 C / S 模式网络系统中,客户端之间的交互须要依赖中心化的服务器进行。当网络规模变得宏大时,这些核心服务器的累赘就会越来越重,很容易成为网络瓶颈。而且一旦服务器解体,就会造成整个网络瘫痪(单点故障的危险)。
而 P2P 网络因为没有核心服务器,不存在单点性能上的瓶颈,每个节点在充当客户端的同时,也能够作为服务端给其余相邻节点提供服务,极大地提高了资源的利用率。
总结来说,P2P 网络的特点如下:
(1) 可扩展性。 在 P2P 网络中,用户能够随时退出、来到网络。而且随着用户节点的退出,零碎整体的服务能力也在相应的进步。例如 p2p 下载中,退出的用户越多,则 P2P 网络中提供的资源就越多,下载速度就越来越快。
(2) 健壮性。 因为 P2P 不存在中心化服务器,天生就具备耐攻打和高容错的特点。即便网络中某个节点被攻打或下线,也不影响整个零碎的失常运行。因为 P2P 网络中每个节点都能够充当服务端的角色。
(3) 高性价比。 采纳 P2P 构造的网络,能够无效地利用互联网中大量扩散的普通用户节点。充分利用这些一般节点中闲散的 CPU、带宽、存储资源,从而达到高性能计算和海量存储的目标。例如:迅雷旗下的星域 CDN 产品,就是充分利用每一个普通用户机器的闲散网络资源,从而提供一个高性价比的服务。相似的还有 360 共享云、国外的 sia 网盘等。
(4) 隐衷爱护。 在 P2P 网络中,因为信息的传输扩散在各个节点之间,而无需通过核心服务器。这样就缩小用户隐衷信息被窃听和泄露的危险。
(5) 负载平衡。 因为 P2P 网络中,资源扩散存储在多个节点上,而每个节点又都能够充当服务器的角色。当某个节点须要获取资源时,只须要向相邻节点发送申请即可,很好地实现了整个网络的负载平衡
3、P2P 的次要性能
P2P 网络的次要性能能够分为如下 3 种:
- 数据公布和传输
- 数据存储和检索
- 分布式数据处理
(1)数据公布和传输有 3 中形式,别离是一对一(如即时通讯)、一对多(如群组通信和音讯播送)和多对多(如内容散发利用:BT、PPS 等)
(2)数据存储和检索分为基于结构化的 P2P 网络办法和基于非结构化的 P2P 网络办法。结构化的 P2P 网络也就是基于分布式哈希表(DHT)的 P2P 网络,这个也是目前利用最宽泛的,它的网络拓扑构造是确定的。而非结构化的 P2P 网络的资源存储通常与网络拓扑构造无关,例如 Gnutella。
(3)目前,大多数分布式数据处理技术采纳的是 master/slave 的架构。而基于 P2P 网络,也可能进行分布式的数据处理。
4、P2P 的倒退历史
P2P 技术的倒退能够分为如下三个阶段:
第一阶段:集中式对等网络
这种网络采纳的是中心化的拓扑构造,因为文件的索引信息都是存储在地方服务器上,每个子节点都须要连贯地方服务器才能够找到资源。它最大的长处是保护简略、索引速度快。然而因为整个网络重大依赖于地方服务器,容易造成性能瓶颈和单点故障的问题。
典型代表是:napster
第二阶段:非结构化的分布式网络
这种网络采纳 Flooding 搜索算法,每次搜寻都把要查问的音讯播送给网络上的所有节点。当一个节点要下载某个文件的时候,这个节点会以文件名或者关键字生成一个查问,并把查问发送给所有跟他相连的节点。如果这些节点存在文件,则跟这个节点建设连贯,如果不存在,则持续向相邻的节点转发这个查问,直到找到文件地位,过程如下图所示。
能够发现,当网络规模变大当前,这种搜寻形式会引发”播送风暴”,重大耗费网络带宽和节点的系统资源。尽管防止了集中式对等网络的“单点故障”问题,然而效率却很低下。
典型代表:Gnutella 晚期版本。
第三阶段:结构化的分布式网络
目前采纳最宽泛的就是结构化的分布式网络,也就是基于 DHT(分布式哈希表)的网络。DHT 为了达到 Napster 的效率和正确性,以及 Gnutella 的分散性,应用了较为结构化的基于键值对的路由办法(如下图所示):
目前实现了 DHT 协定的有 Kademlia 和 Chord 算法,其中 Kad 算法因为简略易用而被宽泛应用,其中比特币和以太坊网络中的 P2P 网络采纳的就是 Kad 算法。
5、P2P 的利用
(1)文件内容共享和下载
利用 P2P 技术能够使计算机之间不通过服务器间接进行内容共享和数据散发,使得互联网上任意两台机器间共享数据成为可能。例如 Napster、Gnutella、eDonkey、eMule、Maze、BT,以及当初 PPS、腾讯视频客户端等采纳的 P2P 流媒体技术,使得播放速度更加晦涩。
(2)计算能力和存储共享
基于 P2P 网络的分布式构造结构出分布式的存储系统实现存储共享,提供高效率、高性价比、负载平衡的文件存取性能,例如国外的 Sia、Storj 等分布式云存储平台,不依赖第三方的大型集中存储空间,防止了数据泄露、保障了安全性。同时因为任何人的主机都能够提供存储服务,升高了门槛,大幅升高了存储的老本。如下,采纳分布式存储的 Storj 价格是每个月 $0.015 而亚马逊提供的 AWS 价格是 $0.023。
同时也能够共享 CPU 解决能力。例如 360 的共享云打算和星域 CDN 等,充分利用每个人机器的闲散计算资源来提供计算服务。
(3)基于 P2P 的即时通讯
例如目前的 Skype 通话软件就是从连贯建设和数据传输都采纳 P2P 实现,保障了良好的通话质量。
(4)基于 P2P 形式的协同解决与服务共享平台
常见的协同解决有视频会议、共享白板、协同合作等,而基于 P2P 技术的同样也能够实现上述性能,不同的是,这种实现形式不须要核心服务器,参加协同工作的计算机之间能够间接建设点对点的连贯。例如被微软收买的 Groove 协同软件平台。