专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »p2p技术 » 使P2P能进行交互操作 Jxta的故事 »正文

使P2P能进行交互操作 Jxta的故事

来源: 发布时间:星期三, 2008年12月17日 浏览:2次 评论:0
对等网络即将来临了它承诺要创建个根本区别计算世界 — 而且在某些方面 — 比基于老模式客户机/服务器要更好Jxta 工程是按社区方式运作旨在为对等应用构建实用应用底层虽然 Jxta 参考实现是用 Java 语言写但事实上它对当今现有任何语言操作系统(OS)或平台都会欣然接纳 — 而且更重要对于人们现在想都没想过技术它也做好了准备在本文即此系列部分(共 3 部分)中Java 开发人员兼作者 Sing Li 解释了支持 Jxta 基本概念和协议使您为阅读后面文章做好准备后面这些文章将教您试验 Jxta shell 并且构建 P2P 应用请在讨论论坛和作者和其他读者共享您有关本文心得体会
对等(P2P)网络和传统客户机/服务器或多层服务器网络区别对等网络中对等机是彼此直接通信这种通信无需依赖集中式服务器或资源就可完成在 P2P 网络中通过对等机的间交互操作就可以完成工作共享信息通过创建有潜力展示非常高可用性和容错能力计算资源网络P2P 体系结构使真正分布式计算成为可能

传统客户机/服务器和多层次体系结构已经是业界识途老马而采用 P2P 体系结构系统则还只是初生牛犊Jxta 工程是 Sun 为了向构建跨平台、跨操作系统(OS)和跨编程语言 P2P 应用提供实用应用底层而发动突袭这项工程现在是开放源代码Sun 也参和其中请参阅参考资料部分以获取有关 Jxta 社区信息

Jxta 设计理念
Jxta 工程组件是认真设计分工产物它们为泛型 P2P 网络提供最小需求去除了所有特定于策略逻辑和组件这样就仅剩下几乎所有应用都能使用构件要素不考虑目标用户和特定实现在接下来几个月和几年里Jxta 核心社区个主要任务就是确保这种普遍适用性仍然是真实您可以争辩说P2P 最引人注目应用尚未开发那么如果 Jxta 把特定于策略或实现细节嵌入其基础构造层后就完事那么这些尚未想像到应用就可能永远不会和这个平台起工作换句话说Jxta 组件没有强加些不必要策略也没有硬性规定特定应用操作模型使得简单地构造 P2P 应用成为可能也更方便

Jxta 工程对 Java 平台独立性
在我们讨论 Jxta 核心构件过程中您会发现我们没有提到任何和 Java 技术相关东西!Sun 已经为 Jxta 提供了初步 Java 语言实现但令人惊讶Jxta 工程既不特定于 Java 编程语言也不特定于 Java 平台换句话说任何人都可以在任何硬件平台上用任何操作系统、任何编程语言实现基于 Jxta 网络添加了这种 Jxta 传输不可知特性(您将看到它甚至不依赖于 TCP/IP)您就有了个准备着交互操作 P2P 基础构造

Jxta:名称中包含什么意义?
Jxta 不只是以字母 J 开头代表 Java 和 Jini 名称、由 4个首字母组成首字母缩写词事实上它代表 Juxtapose 工程 Juxtapose 漂亮而优美地描绘了未来完整 P2P 计算世界据我们所知企业内部网(ranet)或因特网(Internet)中现有客户机/服务器计算永远不会消失或被取代相反Jxta 技术将作为种补充和这些技术共存(因此是 juxtaposition 并列)并给最终用户带来超值体验因特网和企业内部网用户将能够从网络这两种形式中获益 
互操作性作为个设计选项
有些人或许会怀疑像 Jxta 那样普遍适应规范标准生存能力Jxta 系统可以设计成具有互操作性 — 但没有硬性规则说它们必须以任何有用形式具备互操作性换句话说个仅仅表面上满足最小指定互操作性需求、不以任何有意义方式和他人进行交互操作 Jxta 应用仍然是符合 Jxta 规范标准然而可以预见P2P 应用和服务病毒蔓延般增长速度将迫使厂商把互操作性作为他们产品个主要特性设计决策结果就交由开放市场风雨去检验吧

在其核心处使用 XML
我们很快将更详细地介绍说明Jxta 目前使用 XML 作为消息和广告格式这对于使 Jxta 具有互操作性很有帮助 XML 技术简单性和普遍可访问性软件Software几乎可以创建在任何平台上以生成并解析 Jxta 消息

Jxta 核心构件
构成 Jxta 系统组件和能在很多 P2P 网络实现中识别出来组件完全样:

对等机和对等组
服务
管道
消息
广告
对这些组件中个所做研究将揭示 P2P 通信在 Jxta 网络上是如何工作

对等机和对等组
毫无疑问对等网络是由彼此相互通信对等机组成从根本上说整个连结着宇宙就是个大型 P2P 系统但由于目前连通性和可用带宽限制把整个因特网当作个巨型 P2P 网络来使用是不切实际相反些划分是必要

物理网络逻辑划分产生了对等机工作组P2P 行话称的为对等组对等组成员资格交迭没有任何约束;换句话说任何对等机有必要属于几个对等组就可以属于几个对等组Jxta 规范标准并没有规定或推荐组织对等组合适方式在 Jxta 网络中对等组就是共享资源和服务对等机集合您可以很容易地明白如果这个规范标准把对等组限制为例如局域网 — 或者甚至是广域网个子集 — 那么很多要求组成员资格超出这些物理限制新应用可能性将概被排除和 Jxta 设计理念对等组被规定为尽可能不受限制、尽可能普遍适应

请注意对等组存在要求些维护成员资格手段Jxta 规范标准又次只规定了维护组成员资格最小需求而没有指示该怎样维护这种组成员资格服务只是核心 Jxta 服务部分但它可以接受很多种形式 — 例如它可以是数据库或目录服务还可以是基于集中式或分布式实现

服务
对等组内对等机可以共享使用 Jxta 服务事实上对等机加入个组可能主要是为了使用该组内可用服务称为核心服务组服务对 Jxta 网络基本运转是必不可少我们已经看到了个核心服务例子 — 成员资格服务表 1 展示了 1.0 版 Jxta 规范标准中包含核心服务

表 1. Jxta 服务 服务名称 描述
管道 对等机的间通信主要方式;为信息传输提供单向、异步管道抽象
成员资格 判断哪个对等机属于哪个对等组;处理对等组内对等机加入和退出
访问 种安全性服务用于控制对对等组内服务和资源访问;对等组种安全性管理器
发现 对等机能用来发现对方、其它对等组存在、管道、服务等等种方式
解析器(Resolver) 允许对等机通过引用(Jxta 行话称的为广告)间接地引用对方对等组、管道或服务;在运行期间解析器把引用捆绑到实现上


Jxta 工程最初参考实现不提供上面列出 5项的外任何服务甚至核心服务中些服务例如处理安全性访问服务也只是实现了非常基础方面现行 Jxta 社区正在为这些服务中大多数充实细节同时也在定义和实现对对等组或许有益新服务(般地或特定地)例如该社区目前正在进行新服务包括:

监视和计量服务
匿名、安全金融交易付款服务
Web 内容和服务分布式搜索服务
在 Jxta 1.0 规范标准中个运行中服务例子总是和个对等机联系在起(您可以把它想象成是由个对等“服务器”主管)个对等组内只能有个服务例子和指定对等机联系在这种类型服务被视为对等服务;如果主管该对等服务对等机当机了那么将无法获得该服务方面服务多个例子被冗余地安装在个对等组内多个对等机上 — 这被称为对等组服务对等组服务是 Jxta 网络高可用性和容错性关键Jxta 应用实现者可以自由地把任意 Jxta 服务作为对等服务或对等组服务进行安装管道服务即为对等通信提供逻辑管道抽象核心 Jxta 服务常常被作为对等组服务来实现以确保其总是可用

管道
正如 Jxta 规范标准定义在对等机的间传输数据、文件、信息、代码或多媒体内容种方式是通过逻辑管道Jxta 管道用于在对等机的间发送消息(可带任意内容)

个管道例子从逻辑上讲是对等组内个资源管道例子实际实现通常情况下是通过管道服务完成和传统(类似 UNIX )系统区别Jxta 管道是单向、异步需要双向通信两个对等机将不得不创建两个独立管道例子也跟传统机制如 UNIX 管道或 TCP/IP 套接字区别Jxta 管道末端可以在区别时间连接到区别对等机上或者根本不连接在为 P2P 网络上服务提供冗余实现方面只此个单概念就是革命性对等机可以在任点及时逻辑地“拾起”管道例如设想个想使用拼写检查器服务对等机它可以连接到个对等组拼写检查器管道(该管道是被作为冗余对等组服务实现)上 在这种情况下只要至少有个拼写检查器例子还在该对等组内某个地方运行该对等机就还能得到服务

Jxta 1.0 规范标准提供了两种般类型管道:点对点和广播(propagate)

对等机可以使用点对点管道连接到另个对等机并单向传输消息对等机可以使用广播管道连接到个或多个其它对等机并向它们全体传输消息从本质上讲点对点管道是消息传输机制广播管道则是对多消息传输机制Jxta 社区目前正在多对多消息传输机制方面努力;这个机制已经被命名为 Jxta 导线(wire)

不管是什么类型管道通过管道载送信息块都称为 Jxta 消息那么这些消息确切格式是什么样子呢?

消息
Jxta 消息是通过管道从个对等机传送到另个对等机数据束这里Jxta 规范标准再次尽可能地使自己普遍适应以免不经意间在消息定义中引入任何依赖于实现策略消息被定义为由信封和正文组成任意大小信封是标准格式它包括:

报头
源端点信息(URI 格式)
地端点信息(URI 格式)
消息摘要(可选 — 出于安全性目)
消息正文长度是任意可以包含个可选信任状(出于安全性目)和内容

请注意Jxta 消息定义非常松散考虑到我们日常般都是在可靠、宽带 TCP/IP 网络上操作这样做必要性并不是立即可以明了但 Jxta 消息格式必须是灵活、善于适应新环境它可能要在所有种类网络上实现而不只是在 TCP/IP 上设想在个支持 256 字节数据包不可靠传输网络(象传统基于数据包无线网络)上个 Jxta 实现您就会对 Jxta 消息简单定义如何使自己适应诸如这样不利环境表示赞赏

为了提供个标准、语法上易分析、通用编码机制Jxta 消息目前采用 XML 文档格式Jxta 利用了 XML 普遍可访问性和易使用、易编程特点这意味着 Jxta 可以用大多数编程语言在大多数平台上很容易地实现 — 只要 XML 语法分析器和生成库在那里是可用然而Jxta 本身设计却使其消息代码编写不依赖于 XML 使用虽然现在不太可能但 Jxta 社区在规范标准未来版本中包含(或要求)基于非 XML 消息是完全可能

广告
广告有点像是消息“堂兄弟”Jxta 广告也采用 XML 文档格式广告内容描述了诸如对等机、对等组、管道或服务等 Jxta 组件例子属性例如可以访问另个对等机广告对等机可以设法直接连到该对等机上;可以访问个对等组广告对等机可以通过广告加入对等组目前因特网中和广告相似东西是域名和 Web 站点 DNS 纪录Jxta 规范标准没有规定如何创建、传播或销毁广告

互操作性基础:Jxta 协议
互操作性个关键是这样个事实:核心 Jxta 对等交互操作模型被完全表示为在底层网络上传输套简单协议换句话说既然协议和消息格式是定义完好那么基于 Jxta 系统间互操作性完全可以在导线级上达到

例如个简单 PDA(8 位处理器基于 C 语言编程)就可以是个运行在基于数据包无线网络上 Jxta 对等机它可和同对等组内各种系统从 PC 服务器到大型机进行交互如果这些对等机共享个公共网络(传送)并正使用 Jxta 协议和消息格式进行通信这是可以做到

Sun 已为 Jxta 提供了初步 Java 语言实现Jxta 社区现在拥有这个参考实现这个参考实现为那些想立刻使用 Jxta Java 员把事情变简单了而如果您正在非 Java 平台上实现 Jxta那么理解这些协议就是非常重要表 2 简要描述了 Jxta 协议核心集涵盖了发现(对等机如何找到对方)、广告(对等机如何让别对等机了解对等组、管道等信息)、通过管道进行通信和对等组成员资格处理下面所有协议都是建立在传送器上 XML 消息交换基础上同样地它们可以用几乎所有编程语言在几乎所有平台上实现

表 2. Jxta 核心协议
协议名称 描述
对等发现协议 用来发现来自对等组内其它对等机广告;有助于发现对等机、对等组、管道和服务
对等解析器协议 对等机用它来向另个对等机发送搜索查询以定位对等机、对等组、服务或管道
对等成员资格协议 对等机用它来加入或退出个对等组
对等信息协议 对等机用它来获得别对等机状态
管道绑定协议 对等机用它来把自己绑定到管道端点
端点路由协议 对等机用它来请求有关到另对等机路由信息


Jxta 规范标准不要求对等机实现上述所有协议特定对等机只须实现那些实际要用到协议

基于 Jxta 系统些有趣属性
既然您已经对 Jxta 平台理论上构件有了个基本理解我们就来讨论下作为 Jxta 设计结果些有趣属性

有“电子心跳”任何东西都可以成为个 Jxta 对等机
从理论上说有文本串生成能力最简设备都可以加入(虽然并不是在每个 P2P 应用中都有必要)到 Jxta 网络中这是如何成为可能呢?

在 P2P 网络上过分简化设备需要对等代理人这个代理人可以代表该简化设备(或多个简化设备)执行发现、广告和通信代理人位置可以被硬性固定在简化设备这样在代理人帮助下简化设备就可以成为 Jxta 网络上完全合格对等机例如个被绑在只海龟身上并以无线方式发送出带有位置信息 Jxta 消息 GPS 定位器就可以成为 Jxta 网络上个对等机

不确定拓扑结构网络中顺序
典型 Jxta 网络另个迷人方面是它固有不确定拓扑/响应结构计算机用户通常都习惯于本质上确定、同步计算机系统并认为这是种标准结构例如当我们浏览器发出 Web 页面 个 URL 请求时我们期望输出立刻就会出现我们还期望世界上每个人都可以使用同个 URL 从同个 Web 服务器检索同个页面

在 Jxta 世界里个特定资源请求不会在几分钟、几小时或甚至几天内返回;事实上它可能根本就不会返回另外请求同资源世界各地人们很可能得到是来自完全区别服务器资源副本这就引起了个问题:不确定性系统有什么好处呢?

来自 grassroots 软件Software革命灵感
我们只要看看象 Napster 和 Gnutella 这样流行 P2P 系统就可以找到答案下面是它们些额外优势特征(它们使同步性和确定性丧失变得值得):

内容高可用性 对等机可以从多个服务器上获取内容理想情况下可从附近开机运行着台服务器上获得原始源对等机不必为每个资源请求服务;事实上它甚至可以不开机运行


网络带宽最优化使用 现今 Web 上典型局部流量集中导致拥塞不会影响 P2P 网络


更低内容分发成本 P2P 网络能吸纳内容并复制它以使它易于存取


来自网络中各个节点计算能力均衡 通过异步操作您可以同时发出许多资源或服务请求然后让网络为您完成这些工作


无限可伸缩性 个设计良好 P2P 应用可以在不影响可伸缩性限制情况下横越整个已知连接着宇宙;而这在任何集中式模式中是完全不可能
在完美 Jxta 世界中我们将在不确定性网络上执行异步请求您觉得这个概念古怪吗?

让我们用个举例来阐明设想个在基于 Jxta P2P 网络上运行基于网络音乐请求服务对等机提交了几个对音乐文件请求并在段时间后核查对等组中音乐请求服务是否找到了这些文件当我们在段时间后去核查音乐请求服务时所请求些文件已经被找到但其它却无法定位服务对那些文件响应是:音乐选择和可用性在不断地变化;请稍后重试您请求这是个可接受不确定结果:虽然服务未能找到个文件但如果我们稍后再次提交同个请求那个文件或许就是可用主管我们想要那个文件对等机这时或许在线了

当放到这样个具体上下文中时候不确定性网络概念看起来就不再那么陌生了事实上我们多数人大概都会接受并使用这样个音乐请求服务我们中些人甚至愿意为这样自动代理支付点费用这种代理会持续监视所选文件可用性然后为我们取来并存储它们副本这是 P2P 计算巨大魅力的:均衡并共享全世界所有连接着资源能力 — 但愿是以有秩序和文明方式

该讲都讲完了但最先几个在商业上取得突破 Jxta/P2P 应用大概还是会因把确定性和同步性作为它们主要特征而引以为豪这是个必要过渡用户习惯和市场取向不会在夜的间改变 — 如果没有强制原因话将来不会改变 P2P 模型将慢慢地浮现起先可能会是以混合形式出现个当前举例:基于边缘传播(edge-propagation-based)网络高速缓存Cache技术比如 Akamai是目前确定性、集中式 Web 上规范标准这些技术用 P2P 风格概念在集中式服务器世界里实现优化内容传送

社会影响和棘手知识产权问题
我们先前使用短语 — 有秩序和文明 — 是前沿计算和当代社会学交汇处事实上短语“有秩序和文明”在区别文化圈里可有区别解释或者甚至在单个文化圈区别环境中也有区别解释这已经在版权敏感知识产权(IP)管理世界里引起了激烈争议和辩论由于有关集团优势以及内容分发上根深蒂固市场惯例争论不会很快平息

在大众和商业新闻中已经写了很多Sun 不在其 Jxta 实现中规定策略决定使得它可以自由地前进并扫除了这些争论 — 把责任放在了那些在内容分发上率先采用 Jxta 技术先锋们肩上然而在这个舞台上 Jxta 技术基于社区发展使它有潜力全局控制 IP(知识产权)所有者和公众的间良好平衡开放 Jxta 社区可以作为个论坛IP(知识产权)所有者和技术专家可在此论坛解决它们的间分歧

透视 Jxta:它如何和 .Net 和 Jini 较量
自从 Jxta 被介绍后它已经被拿来和每个可想象得到网络技术进行比较即使是有名望商业杂志也不经意地忽略了这创新它显然不和主要竞争对手大肆宣传旗舰产品较量Jxta 工程是只独无 2“怪兽” — 在讨论它时候不会有任何现成参照物因此必须独立地对它进行评价

要确信Jxta 基于 XML 消息传递和微软(Microsoft) .Net 和 SOAP 技术是类似但这种比较基础比较薄弱随着越来越多第 3方协议使用了 XML很显然只用 XML 作为消息格式对于实际网络技术并不能介绍说明什么把高级别、策略丰富、基础构造基于 Web 服务 .Net 和本质上低级别、基本、策略中立 Jxta 相比是件毫无意义

Jxta 工程和 Jini 工程也是根本区别它们俩在较高级别交互作用方面有些类似地方都能够实现网络上真正分布式计算然而类似处也在那里嘎然而止真正分布式计算仍只是未来个设想所以很容易低估 Jxta 和 Jini 工程的间区别 — 尽管事实是我们在比较更多已建立客户机/服务器或多层服务器技术实现时不会做同样


两者在战略上明显区别是:Jxta 在开始就是以完全互操作性技术(任何平台任何编程语言任何厂商)面貌出现Sun 是唯投身于该社区公司Jini 是以 Java 为中心技术作为种战略Sun 将把它集成并应用在将来提供产品中Sun 将对 Jini 发展保持定程度控制

没有 Java 平台(代码灵活性RMI 等等)支持Jini 实用性将受到限制;另方面Jxta 则完全独立于 Java 装饰从另个角度看:Sun 仅仅定位在促进 Jxta 成长而 Sun 和 Jini 成长的间则是有着较多利害关系随着时间推移Jini 将成为 Jxta “愈发内向堂兄弟”;它将作为启用嵌入技术被应用、部署到许多产品中Jxta 命运在另方面将取决于参和此项技术开放社区成员们热情和创造力

Jxta 多功能性
由于提供基础机制而不规定策略Jxta 基础对于很多 P2P 应用都是可用和有价值下面是另外 3个普通个案研究:

对等机上用户搜索并共享对等组内文件、信息和内容
对等机加入到对等组以使用只在此特定对等组内才可用特定服务
对等组内对等机间以及通过网关穿越对等组即时消息传递系统
当然可能应用是无穷无尽其中很多还有待开发或甚至有待构思在后面文章中我们将安装 Jxta 并试验它命令行 shell创建该 shell 定制扩展为 Jxta 网络设计 P2P 应用

有关 Jxta 标识符
从潜力上讲对等组或许可以跟整个联系着宇宙样大在这么大名称空间中为任何事物进行唯命名都是个挑战为了应对这个问题Jxta 给 Jxta 组件每个可设定地址例子都分配了个内部标识符这种标识是通过个 UUID 进行UUID 是使用能够确保在时间和空间上都有很高概率算法产生 64 字节数字 Jxta 标识符是 URN(统资源名称)格式并被嵌入到广告中供内部使用目前定义了 4种标识符类型用于标识对等组、对等机、管道和代码/数据(code/data)(简写为 codat)
标签:

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: