Atitit JAVA p2p设计与总结  JXTA 2

JXTA 2 是开放源代码 P2P 网络的第二个主要版本,它利用流行的、基于 Java 的参考实现作为构建基础。在设计方面进行了重要的修改,以获得更高的性能、海量伸缩性和可维护的 P2P 网络。本文建立在 Sing Li 于两年前发表的 JXTA 系列文章 Makng P2P interoperable的基础上,为您介绍了这个平台上最新的重要改变

JXTA具体来说是一种标准组件平台,它提供了用于开发分布式服务和应用程序的基本组件。整套技术由一组开放源码的P2P协议组成,这组协议使网络上任何连接着的计算设备的协作变为可能。基于协议而不是基于API(应用程序接口)意味着JXTA技术可以用任何语言在任何操作系统上运行。JXTA使可共同使用的P2P应用程序拥有了许多能力,其中包括:在能简单地穿过防火墙通讯的不同设备的用户间建立对等组,在网络上找对等体的能力——甚至穿过防火墙,简化文件共享,自动侦测到新的网站目录,对对等体的远程监控,访问深层网络的数据,以及提供安全的通讯。

作者::  ★(attilax)>>>   绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

一些常见的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 呵呵……下面开始做一个例子来熟悉一下吧:

二、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

Atitit JAVA p2p设计与总结  JXTA 2相关推荐

  1. java p2p 技术可行性分析_Atitit JAVA p2p设计与总结  JXTA 2

    AtititJAVAp2p设计与总结JXTA 2 JXTA 2 是开放源代码 P2P 网络的第二个主要版本,它利用流行的.基于 Java 的参考实现作为构建基础.在设计方面进行了重要的修改,以获得更高 ...

  2. Atitit.java c#这类编程语言的设计失败点attilax总结

    Atitit.java c#这类编程语言的设计失败点attilax总结 1. Npe1 2. Api粒度过小而又没有提供最常用模式1 3. checked exception(jeig n jyejy ...

  3. java开发checklist,Java API设计CheckList

    API设计原则:正确.好名.易用.易学.够快.够小.但我们从来不缺原则,〜〜〜 Interface 1.The Importance of Being Use Case Oriented,一个接口应当 ...

  4. Atitit java 二维码识别 图片识别

    Atitit java 二维码识别 图片识别 1.1. 解码1 1.2. 首先,我们先说一下二维码一共有40个尺寸.官方叫版本Version.1 1.3. 二维码的样例:2 1.4. 定位图案2 1. ...

  5. Atitit.java jna  调用c  c++ dll的原理与实践  总结  v2  q27

    Atitit.java jna  调用c  c++ dll的原理与实践  总结  v2  q27 1. Jna简单介绍1 2. Jna范例halo owrld1 3. Jna概念2 3.1. (1)需 ...

  6. Atitit.安全性方案规划设计4gm  v1 q928

    Atitit.安全性方案规划设计4gm  v1 q928 1. 安全架构设计与功能安全检测1 2. https1 3. 账号安全体系1 4. 配置文件安全 1 5. 源码加密与安全2 6. 最高强度的 ...

  7. Atitit.Java exe bat  作为windows系统服务程序运行

    Atitit.Java exe bat  作为windows系统服务程序运行 1. 使用SC命令+srvany.exe (不错,推荐)+net start1 1.1. First 创建一个java的运 ...

  8. atitit. java jsoup html table的读取解析 总结

    atitit. java jsoup html table的读取解析 总结 1. 两个大的parser ,,,jsoup 跟个   htmlparser 1 2. 资料比较 1 3. jsoup越佳. ...

  9. Atitit Java OpenCV 捕获视频

    Atitit Java  OpenCV 捕获视频 ,打开一段视频或默认的摄像头 有两种方法,一种是在定义类的时候,一种是用open()方法. 一. 读取视频序列 OpenCV提供了一个简便易用的框架以 ...

最新文章

  1. docker 容器访问宿主机的解决方式
  2. 写时复制,写时拷贝,写时分裂,Copy on write
  3. 从属关系mysql_关系型数据库基础概念:MySQL系列之开篇
  4. Win8 HTML5与JS编程学习笔记(二)
  5. 华纳传媒和Discovery合并交易将提前完成 华纳CEO将在交易之前辞职
  6. 关于三种主流WEB架构的思考
  7. 算法:两种对拼音进行智能切分的方法
  8. 使用VisualStudio读写NI FPGA板卡实例(基于FPGA Interface C API Generator)
  9. laravel 常用文档
  10. 页面打印插件 jquery.jqprint.js 插件使用实例
  11. 数据挖掘_task2数据探索分析
  12. java压缩文件耗时:30秒到1秒的优化过程
  13. 在排序中,如何不借助中间变量进行排序呢?()
  14. python 定时器_Python 定时器
  15. Android 使用ADB命令启动浏览器并访问指定的URL
  16. CCF第六届太湖论坛——超级计算机并行应用大会举办
  17. Android开发使用jsoup实现网页内容抓取和修改网页内容
  18. 一名软件测试工程师的一天24小时,主要工作内容详细流程...
  19. 基于python的股票程序化交易软件_tushare开源股票交易接口基于python实现技术
  20. Friend or Foe?

热门文章

  1. 延迟环境变量扩展(bat)
  2. python中*的用法
  3. 19.Linux_Jni多线程操作
  4. 《Redis 系列》- list命令
  5. 《Cacti实战》——导读
  6. 如何实现手机自动适应网页
  7. LVS学习笔记及总结(思维导图版)
  8. 在不同域中各个系统拥有自已独立的用户系统时的单点登录问题
  9. java编写socket使用bufferedReader.readLine()问题研究
  10. vue transition动画