什么是P2P?很难有一个切当的阐明,也许是因为有着差别的看点或理解。
BW(JXTA book的做者)给出如许一个定义:P2P使得任何收集设备能够为其他收集设备供给办事(Peer-to-peer technology enable any network-aware device to provide services to another network-aware device)。
我小我的理解是P2P收集是:一个收集中的所有节点(设备)的角色、行为、责任和义务都是公允的(对等的)。
看一下我们现今的收集构造:
大大都情状下,我们利用一种称之为客户机/办事器(Client/Server,简称C/S)的收集形式。好比时髦的WWW,各类收集游戏等。
它们的配合特征是
都需要有一个中心办事器来处置绝大部门的运算工做。
客户端和办事段处在完全差别的角色中。客户端更被动,凡是是发送一个恳求。而办事端处在一个收配的地位,获取那个恳求,停止计算,然后返回一个成果来响应那个恳求。
即使如Email那种看上往比力差别的收集利用,也对Client和Server有着明显得分工。
那类收集利用模子有着一个明显的缺点就是:跟着办事的客户数目标增加,办事端所需要占用的资本也随之增加,显而易见最末造约了client的数目标增长。
(那种集中式的模子似乎违犯了Internet的初志,the ARPANET)。
而且,我们需要许多隐躲在Internet深处的办事的撑持才气获取我们需要的办事,如DNS,如路由。
那也就是为什么即使每台机器都开设一个web server,也无法被全数被拜候到。(因为IP地址的限造,不成能每台机器都有一个静态的IP。或是因为内部收集的原因,也许即使你有一个静态稳定的内部地址,也可能没有一个路由抵达你的机器或是拜候被防火墙过滤9)。
而且因为如今的Internet过火的依靠于DNS和网关,只要此中有一个办事出了"问题",响应的其他任何办事就都无法获得。
"Edge of Internet":
另一个有趣的现象是:因为适才所说的DNS和路由的限造,可能有数以亿计的连在Internet上的计算机无法被其他机器拜候。
那些计算机构成了所谓的"Edge of Internet"。(它们属于Internet的一部门,却不被整个Internet承认,就像处在社会边沿一般充满着矛盾和孤寂)。我们来做个计算:
假设同时只要1万万台100MHz的计算机毗连在收集上(事实上远不但那些),每台能够供给100兆的空余空间、1000bps的空余带宽和10%的空余CPU时间。
因而那些机器总共供给了10PB(10^15bytes)的存储空间,100亿bps的带宽(大约是1。25GBps)和10万MHz的计算才能!那是多么可看的数字,假设都能加以操纵,或是只是开发此中的一部门……。
Google的费事:
我们凡是利用的Google就是一个闻名的集中式收集办事的例子。
Google中检索的信息依靠着一个浩荡的数据库(大于1。6 billion,即使如斯Google所保留的数据也只占整个Internet的很小一部门,几个数量级的区别)。那个数据库必需天天更新,以包管信息的立即性,即使如斯Google便当一遍整个Internet也需要十几天的时间。
若何能更好的供给搜索办事是良多现今的搜索引擎始末没有办法处理的问题。除此之外,Google还有良多费事:
Google的办事是成立在一个浩荡数目标Linux集群上的(超越10000台)。庇护那么浩荡的一群主机就够受的了。
一旦Google发作了毛病,所有的办事就都玩完了。
不要说Google发作毛病,假设DNS,路由等除了或者或那的问题……。
因为Internet中数据的数量浩荡且品种多样。Google不只无法供给一个切确的索引,也无法供给一个完全的索引。
Google只能看到"静态"的数据,它无法拜候四处在数据库里的数据。
P2P的许诺(宣言)
供给一个实正的完全公允,自在的互联网。
利用很少的资本消耗而供给高可靠性的办事。
那似乎十分笼统,事实上连我本身也不太清晰我在说些什么。举个例子先:
音乐喜好者kert想在Internet上找一首歌,"Sex Pistol"的"My way"。
凡是他利用Google来搜索相关的关键字"Sex Pistol" +"My way"。因为只是简单的依靠关键字婚配的体例,Google凡是会返回几百或是几千条婚配的笔录,当然包罗不相关的那些(绝大大都,出格是当你的关键字中呈现诸如Sex之类的词汇)。
做为一个音乐喜好者,kert凡是会耐着性质在那几千条笔录中认真觅觅(头晕),有时找到一个可能性极大的链接却因为链接失效而悲伤。想象一下,Google已经是世界上更好的搜索引擎之一了。
假设换成一个P2P收集利用又会若何?P2P收集会将kert的搜索恳求发送给每一个毗连在收集上的节点(peer),每个节点会在本身所治理的资本中查找能否含有婚配的对象,然后对kert的恳求做出答复。
和那种集中式的搜索办事比拟,将响应交给每一个节点的益处是显而易见的:
因为响应由节点立即完成,而不是像集中式的办事那样将在可能已颠末期的数据中逃求谜底。那种体例更准确,不会呈现让人沮丧的过时毗连。别的因为是由节点自在处置恳求,而非传统的在静态网页中觅觅谜底,切确水平更高。
恳求散布到了Internet的每个角落,信息更完全,当然得到成果的可能性就越大。
恳求散布到了Internet的每个角落,不需要大量的主机群,不会有收集阻塞。
kert很必定那个世界上有与他喜好不异的fans,因而他自信心十足:)。
适才我们提到,一个恳求会发送至P2P收集中的每个节点。
那似乎很难以想象,但是事实上(至少在理论上)那是P2P收集的特征之一。因而在P2P收集中,你所享受的办事的是一个由成千上万台计算机构成的cluster供给的。多么神异而令人兴奋!
即使是最根本的"路由"办事,也是有所有节点配合供给的。因而不在会有因为某个结点的毛病或是报酬原因而形成的无法链接的现象了。
你面临的是一个友善、自在、公允的群体。而非强权(路由)和专造(DNS)。