区块链:P2P技术是什么

区块链:P2P技术是什么摘要:包括比特币、以太坊等在内的去中心化的区块链平台,其底层网络都是采用的P2P技术实现,每个节点都是对等的。而本文,则先通过介绍P2P技术的特点和发展历史,让大家对P2P这个技术的来龙去脉有一个初步的认识和了解。然后在下一篇文章中,我会详细介绍第三代P2P技术(DHT)—Kademlia算法的实现原理。1.p2p的定义P2P是peer-to-peer的简称,又称为点对点技…

大家好,又见面了,我是你们的朋友全栈君。

摘要:包括比特币、以太坊等在内的去中心化的区块链平台,其底层网络都是采用的P2P技术实现,每个节点都是对等的。而本文,则先通过介绍P2P技术的特点和发展历史,让大家对P2P这个技术的来龙去脉有一个初步的认识和了解。然后在下一篇文章中,我会详细介绍第三代P2P技术(DHT)—Kademlia算法的实现原理。

1.p2p的定义


        P2P是peer-to-peer的简称,又称为点对点技术,是没有中心服务器、依靠用户群节点进行信息交换的对等式网络。区别于传统的C/S中央服务器结构,P2P网络中每一个用户节点即是客户端又是服务端,能同时作为服务器给其他节点提供服务。

区块链: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技术的发展可以分为如下三个阶段:

(1)第一阶段:集中式对等网络

        这种网络采用的是中心化的拓扑结构,由于文件的索引信息都是存储在中央服务器上,每个子节点都需要连接中央服务器才可以找到资源。它最大的优点是维护简单、索引速度快。但是由于整个网络严重依赖于中央服务器,容易造成性能瓶颈和单点故障的问题。

典型代表是:napster。

区块链:P2P技术是什么

(2)第二阶段:非结构化的分布式网络

        这种网络采用Flooding搜索算法,每次搜索都把要查询的消息广播给网络上的所有节点。当一个节点要下载某个文件的时候,这个节点会以文件名或者关键字生成一个查询,并把查询发送给所有跟他相连的节点。如果这些节点存在文件,则跟这个节点建立连接,如果不存在,则继续向相邻的节点转发这个查询,直到找到文件位置,过程如下图所示。

        可以发现,当网络规模变大以后,这种搜索方式会引发”广播风暴”,严重消耗网络带宽和节点的系统资源。虽然避免了集中式对等网络的“单点故障”问题,但是效率却很低下。

        典型代表:Gnutella早期版本。

区块链:P2P技术是什么

(3)第三阶段:结构化的分布式网络

        目前采用最广泛的就是结构化的分布式网络,也就是基于DHT(分布式哈希表)的网络。DHT为了达到Napster的效率和正确性,以及Gnutella的分散性,使用了较为结构化的基于键值对的路由方法(如下图所示)。

区块链:P2P技术是什么

        目前实现了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。

区块链:P2P技术是什么

        同时也可以共享CPU处理能力。例如360的共享云计划和星域CDN等,充分利用每个人机器的闲散计算资源来提供计算服务。

区块链:P2P技术是什么

(3)基于P2P的即时通讯。

        例如目前的Skype通话软件就是从连接建立和数据传输都采用P2P实现,保证了良好的通话质量。

(4)基于P2P方式的协同处理与服务共享平台。

        常见的协同处理有视频会议、共享白板、协同协作等,而基于P2P技术的同样也可以实现上述功能,不同的是,这种实现方式不需要中心服务器,参与协同工作的计算机之间可以直接建立点对点的连接。例如被微软收购的Groove协同软件平台。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150726.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 5个常用的MySQL数据库管理工具_SQL工具

    5个常用的MySQL数据库管理工具_SQL工具原文:http://www.techxue.com/techxue-11898-1.html如今,Web应用程序的响应速度是成功的关键法宝之一。它与用户互动,用户对网站的看法,甚至谷歌网站排名情况都有着密不可分的关系。数据库性能是响应速度最重要的因素之一,一旦出错,所有程序都将会宕机。工欲善其事,必先利其器。几乎每一个Web开发人员都有一个最钟爱的MySQL管理工具,它帮助开发人员在许

    2022年8月22日
  • MATLAB GUI界面编程——一些细节问题「建议收藏」

    MATLAB GUI界面编程——一些细节问题「建议收藏」写在前面的话:本篇博文主要对自己在进行MATLABGUI设计时遇到的一些细节问题进行总结,点击下面目录中的相关问题,可以直接跳转至相应位置。另外,需要声明的是,我所使用的MATLAB版本——MATLAB R2017a。目录一、使用MATLAB的GUIDE开发环境,来快速创建GUI界面二、修改MATLABGUI的.fig和.m文件名三、修改MATLABGUI界面的名字四…

    2022年6月14日
  • 来测测你是不是一个合格的前端工程师

    来测测你是不是一个合格的前端工程师

    2021年9月10日
  • 数据库的设计原则有哪些_数据库三原则

    数据库的设计原则有哪些_数据库三原则数据库设计是程序开发的核心部分,标准的数据库设计原则和步骤能有效提高开发进度和效率。数据库设计(DatabaseDesign)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。  在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。一、数据库和信息系统  (1)数据库是信息系统的核

    2022年11月3日
  • Java Random() 函数的使用方法

    Java Random() 函数的使用方法importjava.util.Random;publicclassGraphics{publicstaticvoidmain(String[]args){ Randomr=newRandom();//(方法一)先生成一个对象r, intb=r.nextInt(10);//调用r对象下面的nextInt,生成0~10之间的随机数,将结果传给b …

    2022年6月12日
  • Java串口编程:串口数据的发送与监听读取「建议收藏」

    Java串口编程:串口数据的发送与监听读取「建议收藏」  本人在近期的开发工作中遇到向串口发送设备控制指令的需求,遂对串口编程进行了略微深入的钻研,在此对自己的一些心得和经验进行总结,以供大家参考与交流。串口介绍  串口全称为串行接口,一般指COM接口,是采用串行通信方式的扩展接口。其特点是数据位的传送按位顺序进行,最少只需一根传输线即可完成,成本低但传送速度慢。由于串口(COM)不支持热插拔及传输速率较低,目前部分新主板和大部分便携电脑…

    2022年11月3日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号