(计算机软件与理论专业论文)jini技术研究及其在元计算领域的应用.pdf_第1页
(计算机软件与理论专业论文)jini技术研究及其在元计算领域的应用.pdf_第2页
(计算机软件与理论专业论文)jini技术研究及其在元计算领域的应用.pdf_第3页
(计算机软件与理论专业论文)jini技术研究及其在元计算领域的应用.pdf_第4页
(计算机软件与理论专业论文)jini技术研究及其在元计算领域的应用.pdf_第5页
已阅读5页,还剩67页未读 继续免费阅读

(计算机软件与理论专业论文)jini技术研究及其在元计算领域的应用.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 学科专业:计算机软件与理论 论文题目: j i n i 技术研究及其在元计算领域的应用 硕士生:郑继峰导师:汪文勇副教授 s u n 公司提出的j i n i 技术是分布式计算领域的一种全新方式。他提出的“即 插即用”和“自修复”的概念使得构建分布式系统具有了简明,可靠和易扩展的 特性。通过他,各种网络设备和资源能自发的组成联合,相互利用_ 本文首先阐述了j i n i 的基本概念,对j i n i 的系统模型进行了详细分析,并探 讨了将j i n i 技术应用于元计算中的可行性和具有的优势。然后提出了一个基于 j i n i 技术的元计算系统原型j m e t a 。 j m e t a 是一种网络平台异构的分布式元计算架构。利用j a v a 的平台无关性和 j i n i 的运行时动态自组织能力,他能较好的解决计算平台异构和网络部分失败的 问题,通过下载计算,远程计算和移动代理计算三种计算模式进行高效的元计算。 j 火关键词:分布式;服务;查找服务;发现;自h k ;元计算;j i n i ;j m e t a ;b r o k e r a b s t ia c t m a j o r :c o m p u t e r s o r w a r ea n dt h e o r y s u b j e c t : r e s e a r c ho fj i n it e c h n o l o g ya n di t sa p p l i c a t i o ni nm e t a c o m p u t i n g m a s t e r :z b e n gj i f e n g a d v i s o r :p r o w a n gw e n y o n g j i n it e c h n o l o g yo fs u ni san e ws o l u t i o ni nt h ef i e l do fd i s t r i b u t e d c o m p u t i n g t h e c o n c e p to f “p l u g - a n d p l a y a n d “s e l f - c u r e ”c o m i n g o u tw i t hi t b r i n g t h e c o n c i s e n e s s ,t h er e l i a b i l i t y a n dt h e f l e x i t y t ot h ed i s t r i b u t e d s y s t e m j i n i e n a b l e j i n i - b a s e dd e v i c e sa n dr e s o u r c e so nt h en e t w o r kt o d y n a m i c a l l y c o n s t i t u t ea f e d e r a t i o n ,a n dm a k e u s ee a c ho t h e r 、 t h ef i r s t p a r to ft h et h e s i sg i v eai n s i g h ti n t o t h eb a s i cn o t i o n sa n ds y s t e m f r a m e w o r ko f j i n i f u r t h e r m o r e ,t h ep o s s i b i l i t ya n da d v a n t a g e so fi m p l e m e n t i n gj i n ii n t h ef i e l do f m e t a c o m p u t i n gi sd i s c u s s e d a n dt h e n ,j m e m 川m e t a c o m p u t i n gs y s t e m p r o t o t y p eb a s e do n j i n ii sp r e s e n t e di nt h el a s tp a r t j m e t ai sad i s t r i b u t i o n m e t a c o m p u t i n gf r a m e w o r kf a c i n g t h e h e t e r o g e n e o u s n e t w o r k w i t ht h e a b i l i t y o fo si n d e p e n d e n c ea n d d y n a m i c a ls e l f - o r g a n i z i n g p r o v i d e db y j a v aa n dj i n i ,j m e t am a k ea g o o dj o bi nr e s o l v i n g t h ep r o b l e mo f h e t e r o g e n e i t ya n dp a r t i a lf a i l u r e a n dj e m t am a k e t h em e t a c o m p u t i n gm o r ee f f e c t i 诧 w i t ht h r e ec o m p u t em o d e l s :c o d ed o w n l o a dc o m p u t i n g 、r e m o t e c o m p u t i n ga n d m o b i l e a g e n tc o m p u t i n g k e y w o r d s :d i s t r i b u t e d ;s e r v i c e ;l o o k u ps e r v i c e ;d i s c o v e r y ;j 曷n ;m e t a c o m p u t i n g ; t j i n i ;j m e t a ;b r o k e r 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名: 聱鍪车 日期:? 一弓年,月苦日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:僻导师签名:j 趁啦 日期:2 ;年f 月6 日 皇至型垫查堂堡主兰些丝苎 第一章绪论 1 1 分布式计算出现的背景 自计算机诞生以来,如何高效的把计算机互联起来进行资源共享,完成信息 处理,是人们一直思考和探索的问题。计算机网络的出现为人们解决这一问题提 供了广阔的途径。 从最早的单主机多用户到如今的客户n 务器模式,计算模式随着网络规模 的持续扩大也在不断的变化。当今的信息时代,计算机技术和网络技术已经是密 不可分了。s u n 公司有旬预言“网络就是计算机”描述了未来计算世界的概貌, 那时候各种各样大小不一的计算设备将连入网络,组成一个互联无处不在的世 界。新的技术必须在可靠性,方便配置管理,高效计算方面适应未来的发展。在 这一历史潮流的推动下,各种分布式计算技术蕴育而生。 1 2 分布式计算的概念 一个分布式计算系统是由来自网络上不同主机的各种组件和对象的组成的, 多个彼此独立的处理器以完成某一特定任务为目标,通过网络进行协作工作。分 布式计算有以下的优点:1 多台机器并行运算,系统有很高的性能。2 分布式的 思想使得应用具有良好的伸缩性能。3 不同的计算机在处理过程中可互相通讯、 共享资源。4 此外,分布式系统具有很好的容错性能,当一台计算机由于故障无 法进行工作的时候,系统中其余的计算机并不会受到影响。 1 。3 传统的分布式系统面临的问题 传统的分布式系统编程模式往往没有过多的考虑本地计算与远程计算的差 异。虽然这使得程序编写工作变得简单容易,但这样的简化基于的前提一网络透 明化实际上并不存在。建立可靠的分布式系统,我们不能忽略以下一些事实一访 问远程资源会出现网络延时;网络会出现独立系统不存在的部分失败( p a r t i a l f a i l u r e ) ;不同处理机的同步问题;网络中软硬件的多样化问题等等。 电子科技大学硕士毕业论文 1 4 新一代分布计算技术j i n i 1 9 9 9 年美国s u nm i c r o s y s t e m s 公司推出了一种分布式计算技术一j i n i ,他继 承了j a v a 在分布式应用方面的优势,提出了一种“即插即用”( p l u g i n p l a y ) 的分布式计算模式:网络中的设备和软件能自发的组成群体,彼此提供服务。设 备的加入和退出都是动态的,无需手工配置。j i n i 分布式计算模型明确认可本地 和远程计算过程的差异,并提供了支持编程人员解决这些问题的工具集,使得构 建一个可靠,高效,扩展性好的分布式应用成为一件容易的事情。 1 5 论文完成的工作 本文对新的分布式计算技术j i n i 的系统框架和核心协议进行了分析和研究, 并阐述了如何基于j i n i 技术实现一个分布式科学计算的原型系统j m e t a 。 全文分六章组成: 第一章绪论 主要阐述了分布式计算的概念,以及传统分布式计算所面临的问题。指出 j i n i 技术实现的”即插即用”新型分布式计算模型为建立可靠、高效、扩展性好的 分布式应用提供了一个很好的选择。 第二章j i n i 基本原理 介绍了j i n i 技术的基本概念和特点,在分析其体系结构的基础上,描述了一 个j i n i 系统模型的运行过程。 第三章j i n i 核心协议的分析与研究 详细分析了j i n i 三个核心协议:发现( d i s c o v e r y ) 、j j n y k ( j i o n ) 和查找( l o o k u p ) , 研究如何利用三个协议构建j i n i 分布式应用。 第四章基于j i n i 的元计算原型系统j m e t a 的设计 介绍了元计算的基本概念,以及采用j i n i 技术的优势。j m e t a 是作者利用j i n i 技术设计的一个元计算原型系统,本章讨论了j m e t a 的设计目的和基本系统架构。 第五章j m e t a 的实现 重点介绍了j m e t a 系统的实现细节,分析了如何设计实现j m e t a 的a p i 来完 成三种模式的分布式计算。 第六章前景与展望 总结全文,分析了系统的不足之处以及今后的发展方向。 电子科技大学硕士毕业论文 第二章j i n i 基本原理 2 1 什么是j i n i u n i x 发明人之一b i l lj o y 说过一句话:“成功的大系统起步于成功的小系统”, j i n i 技术正是这一思想的体现。他根本上要解决的问题是各种网络服务如何彼此 互联,而不考虑这些服务是什么和做什么。 j i n i 不是传统意义的分布式操作系统,而是建立在j a v a 、对象序列化 f o b j e c ts e r i a l i z a t i o n ) 和r m i ( 这些技术使得对象能够在网络中从一台虚拟机移 动到另一台虚拟机) 之上的一个a p i 和网络协议的集合。它将面向对象编程的 便利扩展到网络编程中,能够帮助我们把用户和用户所需的资源组合成一个单一 的、动态的分布式系统。他的设想很简单:所有支持j i n i 技术的实体,可以是数 码相机,打印机,p d a 或峰窝电话,只要插入到t c p i p 网络中,就可以自动发现 并使用网络上可用的j i n i 的资源。 了解一下j i n i 技术体现的思想将加深我们对他的认识 简洁性 访问方法简单:j i n i 使用了一个统一的概念一”服务”( s e r v i c e ) 来指代网络 中所有可被其他j i n i 参与者使用的软硬件资源。用户使用服务的时候并不需要知 道服务到底是如何工作的,也无须知道服务的确切位置和安装本地驱动程序。系 统将根据用户的请求自动的确定资源位置,响应用户的访问请求。用户需要做的 仅是调用服务提供的接口就可以实现特定的功能。 简化网络管理:j i n i 构建的分布式系统就是由网络上各种服务组成的动态群 体。通过j i n i 提供的机制,用户或各种计算终端可方便的找到和使用自己所需要 的服务。同时,j i n i 技术赋予了服务动态的加入和离开网络的能力,无需手工配 置。这无疑使网络更易于管理,具有很高的可配置性能。 可靠性 一方面j i n i 支持“自发连网”,那些彼此邻接的服务能自动组成一个小的群 体,不需要用户进行手工配置。服务如果是一种特定设备,那么用户使用他的时 候也无须安装驱动程序( 需安装j i n i 内核软件) 。 另一方面j i n i 服务的群体具有很强的“自修复”( s e l f - h e a l i n g ) 能力。j i n i 承 认网络中无时不存在的故障的发生。不同的应用有不同的处理错误的策略,j i n i 技术在出现网络错误的时候,可以按预定的方式处理,向服务的使用者做出反应, 让使用者来处理这个错误。这使得开发健壮的分布式应用成为了可能。 3 电子科技大学硕士毕业论文 可伸缩性 一个j i n i 系统可被看作是一个多个服务组成的群体( c o m m u n i t y ) ,群体中 的任何服务都能感觉到其他服务,并可以相互利用。群体的规模可以几个服务到 几千个。一般情况下,一个单独j i n i 群体的大小与一个工作组的大小相类似。也 就是说,j i n i 把需要经常互访的的设备和软件服务组成一个群体,进行资源共享 和协作工作。同时,几个j i n i 系统还可以通过联合( f e d e r a t i o n ) 构成一个更大的 系统,支持不同群体中的服务的互访。同时,j a v a 语言具有的跨平台性能使得 j i n i 构建的分布式系统能包含更广范围的实体。 由于以上优点,j i n i 技术为网络资源的管理和使用带来了很大的方便,在信 息家电、企业应用和科学计算领域都具有良好的应用前景。任何客户能方便的接 入并访问网上可用资源。 2 2 j i n i 技术的体系结构 从内容和功能上讲,j i m 并不是网络操作系统,而是提供了用来建立由各种j ava 虚拟机联合体的网络基础结构。基于jini 技术的分布式网络层次结丰勾 如下图所示。 图2 1 基于j i n i 技术的分布式网络结构 我们可以看到,每个拥有j v m 的的计算机都可以成为可用的j i n i 服务,只 要他们在j v m 上使用j i n i 技术。不同的服务定义各自的服务a p i ,由j i n i 技术来 统一各种设备,实现跨平台的连接。 完煞的j i n i 技术体系结构是由:基础设施,编程模式,和服务三部分组成的, 这三部分是相互独立同时又互相关联的。基础设施的部件要使用编程模式,各种 服务也要使用编程模式,而编程模式同时需要基础设施的支持。 1 基础设施( i n f r a s t r u c t u r e ) 基础设施是j i n i 技术的核心,定义了j i n i 设备和软件如何连接并加入到网络 4 电子科技大学硕士毕业论文 中来的的核心技术,从功能上可以划分为以下几部分: 集成到r m l 中的分布式安全系统:他把j a v a 2 平台的安全模式扩展到分布 式系统 发现和加入( d i s c o v e r y j 鑫n ) 协议:他是应用于新的设备连入网络后向 系统注册成为可用资源的协议,定义了一套完整的方法,允许各种设备发 现网络中存在的可用资源或向系统内其他成员通告自身所能提供的服务。 查找服务( l o o k u ps e r v i c e ) :他是j i n i 系统内部的一种自举 ( b o o t s t r a p p i n g ) 机制,负责收集与存储网络中各种服务的接口信息和服 务属性。当有用户向其申请某项服务时,则将相应的服务代理传送到客户 端。 展 2 编程模式( p r o g r a m m i n gm o d e l ) 编程模式负责支持可靠的分布式服务,对标准j a v a 语言的模式上进行了扩 提供了构建分布式应用的一系列接口: 租用接口:定义了一种分配和释放资源的模式。 事件通知接口:将j a v a b e a n s 标准的事件模式扩展到分布式环境,实现基 于事件的j i n i 服务通讯。分布式环境下的事件与本地事件不同,存在着乱 序,延迟等情况。j i n i 提供了一个简单的a p i 保证分布式事件的正确接收。 事务两阶段提交接口:此a p i 提供了两步提交的分布式事务提交机制 3 服务( s e r v i c e s l 服务代表网络中的一种可被其他客户访问的可用资源,他们以j a v a 语言编 写的对象形式出现,定义了操作接口,实现服务功能的方法以及服务的属性。 必须依靠于一系列可用服务的存在,一个完整的j i n i 系统才能被建立起来。 2 3 j i n i 的重要概念 在j i n i 这种崭新的计算模式中,一些新的概念被引入: 1 服务( s e r v i c e s ) 服务是j i n i 中最重要的一个概念,他指网络中具有一定有用功能可被其他 j i n i 参与者使用的各种资源,包括硬件设备,软件程序或两者的组合。他们可以 是一个显示设备、打印设备、一次计算或一个数据库。例如,设置了j i n i 的磁 盘驱动器能够提供一种“存储”服务。设置了j i n i 的打印机能够提供一种“打 电子科技大学硕士毕业论文 印”服务。一个j i n i 的构建的分布式系统包含了各种各样的服务,他们的加入和 退出都是动态的,不需要人工的设备配置和驱动安装等工作,系统的操作和管理 工作因而变得十分简单。 2 查找服务( l o o k u ps e r v i c e ) 查找服务是j i n i 体系的核心机制,他是组织管理网络上其他各种服务的特殊 服务。查找服务存储了网络中各服务发布的代理对象,用户通过查找服务可以获 取这些对象,并使用代理对象中包含的接口访问服务,实现服务提供的功能。因 此可以说查找服务是连接服务提供者和服务使用者的桥梁。 图2 2 查找服务与服务条目 3 自修复与租借( l e a s e i n g ) 分布式系统不可忽视一个问题是,网络会出现独立系统不存在的各种故障, 这会导致系统处于不一致的状态。j i n i 提出了“自修复”的思想,让系统在失败 的时候自己“清除失败”。“租借”机制是实现这一思想的具体实现。j i n i 中资 源是租借给用户使用而不是永远提供给他们的。租借做到了两件事情 ( 1 ) 保证系统某部分失败能被检测到,并以约定的方式做出反应。 ( 2 ) 使分布式系统自动清除失败的组成部分。 服务的提供者需要持续的在查找服务上续定他们的租约。如果服务失败,不 再续订。那么租约到期的时候,系统意识到服务己失效,其资源将被释放。 4 r m l ( j a v ar e m o t em e t h o di n v o c a t i o n ) 由个体的j a v a 虚拟机发展到j i n i 系统中j a v a 虚拟机的联盟,在很大程度上 得益于j a v ar e m o t em e t h o di n v o c a t i o n ( r m i ) 的支持。 r m i 是一套由j a v a s o f l 开发的a p i 。他支持运行于不同j a v a 虚拟机的程序 级对象之间彼此进行通信,实现远程对象之间的无缝远程调用,是j a v a 分布式 应用的基础。r m i 不仅允许数据在网络上从对象传递到对象,而且还能支持对 象本身甚至包括代码在网络上的传递。j i n i 系统的许多简便特性也来自于这种将 代码封装为对象在网络中移动的能力。r m i 的出现使得j i n i 系统中包含有服务接 口和其他属性的服务代理在网络中由服务提供端到查找服务再到客户端的传递 - 6 电子科技大学硕士毕业论文 成为了现实。 5 分布式事务 不管是在单一服务还是跨越多个服务的一系列操作,都可以包含在一个事务 中。j i n i 技术的事务接口提供了完成两阶段提交所需的服务协议。至于事务如何 实施,取决于使用这个接口的服务本身。 6 分布式事件( e v e n t s ) j i n i 体系结构支持分布式事件。一个对象允许其他的对象注册对该对象感兴 趣的事件,并在事件发生的时候向这些对象发出通知。分布式事件驱动使得程宁 具有了较好的可靠性和可伸缩性。 2 4j i n i 的系统模型 我们把一个采用j i n i 技术构建的分布式系统简称为j i n i 系统。下图显示了 服务提供者,服务使用者和查找服务是一个j i n i 系统中的三个基本角色。 图2 3j i n i 系统的构成 无论是从编程还是从用户使用的角度来说,服务是j i n 系统的基础, j i n i 系统的运作都是围绕服务展开的。j i n i 定义了一个运行时体系结构( r u n t i m e i n f r a s t r u c t u r e ) ,该结构驻留在网络上,并且提供了添加、移走、定位和访问服务 的机制。运行体系结构驻留在网络上的三个地方:查找服务,服务提供者( 如支 持j i n i 的设备) 以及用户程序中。查找服务是j i n i 系统中的中枢。当新服务要 加入j i n i 群体的时候,它们通过查找服务注册自己。当客户希望搜索定位一个服 务以帮助完成一些任务时,它们向查找服务咨询。 有几个问题是我们需要关心的,既一个服务如何才能加入j i n i 系统? 用户 怎样才能找到自己所需的服务并使用他? 粉 _ in 蔓 电子科技大学硕士毕业论文 2 4 1 服务如何加入j i n i 群体 新服务加入一个j i n i 群体的过程主要有发现查找服务和发布服务代理两步。 新服务首先要找到他希望加入的j i n i 群体中的查找服务,这个寻找 可用查找服务的过程是使用j i n i 的发现( d i s c o v e r y ) 协议来实现的。 一旦找到特定群体的查找服务后,服务便可以按照加入( j 器n ) 协议进 行注册,把包含有访问服务功能接口的代理对象( p r o x yo b j e c t ) 和服务 的相关属性上传到查找服务。 图2 4 服务加入到j i n i 群体一 可把查找服务抽象的理解成维护了一个“服务项目”列表,每个服务项目包 含了一个代理对象和用于描述服务的属性。服务如果要保持一直有效,就需要不 断的更新其在查找服务上代理的租约。 2 4 2 用户如何找到服务 网络用户使用服务的过程基本包含了以下步骤 使用发现协议( d i s c o v e r y ) 定位查找服务。 生成一个模板( s e r v i c et e m p a t e ) 。 在查找服务中按查找( l o o k u p ) 协议搜寻和模板匹配的服务。 获取服务的代理对象。 使用代理包含的接口与服务进行交互,实现所需要功能。 图2 5 客户下载代理对象并使用他与服务通讯 电子科技大学硕士毕业论文 2 4 3 用户如何使用服务 j i n i 群体中服务的使用者从查找服务下载服务代理后便可以使用他来与服务 交互。代理对象和服务间的通讯方式是不受约束的,取决于服务的实现者,这提 供了很大的灵活性。 代理可以独自完成服务的所有功能;也可以是某个远程对象的r m i 存根,使 用r m i 与网络上的服务进行通讯;更常见的情况是代理使用私有的通讯协议与 服务通讯。实际上服务使用者并不需要了解代理如何与服务通讯,他只用知道如 果使用代理提供的接口访问服务功能可以了。 以上操作过程中,服务提供者可以把程序代码移动到查找服务并从他移动到 客户方,这使得服务提供者在与查找服务和客户通讯时有很大的自由。这种代码 的可移动性保证了客户方中的代理程序和其所代理的服务之间的同步,因为此代 理程序本身就是服务提供的。j i n i 中客户方与服务方这种通过服务代理的通讯方 式与常见的通讯方法相比有一个显著的优点:服务提供的服务细节可以完整的传 达到客户方,因为由它本身来提供的代理程序了解服务的一切细节。 从上不难看出服务的加入、发现和访问工作都是利用发现( d i s c o v e r y ) ,加入 ( j 两n ) ,查找( l 0 0 k u p ) 这三个协议来实现的。如果说服务是j i n i 系统的基础的话, 那么三个协议就是构建系统的灵魂。 电子科技大学硕士毕业论文 第三章j in i 核心协议的分析与研究 前面我们提到j i n i 技术的核心是d i s c o v e r y ,j n ,l o o k u p 三个协议。 d i s c o v e r v j 菇i n 协议在把一个设备插入网络时使用,其中,当一个服务需要寻找 一个查找服务进行注册的时候使用d i s c o v e r y 协议;而当它找到以后,需要加入 时采用j i n 协议。当用户需要根据服务协议接口查找和调用服务时则采用 l o o k u p 协议。从一个提供服务的设备加入网络到其被使用的过程包括了以下四 个阶段:发现查找服务,注册服务,搜寻服务,使用服务。 目前s u n 公司发布了j i n is t a r t e rk i t ( 基本软件包) 1 2 版本。这个软件包 中包含了ji i i i 架构的基本组成部分,包括实现了三个协议的库代码,一些帮 助类,一个名为r e g g i e 的查找服务实现以及基本类的源代码。使用这个开发包我 们就可以编写j i n i 的服务方和客户方的程序。 下面我们将基于这个开发包来详细分析三个协议是如何工作,完成四个阶段 任务的。要特别指出的是发现( d i s c o v e r y ) 仂、议是网络层的协议,连接o o i n ) 和查找 ( 1 0 0 k u p ) 的则是两个对象层协议。 3 1 服务和客户的发现( d i s c o v e r y ) 3 1 1 发现的过程 发现是j i n i 应用在它们所在的群体中寻找查找服务的过程。发现过程的设计 使得服务在启动时,不必知道存在什么群体,就可以缺省地找到”邻近”的查找服 务并注册。这里提到的邻近是基于网络拓扑而言的( 相同网络或紧密连接的网络 上的服务,与如何配置网络有关系) 。 发现分三种基本形式,适用于不同的情况: 1 服务发起的发现:新的服务启动并准备加入附近的群体的时候,他通过i p 组播协议来寻找查找服务。查找服务接收到一个组播发现请求时,直接向新服务 发一个单播消息进行应答,这个消息包括了查找服务的代理对象,服务通过他可 以访问查找服务,进行服务的注册工作。 图3 ,1 组播请求协议 - l o - 电子科技大学硕士毕业论文 2 查找服务发起的发现:查找服务定期向一特定组播地址发送组播通告,网 络中感兴趣的实体( 服务或客户) 事先在该地址上进行监听。一旦他们收到了查 找服务存在的通告,就可以使用直接单播连接来访问查找服务,查找服务传回代 理对象,感兴趣方就可使用此代理对象与查找服务进行通信了。 图3 2 组播通告协议 3 “直接”发现:除了在组播地址上监听来自其他服务的组播发现请求外, 每个查找服务还要在一个正常的单播地址上监听,任何服务都可以直接连接这个 地址访问查找服务,从这个意义上说,此协议不能叫做“发现”协议,它只是访 问一个已知的查找服务去下载它的服务代理。客户向查找服务发消息,然后查找 服务返回其代理。 3 1 2 发现协议a p i 图3 3 单播发现协议 j i n i 为实现上面所述的各种发现机制提供了完善的a p i 3 1 2 1 单播发现( u n i c a s td i s c o v e r y ) 单播发现使用l o o k u p l o c a t o r 类来控制,用在服务已经知道要交互的查找服 务的位置,而只需要获得该查找服务的代理情况下。 p a c k a g en e t j i n i d i s c o v e r y ; p u b l i cc l a s sl o o k u p l o c a t o ri m p l e m e n t ss e r i a l i z a b l e p u b l i cl o o k u p l o c a t o r ( s t r i n gh o s t ,i n tp o r t ) ; p u b l i cs t r i n gg e t h o s t 0 ; p u b l i ci n tg e t p o r t 0 ; p u b l i cs e r v i c e r e g i s t r a rg e t r e g i s t r a r ( ) t h r o w si o e x c e p t i o n ,c l a s s n o t f o u n d e x c e p t i o n ; p u b l i cs e r v i c e r e g i s t r a rg e t r e g i s t r a r ( i n tt i m e o u t ) t h r o w si o e x c e p t i o n ,c l a s s n o t f o u n d e x e e p t i o n ; 1 】 电子科技大学硕士毕业论文 每个l o o k u p l o c a t o r 实例代表了网络上一个单独查找服务。通过提供要连接 的查找服务所在位置作为构造函数的参数,就可以获得一个新的l o o k u p l o c a t o r 实例,直接访问网络上任意位置的查找服务。 g e t h o s t ( ) 和g e t p o r t ( ) 方法从传递给构造方法的参数中提取出的主机名和端 口号。 g e t r e g i s t r a r ( ) 方法启动单播发现协议,他的两个重载方法都返回构造方法指 定的查找服务的代理,第二个方法接受了一个超时参数。 3 1 2 2 组播发现( m u l t i c a s td i s c o v e r y ) 异步a p i 为发现的偶遇形式,既组播发现和组播通告提供了通用的模型。 此模型中最重要的类是l o o k u p d i s c o v e r y 类。 1 组播发现类l o o k u p d i s c o v e r y p a c k a g en e t j i n i d i s c o v e r y ; p u b l i cc l a s sl o o k u p d i s c o v e r y p u b l i cs t a t i cf i n a ls t r i n g 】 p u b l i cs t a t i cf i n a ls t r i n g 】 a l l _ g r o u p s 2 n u l l ; n o _ g r o u p s = n e ws t r i n g o ; p u b l i cl o o k u p d i s c o v e r y ( s t r i n g 】g r p s ) t h r o w ni o e x c e p t i o n ; p u b l i cv o i da d d d i s c o v e r y l i s t e n e r ( d i s c o v e r y l i s t e n e r1 ) ; p u b l i cv o i dr e m o v e d i s e o v e r y l i s t e n e r ( d i s c o v e r y l i s l e n e r1 ) ; p u b l i cs t r i n g 】g e t g r o u p s 0 ; p u b l i cv o i ds e t g r o u p s ( s t r i n g 】g r p s ) t h r o w si o e x c e p t i o n ; p u b l i cv o i da d d o r o u p s ( s t r i n g 】g r p s ) t h r o w si o e x c e p t i o n ; p u b l i cv o i dr e m o v e g r o u p s ( s t r i n g 】g r p s ) ; p u b l i cv o i dt e r m i n a t e o ; ) l o o k u p d i s c o v e r y 类中具有为客户应用或服务启动和控制发现过程的方法,绝 大多数需要执行发现的程序要创建一个此类的实例。实例一旦创建,发现过程开 始启动。创建实例时程序需要把感兴趣的组名组成的数组传递给类的构造方法。 ( 如果传递空字符串,则意味缺省的“公用”组) 。此类对象被实例的时候,他 就开始执行组播请求来寻找本地网中特定组中已运行的查找服务,一段时间后, 程序自动进入等待通告消息的模式。 1 2 - 电子科技大学硕士毕业论文 2 事件接收器接口d i s c o v e r y l i s t e n e r 在一个新的查找服务被找到时,l o o k u p d i s c o v e r y 对象依靠一个和他关联的 事件接收器对象来获得通知并进行进一步处理。l o o k u p d i s c o v e r y 对象的 a d d d i s c o v e r y l i s t e n e r ( ) 和r e m o v e d i s c o v e r y l i s t e n e r ( ) 方法可以增加和删除接收 器。事件接收器必须实现一个接口d i s c o v e r y l i s t e n e r ,具体构造如下: p a c k a g en e t j i n i d i s c o v e r y ; i m p o r tj a v a u t i l e v e n t l i s t e n e r ; p u b l i ci n t e r f a c ed i s c o v e r y l i s t e n e re x t e n d se v e n t l i s t e n e r p u b l i cv o i dd i s c o v e r e d ( d i s c o v e r y e v e n te v ) ; p u b l i cv o i dd i s c a r d e d ( d i s c o v e r y e v e n te v ) 他包含了两个方法: d i s c o v e r e d ( ) : 通过发现协议找到了新的查找服务时被调用,实现查找服务 的j i n i 类库将在需要时“自动”调用此方法; d i s c a r d e d ( ) :负责在以前找到的查找服务不再可用时清除关于此查找服务的 相关状态,“忘记”该服务,但允许这些服务再次被发现。这个方法不是自动调 用的,是由程序实现的发现机制来决定何时调用的。 3 发现事件类d i s c o v e r y e v e n t 事件接受器的d i s c o v e r e d ( ) 和d i s c a r d e d ( ) 方法都使用了d i s c o v e r y e v e n t 做为参 数,下面看一下这个类: p a c k a g en e q i n i d i s c o v e r y ; i m p o r tj a v a u t i l e v e n t o b j e c t ; p u b l i cc l a s sd i s c o v e r y e v e n te x t e n d se v e n t o b j e c t p u b l i cs e r v i c e r e g i s t r a r g e t r e g i s t r a r s 0 ; 其他一些方法 ) 此类封装了发现信息,他提供的g e t r e g i s t r a r s ( ) 方法可返回一个 s e r v i c r e g i s t r a r 实例的数组,每个实例都是一个服务代理,可用来与网络上某个 特定的查找服务通信。jini 基础类库可以把多个s e r v i c e r e g i s t r a r 捆绑成一个事 件,所以这里返回的是s e r v i c e r e g i s t r a r 的数组。用户方使用l o o k u p d i s c o v e r y 在 接收器上注册事件,通过事件接收器获得发现事件对象,最后用户将调用事件对 象上的g e t r e g i s t r a r s 方法获得查找服务的代理对象。服务提供者通过此对象可以 进行服务注册,用户则可以通过此对象在查找服务上搜寻特定的服务。 1 3 电子科技大学硕士毕业论文 3 2 服务的加入( j 0 碴n ) i 3 2 1 服务加入的过程 前面说过等待加入系统的新服务通过发现协议会获得一个s e r v i c e r e g i s t r a r 实例的数组,这些实例实际就是服务的代理。下面我们来看一下,服务是如何通 过这些代理使用加入协议和查找服务通讯,完成加入操作的。 简单的说服务的加入分四步来走: 通过发现协议获得感兴趣的查找服务的代理s e r v i c e r e g i s t r a r 实例。 创建一个服务条目s e r v i c e i t e m 对象,此对象包含服务代理及服务属性。 在s e r v i c e r e g i s t r a r 对象上调用r e g i s t e r 0 方法,发布s e r v i c e l t e m 。 方法调用返回一个s e r v i c e r e g i s t r i a t i o n 对象,利用他可以维护注册服务 时查找服务返回的租约。 图3 4 服务发布代理 3 2 2 通过查找服务代理( s e r v i e e r e g i s t r a r ) 进行加入 下面看一下s e r v i c e r e g i s t r a r 类的构造 p a c h a g en e t d i n i c o r e 1 0 0 k u p ; p u b l i c c l a s ss e r v i c e r e g i s t r a r p u b l i cs e r c v i c e r e g i s t r a t i o nr e g i s t e r ( s e r v i c e l t e mi t e m , l o n gl e a s e d u r a t i o n ) t h r o w s j a v a r m i r e m o t e e x c e p t i o n ; ) l e a s e d u r a t i o n 是服务注册的时候请求的租约时间,查找服务根据情况来决定 实际的租约时间。s e r v i c e l t e m 包含t n 务代理和服务属性,他的类定义如下: p a c k a g en e t d i n i c o r e 1 0 0 k u p p u b l i cc l a s ss e r v i c e l t e mi m p l e m e n t ss e r i a l i z a b l e p u b l i cs e r v i c e l t e m ( s e r v i c e i ds e r v i c e l d , o b j e c ts e r v i c e , e n t r y a t t r i b u t e s e t s ) ; 1 4 电子科技大学硕士毕业论文 p u b l i cs e r v i c e l ds e r v i c e l d ; p u b l i co b j e c ts e r v i c e ; p u b l i ce n t r y a t t r i b u t e s e t s ; ) 可以看到s e r v i c e l t e m 的构造函数有三个参数: 第一个是服务的标识号s e r v i c e l d ,此标识号是全局唯一的。如果服务第一 次注册,查找服务会分配一个全局唯一的i d 给他,服务必须留出空间保留好这 个标识号,当出现服务崩溃的情况时,此服务可以使用相同的服务j d 在另外一 个查找服务上进行注册。保证服务使用前后一致的服务i d 进行注册,这对于指 定搜寻特定服务的用户来说是极为重要的。当然如果服务做了一些更新,他也可 以重新注册自己,申请一新的服务i d 。 第二个也是最重要的参数是服务代理的实例。这个对象必须是一个可序列化 的对象,在查找服务被发现时发送到查找服务,等待需要它的客户。代理的使用 是j i n i “实现与接口分离”重要思想的具体表现。代理要实现个代表服务功能 的接口,定义用户和服务通讯的协议。获得代理的用户需要了解这个接口并知道 如何调用他来访问服务。比如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论