




已阅读5页,还剩82页未读, 继续免费阅读
(计算机软件与理论专业论文)基于移动agent的分布式资源发现研究与设计.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:盔j 一日期:渤;年r 月如日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名委垒导师签名: 日期:泖j 年r 月印b 摘要 学科专业:计算机软件与理论 论文题目:基于移动a g e n t 的分布式资源发现研究与设计 硕士研究生:廖红( 0 1 s 0 6 1 6 2 )导师:周明天教授 移动a g e n t 是一种可以在主机之间根据自主控制进行有目的移动的软件程 序,其实质是一个封装了代码、运行状态和数据的智能计算实体。作为对象技术 的更高层次的发展,移动a g e n t 具有自主性、协作性、移动性和自适应性特点, 能提供离线的计算模式,减少网络的通信流量,异步运行。它为解决移动环境中 的动态资源发现问题提供了新的思路。 本文介绍了现有网络中的资源发现算法和协议,分析了传统资源发现算法的 不足,针对移动网络高度动态性的特点,在泛洪算法的基础上,提出了一种基于 移动a g e n t 的分布式资源发现算法,设计并实现了基于此算法的资源发现系统。 通过对系统运行情况的分析,进一步改进了该系统,提出了层次化的域模型概念; 同时为提高移动a g e n t 在移动网络中资源发现的灵活性,给出了几种不同的移动 策略,根据移动策略动态修改移动a g e n t 的旅行计划,使之能够更好地适应移动 网络的动态性。 关键词:移动a g e n t ,资源发现,分布式资源发现算法 a b s t r a c t m a j o r :c o m p u t e rs o f t w a r ea n dt h e o r y s u b j e c t :t h er e s e a r c ha n dd e s i g no f d i s t r i b u t e dr e s o u r c ed i s c o v e r y s y s t e mb a s e do nm o b i l ea g e n t n a m e :l i a o h o n g a c e d e m i ca d v i s o r :p r o f z h o um i n g tj a n m o b i l ea g e n ti sak i n do fs o f t w a r ew h i c hc a nm a k ep u r p o s i v em o v e m e n t a m o n gh o s t sb ys e l fc o n t r o i ti s ,i ne s s e n t i a l ,ac o m p u t ee n t i t yw h i c h e n c a p s u l a t e sc o d e s ,r u n n i n gs t a t e sa n dd a t a a sah i g h e rd e v e l o p m e n to f o b j e c t o r i e n t e dt e c h n o l o g y ,m o b i l ea g e n th a st h ec h a r a c t e r i s t i c so f a u t o n o m y ,g o o dc o o p e r a t i o n ,m o b i l i t ya n ds e l f a d a p t a t i o n ,a n di tc a nm a k e o f f l i n ec o m p u t i n ga n dr e d u c en e t w o r kt r a f f i c t h i sk i n do ft e c h n o l o g y c o n t r i b u t e st ot h es o l u t i o no fd y n a m i cr e s o u r c ed i s c o v e r yi nt h em o b i l e e n v i r o n m e n t t h i st h e s i si n t r o d u c e st h er e s o u r c ed i s c o v e r ya l g o r i t h mo f t h ec u r r e n tn e t w o r k ,a n a l ) r s e st h ed i s a d v a n t a g e so ft r a d i t i o n a lr e s o u r c e d i s e o v e r ya l g o r i t h m s a i m e da tt h eh i g h l yd y n a m i cc h a r a c t e r i s t i co f m o b i l en e t w o r k ,t h i st h e s i sp u t sf o r w a r da na g e n t o r i e n t e dd i s t r i b u t e d r e s o u r c ed is c o v e r ya g o r it h m ,d d f ( d o u b e d ir e c t i o n f e e d b a c ka l g o r i t h m ) o nt h eb a s eo ff l o o d i n ga l g o r i t h m i ta l s om a k e sad e s i g na n di m p l e m e n t o ft h er e s o u r c ed i s c o v e r ys y s t e mw h i c hi sb a s e do nt h ea l g o r i t h mw e p r o p o s e d ,a n di m p r o v e st h es y s t e mp e r f o r m a n c eb yb r i n g i n gf o r w a r dt h e c o n c e p to fl a y e r e dd o m a i nm o d e l m e a n w h i1 e ,t oi m p r o v et h ef l e x i b i l i t y o fm o b i l ea g e n ti nt h er e s o u r c ed i s c o v e r y ,t h i st h e s i ss u g g e s t ss e v e r a l v a r i o u st r a v e lp o l i c i e s ,a n dr e v i s e sa g e n t st r a v e l p l a na c c o r d i n gt o t r a v e lp o l i c i e st om a k et h ea g e n ta d a p tt ot h ed y n a m i cc h a r a c t e r i s t i co f m o b j en e t w o r km o r eb e t t e r k e y w o r d s :m o b i l ea g e n t ,r e s o u r c ed i s c o v e r y ,d i s t r i b u t e dr e s o u r c e d is c o v e r ya l g o r i t h m 1 i 基- f - n 动a g e m 的分布式资源发现研究与设计 第一章引言 1 1 研究的动机和意义 近年来,无线通信和移动计算技术得到快速发展:网络基础设施逐步建立, 带宽不断增加,为各种无线应用提供良好的基础环境;许多移动计算设备交替出 新,更加便于携带、计算能力的瓶颈被逐步突破,交互手段也日趋多样化。技术 的进步使用户可以通过便携机、移动电话、个人数字助理在各种场合、以多种方 式灵活地访问网络中的信息和服务资源。 然而,在这些设备上运行移动应用,给软件设计者带来了许多富有挑战性的 问题。从环境角度,移动中的设备经常会面对临时的、突发性的网络连接中断, 甚至连支持网络通信的基础设施也可能突然改变,而且移动设备往往需要在一种 非常不确定的网络环境中发现其它的主机或资源。从自身角度,移动设备的资源 比较有限,例如:电池供电能力弱、c p u 速度不够、内存容量少,因此要求应 用的计算开销不应当很大;但矛盾的是,环境的多变性要求应用能快速响应频繁 的变化,例如,新的主机位置、新的通信方式、网络带宽的波动等。相对固定网 络中运行在稳定主机上的应用而言,移动应用充满动态、不确定的因素。 对于移动应用而言,需要分布式计算平台支持,以保证应用开发和运行的高 效性。但从目前的需求看,常规分布式计算平台并不适合移动网络环境。常规的 分布式计算平台,无论是c o r b a 还是e j b j 2 e e ,多数基于客户n 务器模型,因 此导致分布式应用之间的交互往往是固定、同步、紧耦合的。在移动环境中,这 种机制会产生许多问题,例如:远程方法调用可能在网络性能波动、带宽很低的 时候显得效率偏低;同步的交互对于网络频繁中断、网络环境变迁等情况根本不 能适应:另外,移动的网络也不能保证客户服务器之间维持较长时间的连接和 紧密的祸合关系等等。 另外,常规分布式系统存在有默认的假设:主机位置固定、网络连接基本稳 定、服务资源公开而容易获得。这些假设对于固定网络下的应用固然合理,但在 移动系统中就经常不成立。无论是提供服务、资源的设备,或者需要访问资源的 客户,位置可能都经常变化。整个网络的计算资源、连同网络本身都是动态、充 满不确定因素的。因此,固定网络中的许多技术将不再适合。 上述这些缺点将大大限制常规分布式计算技术在移动环境中的应用。但从应 用需求角度,移动网络环境比固定网络环境更加复杂,应用开发者更加迫切需要 移动计算技术的支持。因此,对移动分布式计算技术的研究已成为移动计算研究 基于移动a g e n t 的分布式资源发现研究与设计 领域中的重要课题。 对这个课题做深入而广泛地探索,无论从技术本身或应用价值上都有非常重 要的意义。首先,在技术方面,面向移动网络环境的分布式计算对传统固定、封 闭式的系统设计是一种挑战,动态性和灵活性的需求将产生若干新的问题。其次, 对于应用设计、开发者而言,移动分布式计算平台、特别是移动分布对象平台可 以对许多复杂问题提供有效的、系统级的解决方案。同时,它将提供一些不同于 传统应用的计算模式和编程框架,帮助开发者编写适合于移动环境的、更加灵活 的应用程序。 本文结合武器装备预研基金项目“面向对象的移动计算平台体系结构及关键 技术研究”,对移动a d h o c 网络环境下的动态资源发现问题的研究和设计做了详 细的阐述。文章首先介绍了移动环境的特征和当前移动计算技术面临的一个典型 问题:移动环境下的动态资源发现问题,以及作为计算实体更高层次的发展,移 动a g e n t 所具有的自治性、移动性、感知性、智能性,使之更适用于移动网络环 境,是解决移动环境下的资源发现的重要手段。第二章详细分析了移动a g e n t 系 统模型及其关键技术,并对现有的移动a g e n t 平台作了简要的介绍。文章的第三 章介绍了几种现有的资源发现协议,对其进行了比较;介绍了分布式资源发现图、 资源发现算法及其性能分析指标,指出了传统的泛洪算法的不足并加以改进,结 合移动a g e n t 提出了一种新的资源发现算法:双向反馈算法,并在第四章给出了 基于移动a g e n t 的双向反馈资源发现系统的详细设计及其主要模块和关键技术的 实现。第五章对该系统作了进一步的完善,提出了层次域模型的概念,结合移动 a g e n t 的主动迁移能力修改移动a g e n t 旅行计划;同时对下一步将要进行的工作做 出了补充说明,为本文的后续研发工作打下良好的基础。 1 2 移动网络环境及其特征 1 2 1 移动网络环境分类 按照设备和网络连接划分,可以明显区分常规网络和移动网络( 图卜l a ) , 而移动网络又可以进一步分为两种:a d h o c 网络和n o m a d i c 网络。 2 1 1a d h o e 移动分布式系统 a d h o c 移动分布式系统包括一系列移动主机,断续地通过高速变化的链路 连接在网络上,在高度动态的环境中运行,它与传统的分布式系统间的区别在于 没有固定的网络结构:移动主机之间完全独立,随机地聚合成簇。如图i l c 。 a d h o c 移动分布式系统中,移动设备之间的连接更异构化,系统的容错能 基于移动a g e n t 的分布式资源发现研究与设计 力也大为降低,无线通信过程中,常出现非连接,弱连接状态,a d h o c 网络代 表了分布式计算研究中的最新趋势。本文的研究重点就是a d h o c 移动网络中的 资源发现问题。 1 2 1 2n o m a d i c 移动分布式系统 n o m a d i c 移动分布式系统位于传统的固定分布式系统和h d b o o 网络之间, 仍然基于核心的固定的路由器、交换机和主机。在这一圈固定网络的边缘,具有 控制信息流量的基站将外围动态移动设备联入网内。如图卜l b 。n o m a d i c 系统可 以认为是从传统的固定网络向最新的a d h o c 网络的一个过渡。 孵嵫鼹画_ 断名l 廿。p 了 n ) 常规洲定劁络( b ) n o m a d i c 州络( c ) n d - h o c 黼绢 图卜1按照主机移动性划分的几种网络结构 1 2 ,1 3a d h o c 网络和n o m a d i c 网络之间的区别 前者没有固定的计算设施,主机均是可移动的,链路特性高度动态变化,由 于距离导致连接不能自由创建;而n o m a d i c 网络界于常规网络和a d h o c 网络之 间,既存在核心的固定设备和网络,又在固定网络边缘的基站和移动主机间进行 无线通信交互。 1 2 2 移动环境特征 1 2 2 1 基于无线设备和协议的网络通信 不可预知及突发性非连接状态,而且这种状态往往会持续保持较长时间。 低带宽,如g s m 网络数据传输只能达到9 6 k b p s ,即使继续发展,相比 育线网络,带宽总是处于较低水平; 高度的带宽波动,无线通信的传输性能波动是客观存在的,且这种波动 往往不是由于网络拥塞造成。 异种网络环境,由于设备经常移动到不同的网络,因此从硬件到协议在 各个地方都可能不一样,移动系统必须能处理这种变化; 各种安全隐患,使用无线通信的分布式应用会面临更多的安全问题,如 通信本身的安全,以及由于改变安全域而引起的复杂问题。 基于移动a g e n t 的分布式资源发现研究与设计 1 2 2 2 改变位置的同时连接到网络也会产生特殊的移动性问题 由于移动主机的网络地址动态可变,系统需要根据当前位置进行动态配置, 应用必须获得一些位置敏感的信息用于各种计算,另外,位置的变化可能对通信 状况产生很大的影响。 1 2 ,2 3 便携式设备在移动计算中非常普遍 移动分布式系统,特别是客户端系统,需要充分考虑到这类设备的特点,主 要包括:低能耗、数据容易丢失、用户界面的特殊性、计算和存储能力有限等。 1 3 移动网络中的资源发现问题 资源发现是移动环境中的个重要问题。 由于主机的移动和链路的多变性,资源不再固定或稳定,因此快速动态发现 资源是必须的。客户在移动中,经常处于相对陌生的网络环境中,不少工作致力 于解决如何动态发现所需的服务资源问题,如:s u n 的j i n i 等。 具体而言,需要解决的问题包括:资源怎样动态发布、资源信息的失效、何 处可以查询附近的资源等。移动资源管理可以采用两种方式:集中方式在全局目 录服务器中维护动态的资源信息;分布方式可以在各个移动区域的相对固定点跟 踪附近的资源。后者在处理上较多地类似m o b i l ei p 。至于资源的发布可以是主 动登记或广播。具体到服务资源的发现,一个典型例子是s u nj i n i ,它允许设备 组和软组件集中到单一、动态的分布系统,并支持动态发现。其体系中的三个典 型角色是:服务提供者、查询服务和客户。当然,j i n i 需要必要的固定设施支持。 1 4 计算实体的移动模式 移动性不仅针对设备和客户,而且也包括计算实体,从简单的数据、代码到 自包容的a g e n t 均可以移动,研究相应的支持计算实体移动的方法或设施得到 广泛的关注,如:u m b ca g e n t w e b 、d a r t m o u t h 的a g e n t t c l 、g e n e r a lm a g i c 的 o d y s s e y 、i b m 的a g l e t s 等。 1 4 1 客户服务器( c s ) 模式 客p n 务器模式是最早的移动模式,在这种模式下,计算资源与和数据资 源般都放在服务器端。服务器进程在后台直运行,等待客户机的请求,为客 户机提供服务。服务器的功能是特定的:它执行一组预定义的、功能相关的事项 的处理。客户机主动向服务器发出请求,服务器端响应请求,并将处理结果返回 基于移动a g e n t 的分布式资源发现研究与设计 给客户机,客户机进程再继续进行。 客户和服务器是通过信息传递协议进行通信的,需要指定网络地址和端口 号,通信层次低,编写并发执行的进程程序比较困难,对超时、负载和进程同步 等问题的处理也比较复杂。远程过程调用( r p c ) 对此进行了改进,它隐蔽了网 络的具体细节,把通信接口抽象到过程调用一级,使得用户使用远程服务就像进 行一个本地调用一样。当一个过程调用了r p c ,它就被挂起,调用参数被传递到 远程过程所在的地点,在那里该过程被执行。当远程过程执行完,其结果通过网 络返回,调用过程像本地过程一样继续其工作。如图卜2 所示。 图卜2r p c 远程过程调用 从图卜2 可以看出,r p c 只是一个过程调用,当本地过程频繁进行r p c 时, 本地机器要与远程机器进行多次的交互,对网络来说是一个不小的负担。并且, 在调用过程中,调用方将一直处于阻塞状态。 j a v a 的远程方法调用r m i 用面向对象的思想继承和发扬了r p c ,r p c 的主要 缺点就是不能用于面向对象的分布式应用系统中。r m i 与传统的r p c 的一个重要 区别是r m i 是完全面对对象模型,即允许以任意的对象作为远程方法调用的参数 和返回值,而传统的r p c 只能以基本的数据类型作为参数和返回值。( 对象作为 参数或返回值隐含着完整的参数引用在网络中传输所以以参数或返回值的形式 存在的对象必须被序列化) 。r m i 提供的纯j a v a 的分布式应用系统的开发,也 提供了对象之间直接通信的机制,一个对象可以调用其它远程对象中的方法。用 r m i 的一个好处就是网络的透明性。在网络中调用远程对象方法与其它任何j a v a 对象中调用方法一样。事实上,r m i 将所调用的方法完整的标示为本地对象或是 远程对象,这叫本地远程透明性。但其实现起来并不是那么简单。为了标示所 调用的对象是远程的,r m i 以某种方式模拟一个本地对象,这个本地对象叫做存 根程序( s t u b ) ,负责接受方法的本地调用并将这些方法的调用委派给实际对 基于移动a g e n t 的分布式资源发现研究与设计 象的执行代码,而这些代码可能位于网络的另一端。同样远程对象本身也不担心 网络的问题,与客户在根程序上调用一样,远程对象需要接收来自程序框架 ( s k e l e t o n ) 的调用,根程序对于客户是本地的,程序框架对远程对象也是本地 的。程序框架负责接收通过网络发来的调用,并将这些调用分配给远程对象的执 行代码,如图卜3 所示。 固阿 :; :避拉捷。 咤。摹,字 图2 4a g e n t 服务环境结构 最底层是传输层,用于传输移动a g e n t 、数据和信息。包括网络协议a p i 、 电子邮件a p t 等。 第二层是a g e n t 服务环境的执行引擎,它跟踪每个运行的a g e n t 的状态, 管理a g e n t 的运行。包括a g e n t 的启动、挂起、恢复、终止。验证移动来的a g e n t 的身份、捕获要移动出的a g e n t 的状态、用适当的传输方式( a t p ) 将a g e n t 传 送到目的地。执行引擎支持a g e n t 内部状态的非易失存贮,以便a g e n t 需要时备 份自己的内部状态。当系统发生故障时,可以从这些非易失的存储中恢复a g e n t 的运行。执行引擎也提供有效的名字空间,在此空间中,每个a g e n t 都有自己唯 的名字及相应的通信地址,它们利用名字进行有效的通信。 第三层是a g e n t 的a p i ,它是a g e n t 服务环境与a g e n t 的唯一接口。这一层 提供了许多a g e n t 的特性操作,移动a g e n t 利用它们来完成分布任务。这一层完 全由执行引擎支持,体现了移动a g e n t 系统的能力。例如移动a g e n t 向a g e n t 基于移动a g e n t 的分布式资源发现研究与设计 服务环境注册、获得唯一的标示。( 只有注册的a g e n t 才能获得系统提供的各种 服务) 。当a g e n t 欲移动到另一台机器上时,a g e n t 也要调用它的a p i 函数。这 个函数捕获执行a g e n t 的完整的状态映像,并将其发送到目的机。目的机上的 a g e n t 服务环境将状态映像装入,并使移动a g e n t 从挂起点继续执行。当移动 a g e n t 的状态映像成功的捕获、传输和在目的机上恢复执行后,那么原来的移动 a g e n t 将终止在本地机上的运行。另外,在这一层中还有其它的一些函数。 第四层是语言解释器。由于移动a g e n t 的移动性和安全性约束,这一层往往 采用解释器工作方式。解释器通常是由解释器本身、安全模块( 用于避免对系统 的非授权访问) 、状态模块和系统核心接口( 提供对系统核心的访问) 组成。 虽高层就是一些运行在a g e n t 服务环境的一些移动a g e n t 。 a g e n t 信息服务中心就是一个通信服务器,其专门用来处理有关a g e n t 的通 信的信息。每一个a g e n t 都必须在启动时在信息服务中心注册,并在退出时删除 自己的信息,在需要其它a g e n t 信息时向服务器查询。这样在多a g e n t 系统中保 存一份动态的、相对准确的a g e n t 信息,而且各个a g e n t 的地址、能力等都可以 任意改变而不会引起紊乱。 停靠服务器实际上就是一个长期处于活动状态的服务环境的变体。其为那些 需要返回原服务环境但其原服务环境没有在线的移动a g e n t 提供l 临时的停靠点。 当停靠服务器检测到原服务环境所在的机器重新连接到网络上时,停靠服务器将 移动a g e n t 发送回去。 2 2 移动a g e n t 系统的工作流程 移动a g e n t 系统的工作流程图如下: ( 1 ) 第一步是创建a g e n t ,进行其内部状态的初始化,知识库的初始化。 并为其指定任务。 ( 2 ) a g e n t 的总控模块调用旅行计划进行路由选择。a g e n t 请求信息服务 器提供主机地址,根据任务情况形成目标主机列表。 ( 3 ) a g e n t 总控模块调用安全模块对a g e n t 进行加密与数字签名。 ( 4 ) 根据旅行计划解释模式,a g e n t 用通信模块告诉本地服务环境,自己 想请求移动到第一个目标主机或者其它目的地。本地服务环境利用a t p 协议将 a g e n t 通过网络移动到目标主机。 基于移动a g e n t 的分布式资源发现研究与设计 图2 5 移动a g e n t 工作流程图 ( 5 ) 目标主机通过服务环境的a t p 模块接收a g e n t ,并交给“服务与管理 模块”,该模块激活“安全控制模块”对a g e n t 进行身份验证。若身份验证成功 进行下一步,不成功则通知原主机后删除。 ( 6 ) a g e n t 在服务与管理模块的监控下在主机上运行。需要什么服务就通 过通信模块与服务环境或其它的a g e n t 通信,以调用服务环境下的服务或与其它 a g e n t 合作共同完成任务。 ( 7 ) a g e n t 在目标主机上运行完毕,根据任务目标、旅行计划和己经完成 的任务决定下一步的行动:若任务完成或旅行计划条目为空,则返回原主机,或 者进行旅行计划更新。否则根据旅行计划选择要移动的下一个目标主机,执行下 步。 ( 8 ) a g e n t 保存当前的工作结果与状态后,通过通信模块向当前服务环境 发出移动到下一目标主机的请求。当前服务环境通过a i p 把a g e n t 移动到下一目 标主机。 ( 9 ) a g e n t 到达新的目标主机后恢复状态,重新进入执行状态。重复执行 第6 、7 步。 ( i 0 ) a g e n t 返回源主机。在其返回前要先判断网络的连通性,若连通并且 源端的服务环境开启,则a g e n t 可以直接返回。否则,就要首先将a g e n t 移动到 停靠服务器上。若a g e n t 移动到停靠服务器上,停靠服务器会将a g e n t 部分或全 部从内存中卸载到硬盘l ,并代替a g e n t 监视原主机。一旦条件具备,就激活 基于移动a g e n t 的分布式资源发现研究与设计 a g e n t 并将它传送回去。 ( i1 ) a g e n t 到达原主机后,将运行结果提交给用户,便进入终止态,结束 该任务周期。 2 3 移动a g e n t 系统关键技术 2 3 1 移动机制的实现 移动a g e n t 系统中移动机制是系统的关键。j a v a 语言作为一种跨平台、适 于分布式网络环境的面向对象程序设计语言,由于其良好的可移植性被广泛应用 于移动a g e n t 平台和a g e n t 开发语言。这里用j a v a 语言的特性来说明移动a g e n t 系统的移动机制。在j a v a 中,a g e n t 表现为类的对象形式,因此移动a g e n t 的 移动是通过类对象的迁移来实现的。j a v a 中与对象迁移相关的技术主要包括: 对象序列化技术( 可以解决对象状态的传送问题) 和类装入技术( 可以解决代码 传送问题) 。 2 3 1 1 对象序列化技术 对象序列化技术:这种技术实现了对象与字节流形式的相互转化。对象序列 化包括两个相反的过程:序列化与反序列化。序列化过程将对象转化为字节流, 根据对象所属类的结构在字节流中记录对象的状态值( 即成员变量的值) 、对象 所属类的名称、对象的成员变量所属类的名称以及其它相关信息。反序列化过程 则是序列化的逆过程,根据字节流中的信息恢复对象并还原其状态。实现序列化 机制的相关类如下: j a v a i o o b j e c t o u t p u t s t r e a m 对象序列化类。它的w r i t e o b j e c t 方法可 以将对象写入字节流中。 j a v a i o o b j e c t l n p u t s t r e a m 对象反序列化类。它的r e a d o b j e c t 方法从 字节流中恢复对象。 j a v a o b j e c t s t r 舳加c l a s s 提供字节流中各个对象所属类的信息,如使用它 的g e t n a m e 方法可以得到流指针指向的对象所属的类的名称。 在r p c 中,只有数据移动,数据是以调用参数和返回结果的形式在网络上传 输,计算代码在此过程中不移动。 j a v aa p p l e t 能够在服务器与客户机之间下 载,是一种代码移动方式,但这种移动方式不是自主的,而且计算缺乏连续性, 不会在网络上自主的移动。j a v a 的对象序列化能够实现对象的传输,但它需要 一定的条件,首先要实现j a v a i o s e r i a l i z a b l e 和j a v a i o e x t e r n a l i z a b l e 接口,为该类添加序列化的特性。然后用o b j e c t o u t p u t s t r e a m 类中w r i t e o b j e c t 基于移动a g e n t 的分布式资源发现研究与设计 方法向数据流中写入一个对象。写入的处理过程检查该对象的每个属性与方法, 创建有关该类的一个表达式,表达式中包含了各个属性与属性值的信息,及关于 该类的派生层次。一台远程主机通过0 b j e c t i n p u t s t r e a m 类中的r e a d o b j e c t 方 法,从数据流中读出表达式。r e a d o b j e c t 方法查看本地主机的类的路径,如果 在本地有相对应的类就加载相应于表达式中的类。由此可见,对象序列化要有效 运作,要求本地主机和远程主机都必须有可序列化对象的完全相同的版本。否则, 就会产生异常错误。我们要实现a g e n t 在网络中自主漫游,还必须解决自定义的 a g e n t 类即j a v a 字节码( c l a s s ) 的传输问题。因此必须研究a g e n t 的动态 类装载。即远程主机没有相应的a g e n t 类的字节码的情况。 2 3 1 2 类装载器( a g e n i c i a s s l o a d e r ) 对象是某个类的实例,类是一组实体共同属性和方法的抽象定义。在移动 a g e n t 系统中,某个a g e n t 能够正常的运行于某个服务环境中,服务环境所在的 这台主机必须具有该a g e n t 的类。无论是a g e n t 的创建还是移动到远程主机,都 要求找到a g e n t 的类。 因此,实现移动a g e n t 系统,要求提供一种机制来动态装载类的字节码,或 者把类字节码随同a g e n t 一起移动。 一个典型的j a v a 执行过程包括五部分,即编辑、编译、载入、验证、执行。 j a v a 的编译器将( j a v a ) 文件编译成字节码格式的c l a s s 文件,存入本地磁 盘中。j a v a 解释器首先调用类装载器将c l a s s 文件装入内存,经验证后,解释 执行字节码。j a v a 默认的类装载器是“系统类装载器”s y s t e m c l a s s l o a d e r 。它 规定从本地主机的文件系统中装载类( 即从环境变量c l a s s p a t h 指定的目录中查 找并载入c l a s s 文件。如果没有发现所需的类文件,就抛出一个错误 n o t f o u n d g l a s s 。对移动a g e n t 来说,一个a g e n t 的类字节码是运行时动态确定 的,因此在需要时应动态装载。这种动态装载可能发生在a g e n t 的运行过程中。 j a v a 提供了一个特殊的类c l a s s l o a d e r ,它是个抽象类,各种各样的类装 载器都是从它派生出来的,包括s y s t e m c l a s s l o a d e r 。定义自己的类装载器关键 是重载c l a s s l o a d e r 的方法c l a s s l o a d e r ( ) 。某个类名的字节码装入字节数组 d a t a 中。这些字节码包括在c l a s s 文件中。c l a s s 文件可能在本地主机的文件 系统中,存放在c l a s s p a t h 指定的目录中或用户自己的目录中。c l a s s 文件还有 可能在远程主机上。因此,如果类不在本地主机上,a g e n t 的类装载器 a g e n t c l a s s l o a d e r 必须能够从网络上下载类。当移动a g e n t 服务环境需要a g e n t 的某个类时,它以类名为参数调用a g e n t c l a s s l o a d e r 。 a g e n t c l a s s l o a d e r 的方法调用c 】a s s h o a d e r ( n a m e ) ,它首先调用 f jn d s y s t e m c l a s s ( n a m e ) 检查该类是否是本地系统类( s y s t e m c l a s s ) ,如果是 基于移动a g e n t 的分布式资源发现研究与设计 则立即返回。系统类( s y s t e m c l a s s ) 放在环境变量c l a s s p a t h 指定的本地文件 系统的目录中,由j a v a 默认系统类装载器装入。如果不是系统类,则查看一下 c a c h e 表中是否有相应类的定义。若有该类,这可能是a g e n t c l a s s l o a d e r 曾经 装载过的,这样可以避免重复从网络上下载该类。如果在c a c h e 表中没有发现该 类的定义,那么就调用l o a d c l a s s d a t a ( n a m e ) 方法从类所在的地址取类字节码 放在字节数组d a t a 中。类的定位可以用u r l 来表示。然后再调用方法 d e f i n e c l a s s 0 把字节数组中的数据转化为类c l a s s 的实例c 。把类的定义放在 c a c h e 表中,以便将来再次装载同一类时减少不必要的下载。a g e n t c l a s s l o a d e r 完成类的装载后,系统就可以使用该类了。 有两种传输方案实现类的传输,一是a g e n t 移动到远程主机,然后按需下载 所需的类。一是类的字节码随同a g e n t 一起移动。这两种方法都可以,而且可以 根据情况联合使用。 a g e n t 的运行需要它的类的支持,因此有必要分清哪些类应传递,哪些类没 有必要传递而仍留在本地。如果a g e n t 所需的类中的某一个没有被传递过来, a g e n t 的执行也会失败。 a g e n t 所涉及到的j a v a 类按照它们的来源和管理方式可分为以下四类: ( 1 ) a r c h i v e dc l a s s e s ( 档案类) :j a r 保存压缩过的j a v a 包、类和资源, 是为了减少网络下载时间而使用的一种技术与方法。放在j a r 文件中的类称为 a r c h i r e dc l a s s e s 。 ( 2 ) c o d e b a s ec l a s s e s :c o d e b a s e 指定基本的u r l ,必须相对这个基本的 u r l 来给类定义。凡是从c o d e b a s e 所指的u r l 下载的类,称为c o d e b a s ec l a s s e s 。 ( 3 ) s y s t e mc l a s s e s ( 系统类) :是本地类,它们通常放在环境变量 c l a s s p a t h 指定的目录下,没有c o d e b a s e 属性。需要时从c l a s s p a t h 下装载。 ( 4 ) 其它类:其它来源的类包括已经被另外的a g e n t 装载到内存c a c h e 表中的类。 如果类在a g e n t 基本的u r l 指定的j a r 文件中,那么它的整个字节码就简单 的随同a g e n t 的移动一起移动。如果没有指定j a r 文件,那么就只能从基本u r l ( c o d e b a s e ) 中装载( 包括远程传输) 所需的类( c o d e b a s ec l a s s e s ) 。系统类 不需要传输,直接从c l a s s p a t h 中装载。需要被传输的类的集合是在类的序列化 过程中确定的。即在序列化处理过程中所涉及到的所有对象的类都被收集起来然 后传输出去。当a g e n t 到达目标主机时,数据流中的类字节码就被 a g e n t c l a s s l o a d e r 装载入内存,用以重构a g e n t 对象。 为了实现a g e n t 的可序列化操作,a g e n t 类必须实现j a v a i o s e r i a li z a b l e 或j a v a i 0 e x t e r n a l i z a b l e 接口。除此之外,还有一些细节需要考虑。 基于移动a g e n t 的分布式资源发现研究与设计 首先为了促使对象构造过程的产生,a g e n t 类必须包含一个缺省的或不带参 数的构造方法。否则应用程序就不能基于最初的对象表达式,产生一个对象的实 例。 其次,有几个字符修饰符会影响一个字段是否能够在两台主机之间进行变 化,或需要写入宇段时进行变化。例如,s t a t i c 声明的字段是类属性或类方法, 它们是所有该类实例对象所共享的,只存在一个拷贝。序列化过程并不将s t a t i c 字段写入数据流中。 最后,如果一个对象包含另一个对象如s t r i n g 型对象,那么序列化机制也 必须将这个s t r i n g 型对象也写入流中。因此,作为字段的对象也必须实现序列 化接口,否则,序列化过程中因遇到一个不可序列化的对象而失效。 2 3 2 移动a g e n t 的迁移机制 在移动a g e n t 中,迁移机制是其基础核心技术之一。迁移机制主要包括移动 信息的表达、迁移粒度的确定等内容。a g e n t 的移动方式分别有命令方式和计划 方式。在命令方式下,a g e n t 系统提供一条移动命令,a g e n t 通过调用这条命令, 并附加定的参数如目的地地址,可以随时移动到任何目的地。这种方法灵活性 高、能力强,可以表达任何移动要求。另外一种方式就是计划方式,这种方法是 通过一个移动计划来反映移动要求,a g e n t 将按照移动计划移动,这样,a g e n t 的移动信息比较清楚明了,便于理解和管理。如i b ma g l e t 移动a g e n t 平台提 出了包含简单目的地址列表的i t i n e r a r y 模型,每个目的地描述了a g e n t 的移 动目标位置及所需执行的动作,但是简单的目的地列表无法方便的表达用户的各 种不同的迁移要求。 设计上考虑,还可以用一种以旅行计划模型为核心的结构化迁移机制,并抽 取出顺序、选择和并发三种基本迁移模式,但是在具体的实践过程中发现这三种 模式不能方便的表达各种迁移要求。可以在保持原有风格的同时,对旅行计划结 构和旅行模式进行进一步的扩充和修改,提高了其表达能力和灵活性。这种新型 结构化的迁移机制的主要特点是采用旅行计划的形式把移动信息从移动a g e n t 功能体中分离出来,可以实现动态装配,并用结构化的方法来描述旅行计划。 2 32 1 功能体和移动信息的结构分离 移动a g e n t 所面临的移动网络环境具有不确定性,用户事先无法知道运行时 刻的情况,这种不确定性给移动a g e n t 的设计和编程带来了很大的困难。采用结 构化的旅行计划模型把移动a g e n t 的移动信息从功能体中分离出来,用户可以根 据实际情况对它们分别进行设计,在设计功能体时可以不用考虑当前网络的实际 情况,在设计移动信息时也不用考虑功能体的具体实现,这样有效的降低了设计 9 基于移动a g e n t 的分布式资源发现研究与设计 和编写移动a g e n t 的复杂性,也便于用户对移动a g e n t 的调试和管理。从更深层 次的考虑,旅行计划与功能体的分离可以实现旅行计划与功能体的动态装配。用 户可以事先完成对移动a g e n t 的功能开发,然后在运行时根据当前网络的实际情 况制定一个旅行计划,或者从己有的旅行计划中选择一个最贴切实际的旅行计 划。动态装配较大的提高了对功能体和旅行计划的复用程度,用户可以通过对己 有的功能体和旅行计划稍加调整来产生一个新的移动a g e n t 。 2 3 2 2 结构化的旅行计划 旅行计划由旅行模式和若干个旅行步组成,一个旅行步说明了一站旅行要 求,旅行模式是对这若干个旅行步的解释方法。可以采用结构的方式来描述一个 旅行步,同时对旅行步的解释也按照固定的规程进行,一旦旅行计划制定完成后, 就不可以随便改变,只能在旅行计划全部解释完之后才能修改和调整原来的旅行 计划。 一个旅行步包含了移动a g e n t 一次移动所需的所有信息,包括目标地址、在 目标结点上应该完成的任务等。我们可采用图2 6 所示的结构来描述旅行步信 息。 l 蒎;f 亍步计翔目标节点 入口努法 旅行计划受新名字说明 i l pl |g耕 了貅m e 图2 - 6 旅行步计划 图中各个因子的含义如下: ( 1 ) p 是旅行步控制,只有当p 返回为真时,旅行步在旅行过程中才会被 解释执行。 ( 2 ) h 表示这一旅行步的目标结点地址。 ( 3 ) m 为入口方法,描述了用户要完成的任务。在移动a g e n t 系统中支持 多入口的移动,用户可以指定不同的入口。 ( 4 ) g 是对入口方法m 的前置控制,g 方法主要是对环境以及移动a g e n t 本身状态进行判断,只有当g 方法返回为真
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 信息科招聘考试题及答案
- DB65-T 4853-2024 自然灾害应急指挥体系建设规范
- 养猪专业试题及答案详解
- 2025年井下防突工考试题及答案
- 内外科疾患康复学习题及答案
- 排球专业理论试题及答案
- 2025年煤矿探放水考试题模拟考试题库及在线模拟考试及答案
- 2025预防艾滋病、梅毒和乙肝母婴传播技术培训考试练习题及答案
- (2025)特种设备安全管理员考试题库及参考答案
- 员工培训计划制定工具新员工入职培训内容规划版
- 2025年人社局编外考试题库及答案
- 木制品厂安全生产培训课件
- 电工四级考试理论题库及答案
- 世纪英才教程课件
- 小学科学新教科版三年级上册全册教案(2025秋新版)
- 婴幼儿发展引导员技能竞赛考试题库(含答案)
- 小学生航空航天知识题库及答案
- 统编版八年级上册道德与法治第三课 共建网络美好家园 课件
- 企业数据安全管理制度与操作规程
- 2025年合肥市公安局第一批招聘430名警务辅助人员笔试模拟试题带答案详解
- 2025年综合基础知识题库(含答案)
评论
0/150
提交评论