AtititJAVAp2p设计与总结JXTA 2html
JXTA 2 是开放源代码 P2P 网络的第二个主要版本,它利用流行的、基于 Java 的参考实现做为构建基础。在设计方面进行了重要的修改,以得到更高的性能、海量伸缩性和可维护的 P2P 网络。本文创建在 Sing Li 于两年前发表的 JXTA 系列文章Makng P2P interoperable的基础上,为您介绍了这个平台上最新的重要改变java
JXTA具体来讲是一种标准组件平台,它提供了用于开发分布式服务和应用程序的基本组件。整套技术由一组开放源码的P2P协议组成,这组协议使网络上任何链接着的计算设备的协做变为可能。基于协议而不是基于API(应用程序接口)意味着JXTA技术能够用任何语言在任何操做系统上运行。JXTA使可共同使用的P2P应用程序拥有了许多能力,其中包括:在能简单地穿过防火墙通信的不一样设备的用户间创建对等组,在网络上找对等体的能力——甚至穿过防火墙,简化文件共享,自动侦测到新的网站目录,对对等体的远程监控,访问深层网络的数据,以及提供安全的通信。web
做者:: ★(attilax)>>>绰号:老哇的爪子(全名::Attilax Akbar Al Rapanui阿提拉克斯阿克巴阿尔拉帕努伊)汉字名:艾龙,EMAIL:1466519819@qq.com编程
转载请注明来源:http://blog.csdn.net/attilaxwindows
一些常见的P2P应用程序:聊天程序,游戏(尤为网络游戏),文件共享,协同工做和白板。缓存
固然,P2P网络也应具有的下列特色:安全
① 互操做性:P2P系统很容易的找到并链接对方,彼此进行交流。服务器
② 平台无关性:P2P系统应该设计成独立于编程语言如C,Java等,独立于系统平台如Windows和Unix,独立于网络平台如TCP/IP和BLUETOOTH。网络
③ 普遍性:P2P系统能够运行在任何有数字处理功能的设备上。编程语言
JXTA是什么
首先,JXTA是为了构建P2P网络而制订的一组协议,是解决构建P2P网络必需要解决的问题的方法。共有六个协议(关于这些协议后面会详细的谈的)。
其次,JXTA是P2P应用程序开发的运行平台。目前,JXTA首先推出了基于Java的参考实现的。
它三层组成:如图1-1所示:
图1-1 JXTA的层次结构
第一层是JXTA核心层,它包含了服务所必须要的核心功能,包括Peer、对等组、Peer发现、Peer通讯、Peer监视和相关的安全原语;第二层是服务层,它提供了访问JXTA协议的接口,包括对于P2P网络不是必需的,但很通用的功能,如查找、共享、索引、代码缓存和内容缓存的机制;第三层是应用层,它使用服务来访问JXTA网络和JXTA提供的功能,包括了应用JXTA服务开发出来得完整的P2P应用程序,如myJXTA,JXTA-CAD等应用程序。
下面简略的介绍一下JXTA的一些概念吧:
3.JXTA的一些概念
Peer(对等机):一个虚拟的通讯点。一个用户能够有多个Peer,一台计算机或设备上一样能够有多个Peer。
Peer Group(对等组):一种组织Peer而且发布组内的特定服务的方式。可被建立、加入、退出;在一个组里能够更新一个组成员的关系。
Pipe(管道):Peer之间的虚拟通道,能够透过防火墙的障碍进行通讯。从而使得Peer在大多数网络状况下均可以通讯。
Advertisement(广告):一个XML文档,用来描述JXTA的消息、Peer、对等组或者服务等。它必须遵照编码、标签和内容的标准,用来交换JXTA网络上能够得到的任何信息。大多数JXTA的广告编码是使用UTF-8。
Message(消息):有两种方式来处理消息:①使用XML格式;②使用二进制格式。
Rendezvous Peer(集合点):一个可以处理来自其余Peer请求的Peer。也能够将请求委托给其余集合点。
Router Peer(路由Peer):一个支持Peer端点协议的Peer。
Gateway Peer(网关Peer):一个做为通讯中继的Peer。与Rendezvous Peer不一样的是,它是用来在Peer间传递消息,而Rendezvous Peer是用来传递请求的。
好了说了这么多的东西,连我都有点晕了。J呵呵……下面开始作一个例子来熟悉一下吧:
2、P2P通讯的关键技术分析
1.P2P通讯模型
在P2P网络中,任意两个端点之间可实现直接通讯。在基于C/S的网络中,客户端能够经过向服务器注册来实现彼此之间的定位(得到IP和端口)。对于P2P网络中,是如何实现彼此之间的定位和通讯,下面作一阐述。2.得到网络中能够通讯端点的IP和端口假设有一个端点A,欲和P2P网络中其余端点通讯,在通讯以前,端点A必须首先把本身的IP和端口通知P2P网络中的其余每个端点。其余每一个端点收到这个信息后,就得到了端点A的IP和端口,随后向端点A反馈本身的IP和端口信息,使端点A也得到P2P网络中每一个端点的IP和端口。这里有两个技术能够完成端点A向其余端点通知其IP和端口的工做,一是广播技术,二是多播技术。广播技术主要在局域网中使用,在局域网中的每个端点(主机)都不得不接受并处理一个广播数据包。所以为了不网络阻塞,路由器均限制广播数据包的经过。因此设计基于互联网的P2P程序不适合采用广播技术。多播技术是一种容许一个或多个发送者(多播源)发送单一的数据包到多个接收者(一次的,同时的)的网络技术。 多播源把数据包发送到特定多播组,而只有属于该多播组的地址才能接收到数据包。多播能够大大的节省网络带宽,提升了数据传送效率。减小了主干网出现拥塞的可能性。多播组中的端点(主机)能够是在同一个物理网络, 也能够来自不一样的物理网络(若是有多播路由器的支持)。所以,多播技术是咱们的选择。
注:广播同一客户端只能运行一个(端口占用),多播不会;
JXTA协议标准化了关于peers的几种行为:
1)互相发现
2)自组织peer组
3)广告以及发现资源(在JXTA网络中,资源包括了不少含义:peers,管道,groups等)
4)相互通讯
5)检测对方
利用JXTA,能够容易实现如下几个方面的互操做p2p程序
1)相互发现peers,无论peers是在防火墙仍是NATs后
2)互相共享资源
3)查找内容
4)建立组(组是基于必定共同目的的集合)
5)远程操做peer
6)安全通讯
参考
弱弱的研究了下jxta - bailizi的专栏 - 博客频道 - CSDN.NET.html
JXTA 2_ 具备高性能、海量伸缩性的 P2P 网络.html
JXTA——JAVA P2P网络编程技术(入门篇) - 一朶婲 - 博客频道 - CSDN.NET.html
使用JXTA技术创建P2P网络 - 无名随意 - 博客频道 - CSDN.NET.html
(dtatil coede)使用JXTA技术创建P2P网络 - 无名随意 - 博客频道 - CSDN.NET.html