站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题P2P的Jxta解决之道

P2P的Jxta解决之道

摘要: 点对点(P2P)网络无疑是当前最热门的话题之一。在这个领域中,Sun推出了Jxta,一个用于P2P应用开发的网络计算平台

  摘要

  点对点(P2P)网络无疑是当前最热门的话题之一。在这个领域中,Sun推出了Jxta,一个用于P2P应用开发的网络计算平台。这篇文章介绍P2P和Jxta在这方面所作的努力。适合有意开发P2P应用的编程者阅读。

  今日的Internet正面临着一场革命。这场革命正在为改变Internet的一个基本的特性而努力。这就是网络的终端(或者说客户端),例如桌面电脑,移动电话,PDA等正要求一个更优越的网络地位,以结束以服务器为主导的Internet。这就是P2P。

  P2P是一个网络的模型,它的基本概念就是任何的节点都可以作为服务器或者客户端。传统的客户/服务器网络,都有预定义的客户和服务器节点,而P2P则不同,P2P可提供一些额外的特性,而这些特性使用传统的模型是无法实现的。

  在这篇文章中,我将为你介绍P2P网络,并且将它和客户/服务器网络作对比。我还会介绍Jxta(发音是jux-ta),Jxta是由Sun的首席科学家兼CEO Bill Joy提出来的;Jxta正在被成千上万的开放源代码开发者模型化。在P2P领域中,Jxta作出了巨大的改进。它定义了一套的协议,开发者可以使用这些协议来建立几乎所有的P2P应用。同时,这些协议也非常灵活,可以适合不同应用的特别需要。Jxta也不使用特定的编程语言或者环境,不过Java无疑是一个适合的选择,原因在于:便携性,容易开发和丰富的类库。

  P2P:概览

  现今最普遍的分布计算模型是客户/服务器模型。图一描绘的就是典型的客户/服务器架构。

<table align=center width=600> <tr> <td>
*************图一**************** </td></tr></table>

  在客户/服务器体系中,客户请求服务,服务器提供服务。在当今的Internet上,存在在大量的服务器--Web服务器,邮件服务器,FTP服务器等等。客户/服务器体系是中央化体系的一个例子,整个的网络都依靠中央的节点和命名的服务器来提供服务。如果没有服务器,网络将是毫无意义的;如果没有它们,Web浏览器如何工作?不论客户端或者浏览器的数目有多少,网络只能在服务器存在的前提下才有意义。

  和客户/服务器体系相似,P2P也是一个分布的计算模型,但是有一个很大的不同,P2P是一个非中央化的体系(如图2),在网络中并没有客户或者服务器的状态区分。网络中的每个实体都是同等的,有着同样的状态,这意味着一个实体可以请求一个服务(客户端的特性)或者提供一个服务(服务器的特性)。图2展示的是一个P2P网络。

<table align=center width=600> <tr> <td>
***********图2************** </td></tr></table>

  虽然每个节点在网络中有着同等的状态,不过它们并不要求都有着同样的物理性能。一个P2P网络可以包含有不同性能的节点,由移动设备到大型机。对于一个移动设备来说,可能由于自身的限制,不能作为服务器,但从网络方面来说,并没有这个限制。

  两个网络模型都有着各自的优点和缺点。由图1的客户/服务器网络你可以看到,当网络增大时(即越来越多的客户加入),中央服务器的压力就越大。当加多一个客户,中央节点的性能就会弱化;而它的失效将会导致整个网络的瘫痪。

  对于P2P网络来说,情况就完全不一样了。由于网络中的每个实体(或者节点)都是积极的参与者
,每个节点都会为网络提供一些资源,例如存储空间或者CPU。当越来越多的节点加入网络时,网络的性能将会增长。因此,当网络增大时,它的性能也会增强。你将不会碰到客户/服务器体系中的扩展问题。

  P2P网络和客户/服务器模型还有一个很大的不同是:即使只有一个节点是活跃的,P2P网络也被认为是活跃的。只有在没有任何节点时,P2P网络才是不可用的。

  不过,金无足赤,虽然P2P网络有着这些的优点,但你也要付出一些代价的。首先,管理这样一个网络可能是一个噩梦,而在客户/服务器网络中,你只需要管理中央的节点。因此,无论在安全策略和备份策略方面,P2P网络都要复杂一些。第二,P2P协议比传统的客户/服务器协议需要更多的“交互”,例如当节点加入或者退出网络。这些方面都会对性能产生一些影响。




↑返回目录
前一篇: EJB系列教程之一
后一篇: 对Java嵌套类的讨论