区块链: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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python进阶(6)深拷贝和浅拷贝[通俗易懂]

    python进阶(6)深拷贝和浅拷贝[通俗易懂]深拷贝和浅拷贝不管对于浅拷贝、还是深拷贝,针对不可变对象str、int、tuple(有点特殊)、boolean,它的内存地址是不变的,拷贝的仅仅是值importcopya=1b=co

    2022年7月28日
    3
  • linux——挖矿程序处理

    linux——挖矿程序处理记一次挖矿程序入侵以及解决实操!1,过程记录系统被挖矿程序入侵,导致系统CPU飙升。kill掉进程后自动重启。无论kill-9还是直接把系统中nanoWatch所对应的进程文件删除,一样会定时重启。使用crontab-e查看当前系统的定时任务信息,如下:显示定时从链接中下载文件,于是在浏览器中访问该地址,下载的文件截图如下:很明显,这是一个恶意脚本,定时检查…

    2022年6月16日
    66
  • 八、JDK1.8中HashMap扩容机制

    八、JDK1.8中HashMap扩容机制导读前面文章一、深入理解-Java集合初篇中我们对Java的集合体系进行一个简单的分析介绍,上两篇文章二、Jdk1.7和1.8中HashMap数据结构及源码分析、三、JDK1.7和1.8HashMap数据结构及源码分析-续中我们分别对JDK1.7和JDK1.8中HashMap的数据结构、主要声明变量、构造函数、HashMap的put操作方法做了深入的讲解和源码分析。四、深入理解Java中的HashMap「网易面试快答」文章中主要针对面试中常见的面试问题进行简单解答。五、深入理解JDK1.7中H

    2022年6月16日
    19
  • 微软modern.IE网站,多版本IE免费测试工具集建议收藏

    微软今天发布了modern.IE,这是一系列免费的、针对Web开发者的测试工具和资源集合网站,微软希望以此来帮助开发者更轻松地实现跨IE和其他现代浏览器、跨设备的兼容性,其他还有代码检测工具、标

    2021年12月21日
    42
  • 利用STM32F103精确控制步进电机「建议收藏」

    利用STM32F103精确控制步进电机「建议收藏」**利用STM32F103控制步进电机精确角度转动**欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,…

    2022年6月1日
    34
  • 分布式搜索elasticsearch 文献检索索引 入门

    分布式搜索elasticsearch 文献检索索引 入门

    2022年1月2日
    53

发表回复

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

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