P2P (Peer-to-peer technology) 介绍
什么是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)
分享到:
相关推荐
P2P(Peer-to-Peer)技术,也称为对等网络技术,是一种网络架构模型,其中每个参与者既是服务的消费者也是服务的提供者。这种技术打破了传统的客户端-服务器(C/S)模式,使得网络中的每一个节点都可以直接与其他...
peer-to-peer (P2P) streaming technology uses PCI Express to enable direct, point-to-point transfers between multiple instruments without sending data through the host processor or memory.
**JXTA (Java eXtensible Peer-to-Peer Technology)** 是一种开源的P2P(Peer-to-Peer)框架,由Sun Microsystems开发,旨在提供一个标准的平台,用于构建分布式对等应用。JXTA允许不同的设备,无论大小,通过网络...
**JXTA(Java eXtensible Peer-to-Peer Technology Platform)**是Oracle公司推出的一种开放源码的P2P(Peer-to-Peer)网络框架,它为开发人员提供了一套构建分布式对等网络应用的工具和服务。在Java环境下,JXTA...
JXTA(Java eXtensible Peer-to-Peer Technology)是Oracle公司推出的一种开放源码的P2P(Peer-to-Peer)框架,它为开发者提供了构建P2P应用的基础架构。 **JXTA技术** JXTA是一个基于协议栈的平台,它定义了一...
JXTA(Java eXtensible Peer-to-Peer Technology Architecture)是Sun Microsystems推出的一个开放源代码项目,旨在为开发P2P应用程序提供一组标准协议和API。JXTA基于XML,支持多平台,允许开发者构建无需中心...
JXTA(Java XML Technology for peer-to-peer)是Sun Microsystems推出的一种开放源码的P2P平台,它使用XML和Java技术构建P2P应用。本资料包“p2p平台jxta学习资料”旨在帮助你深入理解和实践P2P编程,特别关注JXTA...
Wi-Fi TimeSync Technology Overview. The standards upon which Wi-Fi TimeSync is based include IEEE 802.11-2016 Timing Measurement protocol, IEEE 802.1AS-2011 ...to-Peer (P2P) Technical Specification.
JXTA(Java XML-based Peer-to-Peer Technology Architecture)是Oracle公司推出的一种P2P框架,它为开发者提供了丰富的API,用于构建基于P2P的复杂应用系统。本项目主要关注的是利用JXTA构建的局域网聊天、文件共享...
JXTA(Java XML-based Peer-to-Peer Technology)是Sun Microsystems推出的一种开放的、基于XML的P2P(Peer-to-Peer)网络协议。它允许对等节点之间进行通信,共享资源和服务,构建去中心化的分布式系统。而myjxta则...
JXTA(Java XML-based Peer-to-Peer Technology)是Oracle公司推出的一种基于XML的P2P(Peer-to-Peer,对等网络)技术,旨在提供一个开放、分散的网络平台,使得节点之间可以进行直接的信息交换和服务共享。...
JXTA(Java XML-based Peer-to-Peer Technology)是由Sun Microsystems开发的一种开放源代码平台,旨在提供一种基于XML的、跨平台的P2P(Peer-to-Peer)网络协议。P2P网络是一种分布式计算模型,其中每个参与者既是...
在Java平台上进行P2P(Peer-to-Peer)应用程序的开发是一项技术含量高且充满挑战的任务。P2P网络架构打破了传统的客户端-服务器模式,允许网络中的每个节点既是服务的提供者也是消费者,这种分布式特性使得P2P系统在...
JXTA(Java Extensible Peer-to-Peer Technology Platform)是由Sun Microsystems开发的一种开放源代码的P2P(peer-to-peer)平台技术。JXTA API是这个平台的核心,它为开发者提供了一组接口和类,使得构建分布式、...
XChat V1.0是一款创新的即时通讯软件,它利用了P2P(peer-to-peer)技术,通过JXTA(JavaXTM Peer-to-Peer Technology)框架进行实现。这种设计模式使得XChat在局域网环境中可以实现高效、可靠的通信,无需依赖中心...
这里的“Hello’s P2P”可能是指利用P2P(Peer-to-Peer)技术实现的一个类似于“Hello World”的简单程序,旨在通过这个简单的程序来探索计算机系统的工作原理。 #### 描述:“计算机系统大作业,程序人生-hello's ...