点对点(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:概览
  现今最普遍的分布计算模型是客户/服务器模型。图一描绘的就是典型的客户/服务器架构。
     
  *****图一******* 
  在客户/服务器体系中,客户请求服务,服务器提供服务。在当今的Internet上,存在在大量的服务器--Web服务器,邮件服务器,FTP服务器等等。客户/服务器体系是中央化体系的一个例子,整个的网络都依靠中央的节点和命名的服务器来提供服务。如果没有服务器,网络将是毫无意义的;如果没有它们,Web浏览器如何工作?不论客户端或者浏览器的数目有多少,网络只能在服务器存在的前提下才有意义。
  和客户/服务器体系相似,P2P也是一个分布的计算模型,但是有一个很大的不同,P2P是一个非中央化的体系(如图2),在网络中并没有客户或者服务器的状态区分。网络中的每个实体都是同等的,有着同样的状态,这意味着一个实体可以请求一个服务(客户端的特性)或者提供一个服务(服务器的特性)。图2展示的是一个P2P网络。
  
  *****图2********* 
  虽然每个节点在网络中有着同等的状态,不过它们并不要求都有着同样的物理性能。一个P2P网络可以包含有不同性能的节点,由移动设备到大型机。对于一个移动设备来说,可能由于自身的限制,不能作为服务器,但从网络方面来说,并没有这个限制。
  两个网络模型都有着各自的优点和缺点。由图1的客户/服务器网络你可以看到,当网络增大时(即越来越多的客户加入),中央服务器的压力就越大。当加多一个客户,中央节点的性能就会弱化;而它的失效将会导致整个网络的瘫痪。
  对于P2P网络来说,情况就完全不一样了。由于网络中的每个实体(或者节点)都是积极的参与者
  ,每个节点都会为网络提供一些资源,例如存储空间或者CPU。当越来越多的节点加入网络时,网络的性能将会增长。因此,当网络增大时,它的性能也会增强。你将不会碰到客户/服务器体系中的扩展问题。
  P2P网络和客户/服务器模型还有一个很大的不同是:即使只有一个节点是活跃的,P2P网络也被认为是活跃的。只有在没有任何节点时,P2P网络才是不可用的。
  不过,金无足赤,虽然P2P网络有着这些的优点,但你也要付出一些代价的。首先,管理这样一个网络可能是一个噩梦,而在客户/服务器网络中,你只需要管理中央的节点。因此,无论在安全策略和备份策略方面,P2P网络都要复杂一些。第二,P2P协议比传统的客户/服务器协议需要更多的“交互”,例如当节点加入或者退出网络。这些方面都会对性能产生一些影响。
  Jxta的解决之道
  
  不同的协议,不同的体系,不同的实现,这就是当前P2P解决方案的精确描述。现今,开发者使用各种各样的方法论和途径来创建P2P应用。相对于客户/服务器模型丰富的标准,P2P领域的标准可以说是很少,为此,Sun开发了Jxta。
  以下是Jxta前景的一些陈述:
  Jxta工程是为了建立核心的网络计算技术,它提供一套简单、精简和便利的技术,可以在任何的平台、任何地点和任何时间支持P2P计算。该工程首先概述了P2P的功能,然后建立核心的技术,以弥补当前P2P计算方面的不足。它集中于创建基本的技术,并且将策略的选择权交给应用的开发者。
  Jxta致力于提供一个基本的P2P架构,这样其它的P2P应用可以建立在上面。这个基架包含有一套协议,这些协议与语言、平台和网络都是无关的(这就是它们对底层的网络没有作出任何的假定)。这些协议只规定了建立普遍P2P应用的必要之处。它的设计是精简的,开销很小,这些协议的目的可引用Jxta前景陈述中的一句话来说明:“要令每个设备都带有一个数字的心跳”。
  当前的Jxta定义了六种协议,不过并不要求所有的Jxta节点都实现全部六种协议。节点实现的协议数目和它的性能有关;一个节点可以只实现一种协议。根据需要,节点也可以扩展或者替换任何的协议。
  有一点要注意的是。Jxta协议自身并不提供交互性。对于这一点,你可以通过TCP/IP来理解这一点。虽然FTP和HTTP都建立在TCP/IP上,不过你不能使用FTP客户来访问网页。Jxta也是这样。两个建立在Jxta上的应用并不意味着它们是可以交互的。这一点应该由开发者开保证。不过,由于Jxta提供了一个可交互的基层,所以开发者在实现交互时可以少考虑一些东西。
  Jxta中的XML
  毫无疑问,要提供一个通用基本协议层,第一步就是要采用一种适合的表现方式,这种方式可以被当前的大部分平台明白。XML无疑是一个理想的选择,它已经成为数据交换的一个默认标准。XML提供通用的、语言和平台无关的数据表现。XML也可以很容易地转换为其它的编码。因此,用XML格式定义了所有的Jxta协议。
  虽然Jxta的信息使用XML定义,不过Jxta并不依靠XML来编码。实际上,Jxta实体并不需要一个XML解析器;它是一个可选的组件。可以将XML看成是Jxta使用的一种便利的数据表现形式。小的实体(例如移动电话)可以使用预编译的XML信息。
  Jxta的术语
  
  在更进一步讲述Jxta之前,让我们先来看一下它的各种术语。
  Peers(节点)
  网络上实现一种或者多种Jxta协议的任何实体。一个节点可以是任何的东西,例如大型机,小至一部移动电话,甚至是一个传感器。节点的存在是独立的,并且可以与其它节点异步通信。
  Peer groups(节点组)
  有者共同目的的节点可以集合起来形成节点组。节点组可以跨越多个物理网络域。
  Messages(信息)
  在Jxta的网络中,所有的通信是通过发送和接收信息来实现的。这些信息称为Jxta messages,它们符合标准的格式,是交互的前提。
  Pipes(管道)
  Pipes在Jxta的环境里建立起虚拟的通信管道。节点通过它们来发送和接收Jxta的信息。Pipes被认为是虚拟的,因为Pipes无需要知道使用它们的真正网络地址。这是一个重要的抽象。
  Services(服务)
  Peers和Peer groups都可以提供服务。如果一个服务由一个peer独立提供,那么就被称为是一个Peer服务,这是一个和中央化相等的概念。没有其它的Peer需要提供该服务;如果该Peer没有活动,那么服务将无效。
  Peer groups提供的服务被称为是peer group服务。与peer服务不同,这些服务并不依赖某个单独的peer,而是由整个组提供。Peer group服务的可用性更强,因为即使一个peer不可用,其它的peers还可以继续提供相同的服务。
  Codats
  Codat (Code/Data),在Jxta中,它意味着可以是代码或者数据的内容。如果有需要,Codats可以被发布和复制。
  Advertisements
  Advertisement可发布和揭露任何的Jxta资源,例如一个peer,一个peer组,一个管道或者codat。Advertisements以XML文档的方式来表现。
  Identifiers(标识符)
  在Jxta环境中,Identifiers扮演着重要的角色。Identifiers指定资源,而不是物理的网络地址。Jxta的Identifier被定义为一个URN(Uniform Resource Name,统一资源名)。一个URN就是一个URI(Uniform Resource Identifier,统一资源标识符),它必须是保持全局唯一的,即使是该资源不存在了,它仍然要保持不变。
  World peer group
  任何一个Jxta peer,在默认的情况下都是World peer group的一个成员。每一个电脑桌面主题下载Jxta peer都知道World peer group,并且可以加入该peer组,即使它在网络上找不到任何其它的peers。即使断开的peer也是其中的成员。
  Net peer group
  在一个本地网络中,网络管理员通常都可以设置一个peer组,该组可以让网络上的任何peer加入:这就是Net peer group。它类似一个DHCH(dynamic host configuration protocol,动态主机配置协议)服务。该Net peer group可为peer提供一个全局的连接,它的限制由管理者定义。
  Rendezvous peers(集合点)
  一个集合点是一个特别的节点,它通过缓冲节点的广播,可以存储其它节点的信息。因此,一个集合点可以帮助节点发现网络上的其它节点。集合点还可以将搜索的请求导向到其它的集合点。
  Endpoints(终点)
  终点表示网络上的一个目的地,它可以由一个网络地址来表示。Peers通常都不直接使用终点;而是通过管道来间接使用它们;管道都建立在终点上。
  Routers(路由器)
  在Jxta的网络上移动包的东西均被称为Jxta路由器。并不要求所有的peers都是路由器。不是路由器的pe

转载于:https://www.cnblogs.com/mfxp/p/3319294.html

【P2P的Jxta解决之道】相关推荐

  1. P2P的Jxta解决方案

    使用Sun公司的网络计算平台建立peer-to-peer应用程序开发基础平台 作者:Navaneeth Krishnan 译者: gracepig e-mail: zhangchi_nwpu@hotm ...

  2. 小程序一次性上传多个本地图片,上拉加载照片以及图片加载延迟解决之道

    一:小程序之一次性上传多个本地相片 最近由于项目需要所以学了下小程序,也做了一些东西,随后便有了以下的一些总结了,现在说说如何使用小程序一次性上传多个本地相片. 问题描述 最近做项目的时候要实现一个上 ...

  3. java中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**

    原文出处:http://cmsblogs.com/?p=1412 在上篇博文(java中文乱码解决之道(一)-–认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述 ...

  4. 企业互联网应用高性能解决之道

    本文介绍了企业互联网开发及运维的一些实践,深入剖析了互联网项目开发及上线过程中的各种痛点及解决之道. 一个互联网项目的上线并不是那么容易,需要经过很多的环节:从服务器的准备开始,紧接着是业务系统的搭建 ...

  5. Delphi Access violations 问题的解决之道

    Delphi Access violations 问题的解决之道 Windows用户可能经常会看到类似于错误提示:"Error:Access violation at address 836 ...

  6. [转]SQLObject加MySQL的 utf-8解决之道

    SQLObject加MySQL的 utf-8解决之道 软件技术 lhwork 发表于 2007-2-1 21:17:57 SQLObject对utf-8的支持一直为很多人所诟病,MySQL对utf-8 ...

  7. Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道

    Atitit.软件GUI按钮与仪表盘--db数据库区--导入mysql sql错误的解决之道 Keyword::截取文本文件后部分 查看提示max_allowed_packet限制 Target Se ...

  8. 创业失败的七个原因及解决之道

    摘要:Arkenea联合创始人Rahul Varshneya认为创业公司失败主要是因为:没有用户就开始算计收入.眼界太小.聘用了平庸的人.拖延发布.适应不了变化.没有优化资源和缺乏正确的营销等.创业不 ...

  9. 秒杀系统的架构解决之道

    http://www.infoq.com/cn/articles/solution-to-the-architecture-of-spike-system 本文将会从三个方面来分别探讨如何设计应用架构 ...

  10. 淘宝杨志丰:OceanBase--淘宝结构化大数据解决之道

     淘宝杨志丰:OceanBase--淘宝结构化大数据解决之道 时至今日,"Big data"(大数据)时代的来临已经毋庸置疑,尤其是在电信.金融等行业,几乎已经到了" ...

最新文章

  1. Java中事件监听机制
  2. 转发:为什么函数式编程至关重要
  3. 接口响应的Response Header打印不出全部值问题
  4. android百度地图 描点,百度地图批量描点写字
  5. 【转载】cuda编程入门
  6. 2022春节行为经济学
  7. node path html模块,深入理解node.js之path模块
  8. .NET环境下基于RBAC的访问控制
  9. unreal4怎么设置游戏模式_怎么使用虚幻4开发游戏?
  10. 关于Git这一篇就够了
  11. 深度学习调优深度学习模型
  12. python 绘制椭圆
  13. uboot源码阅读(二)什么是江湖,链接文件u-boot.lds
  14. 扁平化easyUI default皮肤
  15. Honeywell EPKS通用中文操作手册
  16. jsp中四个作用域的区别
  17. My feelings
  18. 【洛谷P2947】向右看齐
  19. usb扩展坞同时接键盘鼠标_一种带有扩展坞功能的一体式键鼠的制作方法
  20. 2020第一篇TED:Ideas worth spreading—— Debbie Millman: How symbols and brands shape our humanity?

热门文章

  1. 网页设计\网页制作常用软件大全
  2. 完成图书管理系统类图的绘制_中小学图书馆图书管理系统软件
  3. 30天自己制作操作系统中二进制编辑器BZ-1621
  4. 计算机数据结构考研知识点汇总,数据结构考研知识点总结.pdf
  5. Windows压力测试工具SuperBenchmarker
  6. Servlet+JSP实现简易购物车功能
  7. 立林门禁读卡器接线图_立林楼宇对讲维修方法—常见故障的解决方法
  8. 黑群晖教程:(二)黑群晖安装DSM6.1x(图文)
  9. ENVI5.3下载和安装
  10. 字符串转python对象