P2P软件使用和性能的比较

可以参考一下。

P2P系统发展简史

1999,文件共享系统Napster诞生了。Napster是最早的P2P实用系统,大量个人计算机用户参与该系统。每个用户提供他想要欣赏的文件,同时可以下载其他用户欣赏的文件。Napster需要解决的核心问题是知道哪些机器有哪些文件,以便用户在提出文件搜索请求时得到正确的匹配结果。

在Napster中,一个称为目录服务器的中央服务器用于存储所有文件的元数据信息(文件标题和一些简单的描述信息)及其存储节点的IP地址。当节点加入系统时,它必须首先连接到目录服务器并报告自己的地址和文件列表。当用户需要一个文件时,向目录服务器提交搜索请求,目录服务器返回所有符合搜索要求的文件的存储地址,然后用户根据对应的地址直接从享有该文件的节点下载文件。由于目录服务器只提供索引服务,不承担文件存储和下载服务,所以支持上万个节点同时在线。Napster发布后迅速走红,很快成为发展最快的网络应用系统。

事实上,Napster中并不是所有的节点都是对等的,目录服务器要承担比其他节点重得多的工作。从这个意义上说,Naspter并不是一个纯粹的点对点系统。由于Naspter中节点的高动态性(也就是说节点的加入和退出很频繁),目录服务器是不断更新的。此外,目录服务器还负责响应所有用户的查询请求。所以当系统比较大的时候,目录服务器还是会成为系统的瓶颈。此外,目录服务器的存在成为了系统的关键点,也成为了整个系统最脆弱的点。Naspter之后的P2P系统在这一点上进行了改进,系统基本采用非中心结构,大大提高了健壮性和可扩展性。

Napster早期取得巨大成功后,很快就遇到了版权问题。因为Napster上的很多文件都是音乐媒体文件,这些音乐媒体未经授权是不允许被广泛传播的。Napster的目录服务器恰好为这些文件的传播提供了支持,因此Napster很快受到音乐作者保护版权的挑战,并于2001被迫关闭。

Napster首次验证了P2P思想在广域网中的可行性。Napster关闭后,更多的P2P文件共享系统迅速崛起,成为互联网发展的巨大浪潮,其中以Gnutella和KaZaA最为著名。

从Gnutella到KaZaA

Gnutella彻底改变了Naspter的架构。它不使用中心目录服务器,而是采用完全对等的结构:每个节点记录其他几个节点的IP地址(称为“指针”),这样整个系统的拓扑就变成了由指针构建的有向图,通常称为“覆盖图”。由于Gnutella的覆盖网并没有规定哪些节点必须用指针连接,所以整个覆盖网并没有一个有序的结构(如环形、立方体、层次结构、树形结构、有向无环图等。),也就是所谓的“非结构化叠加”。

当用户需要搜索文件时,会在覆盖网上进行广度优先或深度优先搜索,搜索到一定范围后,将符合搜索条件的结果返回给用户。因为这种搜索无法覆盖整个覆盖网络,所以存在无法完全搜索到的问题。但这个问题并不严重,因为大多数时候人们总是会搜索一些热门的文件,而这些文件往往在整个系统中有很多副本。只要搜索范围不是很小,总能找到其中的一个或多个。当然,如何在非结构化覆盖网络中搜索冷门文件也是P2P研究的热点问题,近年来也取得了一些进展。

事实上,这种牺牲搜索完备性的做法带来了很高的可扩展性:系统不再有一个中心节点作为瓶颈,规模可以扩展到几百万甚至上千万个节点。而且,由于没有易受攻击的关键节点,系统的鲁棒性也得到了提高。

KaZaA进一步改进了Gnutella。由于系统中的大多数节点是高度动态的,覆盖网络中节点的指针必须频繁更新,以移除那些已经离开系统的节点并添加新的在线节点。人们从Napster和Gnutella的实践经验中知道,P2P文件共享系统中节点的能力差别很大。有些节点很强很稳定,每次上线后都可以长时间在线,而更多的节点很弱,加入系统后很短时间(很多只有几分钟)就离开了系统。这样,KaZaA利用系统中的强节点构成系统的主干,而弱节点则依附于相邻的强节点。也就是说,KaZaA将节点分为强节点和弱节点,强节点构建一个类似Gnutella的覆盖网络,而弱节点只连接一个或几个强节点,并将自己的元数据(即* * * *共享的文件列表)发送给强节点,文件搜索只在强节点上进行。这样KaZaA获得了比Gnutella更高的稳定性和搜索效率。目前KaZaA的同时在线用户稳定在300万以上,已经成为全球最大的分布式系统。

最近,P2P文件共享系统的版权问题逐渐得到解决。Napster关闭后被音乐软件制造商Roxio公司收购,Naspter network变成了合法的软件发行渠道。之后,Roxio公司因业绩看好更名为Napster,并于2005年6月5438+10月在纳斯达克上市。目前,Napster在全球拥有超过7000万注册用户。

P2P结构的应用与研究

另一方面,P2P文件共享系统的成功促使人们致力于开发P2P结构在更多方面的应用。最成功的是大型文件分发系统BitTorrent和基于覆盖网络的IP电话系统Skype。

传统的文件下载多采用FTP等协议,以C/S模式下载。这样,许多用户将需要同时下载一些热门文件。由于服务器上的带宽有限,很多用户的请求不会得到满足,整体上下载效率很低。BitTorrent试图充分利用下载用户之间的带宽进行数据传输,从而减轻服务器的负担,提高下载速度和系统可扩展性(同时下载的数量)。BitTorrent的基本策略是:每个用户从服务器上下载一部分数据,每个用户下载不同的部分,然后用户交换对方没有的数据,最终所有用户都可以得到所有的数据。BitTorrent推出后迅速走红。随着越来越多的人使用BitTorrent在互联网上下载数据,P2P系统很快成为网络流量占50%以上的首要互联网应用。

Skype作为一种基于覆盖网络的IP电话系统,提供了比通过互联网直接连接的IP电话更好的语音效果,因此广受用户欢迎。自2003年发布以来,其用户增长迅速。截至2005年2月,Skype注册用户已达21万,在线用户突破200万。Skype的系统结构和KaZaA基本相似。当用户之间需要进行语音通信时,Skype会找到一个目前带宽最大的覆盖网络,通过多跳转发的方式传输数据。通常情况下,在覆盖网络中找到的转发路径的质量要优于通话两点之间的直接路径,因此通话过程中语音更清晰流畅。由于Skype的出现和快速发展,越来越多的用户转向IP电话,这对传统的电信行业造成了一定的威胁。在未来,像Skype这样基于P2P的IP电话系统很可能在很大程度上取代传统的电话服务,成为人们日常沟通的基本方式之一。

随着P2P系统在工业界的迅速发展,研究界也及时跟进,开展了大规模的P2P系统研究工作。自2000年以来,有关P2P系统的重要研究成果不断出现在OSDI、SOSP、SIGCOMM、USENIX和HOTOS的顶级会议上。2001年,学术界召开了一个新的学术会议IPTPS,会议的主题是P2P系统。由于大会受到著名高校和研究机构的广泛关注,迅速成为P2P研究领域的一次峰会,发表了大量优秀论文,成为P2P研究的风向标。从2002年开始,伯克利、斯坦福等著名大学相继开设P2P相关的研究生课程,进一步推动P2P成为一个新的研究方向。

精神实质是“节点合作”

P2P系统的本质是“节点协作”。因此,只要一个系统中没有管理者,所有的任务都是通过节点之间的交换与合作来完成的,这个系统就可以认为是一个P2P系统。一般来说,现有的P2P系统可以分为两类:

第一类叫做“面向服务的P2P系统”。P2P服务系统以对等的方式组织广域网中的服务节点,为用户提供更强大、更可靠的服务(数据服务、计算服务、存储服务等)。).这类系统包括、万的分布式实验平台PlanetLab、Ivy等。

第二类叫做“面向物物交换的P2P系统”。P2P交换系统为互联网上的大量终端用户提供了一个交换资源的平台。用户可以在这个平台上交换资源,可以是文件、数据块、存储空间等等。这类系统包括KaZaA、BitTorrent、Pastiche等。

P2P服务系统和P2P交换系统都面临着许多传统分布式系统所没有的新问题:

节点的数量很大。

很多P2P系统已经达到百万节点同时在线的规模。如此大规模的一个直接后果就是无法使用全连通拓扑(即让每个节点记录当前所有其他节点)。这样,要让节点知道更多关于其他节点的信息,保证任意两个节点可以通信,这是一个难题。因此,P2P系统中的节点信息收集算法和覆盖路由协议成为P2P研究的一个重要方向。

节点是高度动态的。

对于用户来说,使用P2P系统的一个标准模式是“进入系统-搜索资源-获取资源-离开系统”,通常用不了多长时间。所以P2P系统的一个显著特点就是节点平均在线时间短。根据实验计算,Napster和Gnutella系统中节点的平均在线时间只有2个多小时。节点的高度动态性使得维护数据可用性非常困难。

节点是异构的。

互联网中的节点具有不同的硬件能力和访问模式。这导致参与P2P系统的节点在存储能力、计算能力和带宽能力上存在很大差异。如何利用这种异构性,充分利用所有节点的可用资源,提高系统各方面的性能,是P2P系统必须认真研究的问题。

节点分布广泛。

P2P系统的节点分布在世界各地。由于时区不同,系统的不同部分在不同的时间会很忙。这对负载平衡、任务迁移和复制策略提出了新的挑战。

网络是异步的。

传统的分布式系统部署在集群或局域网范围内,网络属于同步网络。

(同步网络),也就是说任意两个节点之间的通信延迟总是有上限的。然而,P2P系统部署在互联网的异步网络中。由于网络经常被阻塞、干扰和分裂,所以系统中任意两点之间的通信延迟没有一定的上限。网络的异步性给一些需要严格语义的应用带来了很大的困难。例如,复制算法不能保证异步网络中的严格线性化。那么如何保证互联网环境下各种操作的可靠性和一致性,就需要认真分析和研究了。

节点之间没有相互信任。

P2P节点来自不同的组织和用户,节点之间没有天然的信任,因此安全和隐私的工作非常重要。如何在与其他节点交换数据时保护自己的隐私,一直是P2P研究的重要方向。

节点是自私的。

很多理性的用户总是试图多利用别人的资源,少贡献自己的资源。实验表明,Gnutella中有25%的节点从不与他人共享数据,只从他人处下载数据。大量用户(约30%)低报其带宽,以降低其他用户下载其数据的意愿。如何鼓励用户贡献更多的资源,保证交换的公平性,也是很多研究者关注的热点。

系统全部暴露在公共网络中。

在传统的分布式系统中,只有负责与用户交换的门户节点可以直接从互联网访问,而P2P系统的几乎所有节点都可以直接从互联网访问,这使得P2P系统更容易受到攻击。尤其是对于一些允许节点随意加入的系统(比如大部分P2P文件共享系统),如何防止协同攻击变得更加重要。

正是P2P系统的这些新特点,使得P2P系统从外观上看与传统的分布式系统有很大的不同。这也是它能引起众多著名学者研究兴趣的原因之一。

P2P应用系统的应用现状

随着P2P技术的发展,人们尝试用P2P的方法来解决各种问题,越来越多的P2P应用系统被提出并在实践中得到测试,包括:

广域网分布式存储系统(P2P存储系统)。

分布式存储系统一直是分布式系统的重要领域,传统的分布式文件系统、分布式对象存储系统和局域网中的分布式数据库都有很好的研究基础。P2P技术出现后,人们试图将这些分布式存储系统扩展到更广的范围,提出了构建在广域网上的分布式文件系统、对象存储系统和数据库系统。

视频组播系统。

视频组播对带宽要求很高,传统的C/S结构的组播系统由于服务器出口带宽的限制,往往扩展性很差。在基于P2P结构的视频组播系统中,只有少数节点直接从服务器获取数据,更多的节点一方面从其他节点获取数据,另一方面向其他节点提供数据。整个系统的架构是树形结构或网状结构。这种对等视频组播系统充分利用了节点间的可用带宽,大大提高了系统的可扩展性。

大型文件分发系统。

与视频组播系统类似,大文件分发系统也是通过在节点间传输数据来减轻数据源的压力,其架构也是树形结构或网状结构。但由于文件分发系统对实时性要求不高,对可接受的最小带宽要求也不高,因此与视频数据相比,可以充分利用带宽,获得更高的可扩展性。

域名服务器(DNS)。

目前互联网上的DNS服务器之间的连接采用的是树形结构。在这种结构中,解析一些不常用的域名是低效的,因为在树结构中需要许多跳的查询和转发。尤其是解析出一个不正确的域名,或者负责解析的服务器暂时不可用,需要很长时间才能返回给用户,显示查询失败。此外,由于当前机制下标识文档的url与其存储位置直接相关,给文档的迁移带来了诸多不便。大量的工作致力于用P2P架构重建DNS系统,使其更加高效,剥离文档识别与存储位置的相关性,取得了良好的效果。

Web协作缓存(Web Cache)。

网站往往存在访问热点,影响网页的可用性和访问效率。如果通过P2P将网页缓存在多个节点中,就可以很好地解决这个问题。这种协作缓存方式可以在多个客户端和多个服务器之间进行,服务器及其客户端可以组织起来获得更好的分配策略。

覆盖路由。

虽然互联网可以提供任意两点之间的数据通路,但是由于路由器更新、配置错误、网络拥塞等原因,两点之间的通信质量往往很差,甚至完全断开。为了减少甚至避免这种情况,建议可以在许多需要通信的节点之间建立覆盖网络。当两点之间的直接通信不顺畅时,我们可以通过其他节点的转发,想办法实现更高效的通信。比如当节点A不能给节点B发送消息或者通信质量差的时候,可能会有另一个节点C,A和C之间,C和B之间的通信是顺畅的,良好的,这样A就可以给C发送消息,C再转发给B..

应用层组播。

IP层组播技术虽然提出了十年,但一直没有得到广泛应用,主要是需要改变路由器算法,所以很难得到广泛部署;而且IP组播需要记录组状态(组名和成员地址),使得协议非常复杂,不符合互联网设计中一直坚持的无状态IP层的基本原则。鉴于此,人们提出了不需要IP层支持的应用层组播,即在需要接收消息的节点之间不断转发消息,以保证消息最终能被组内所有成员接收到。很多应用层通过一个树形结构在节点之间组播多播,并且:(1)保证节点进出时树形结构能够快速修复;(2)优化这种树结构,以匹配更低的互联网结构,从而提高组播效率,降低组播通信对互联网链路的压力。

此外,还有一些尝试,建立P2P搜索引擎,使用P2P系统测量网络状况,通过P2P路由消除防火墙和网关之间的障碍,构建P2P游戏系统等。,这里就不详细介绍了。