基于Internet的移动agent技术陶先平吕建计算机软件研究所计算机科学与技术系,南京大学ICS:@ics.nju.edu.cn内容•软件agent技术–移动agent技术–智能agent技术•Aglets程序设计•软件agent技术应用研究研究背景计算平台软件及软件技术计算机应用决定软件形态和基本技术促进软件技术的发展适应平台特性适应应用特性研究背景---软件方法学的演化•结构化方法学–奠基性工作:thethesisofE.W.Dijkstra–“GoToStatementConsideredHarmful”CommunicationsoftheACM,Vol.11,No.3,March1968,pp.147-148研究背景---软件方法学的演化•基本原则–功能为中心、自顶向下、逐步分解–结构化程序组织•单入口方法(函数、功能)•三种典型控制流–顺序(sequential),测试(test)和循环(iteration)»From结构化程序设计E.W.Dijkstra研究背景---软件方法学的演化•面向对象方法学–Cristen.NygaardandhisSimulalanguage–代表性工作:•OO语言:–Smalltalk,Eiffel,Java•OO方法和工具研究背景---软件方法学的演化•基本思想–功能抽象+数据抽象–以对象为中心–程序构造机制•类及其继承–运行实体•对象研究背景--分布计算模式•Internet平台的基本特征–资源链接的开放性和动态性–使用方式的个性化和灵活性–网络连接环境的不可预测性•新一代网络计算模式–?研究背景--分布计算模式•现有分布式程序设计方法–分布对象技术成为主流–Client/Server模式成为通用模式–例:CORBA,COM/DCOM–新一代网络计算模式:Client/Server模式?研究背景--分布计算模式•Client/Server计算模式:研究背景--分布计算模式•Client/Server模式的不足–静态结构缺乏网络适应性–功能固化缺乏使用个性化–功能固定、数据移动而网络高负载–RPC不具有网络协同的适应性•问题的症结:–Client/Server模式:一种分布对象的静态配置方案研究背景--分布计算模式•思考:–“SillyObject”•软件结构静态VS网络适应性•服务器功能固化VS使用个性化•功能固定、数据移动而网络高负载•RPC不具有网络协同的适应性–“SillyObject”=》“SmartObject”?•MobileAgent:akindofsmartsoftwareentity研究背景--分布计算模式•移动agent计算模式计算模式-移动agent迁移Agent出发点Agent派遣Agent计算并交互Agent计算状态恢复并继续计算Agent计算状态封装并迁移Agent继续迁移AgentAgent携带计算结果返回Agent计算模式-移动agent迁移Agent出发点Agent派遣Agent计算并交互Agent计算状态恢复并继续计算Agent计算状态封装并迁移AgentAgent继续迁移AgentAgent携带计算结果返回计算模式-移动agent•移动agent是一个运行于开放、动态网络环境中的封装良好之计算实体,它代表用户自主地在网络上移动,完成指定的任务•移动agent由数据、操作和行为规则封装而成•具有自主性、移动性、协作性和安全性等特性研究背景--分布计算模式•例1:ServerDatasetTextdocuments,numericaldata,etc.Client/ProxyClient/ProxyServerDataset研究背景--分布计算模式DatasetDatasetDatasetDynamicallyselectedproxysite研究背景--分布计算模式•现象–功能移动而数据不动•结论–有效节省带宽,降低对网络的可用性要求研究背景--分布计算模式•例2:研究背景--分布计算模式•结论:–通过“派送”agent(个性化服务),实现服务器的功能动态剪裁–强于Client/Server结构的功能僵化和裁剪的受限。研究背景--分布计算模式Chatserver(a“reflector”)Movetobetterlocation•例3:研究背景--分布计算模式•结论:–根据网络状况和具体的应用特性,可以选择比C/S结构更好的程序分布和运行方式–具有更好的网络适应性研究背景--分布计算模式•例4:RPC共享空间如何互操作?Agent封装Agent封装研究背景--分布计算模式RPC共享空间•续例4Agent世界研究背景--分布计算模式•结论:–Agent具有封装私有特征的能力,具有灵活的协调能力–“协同可编程”研究背景---软件方法学的演化•AgentOrientedProgramming?–thefuture?计算模式-技术特点•示意图LocalityofReferencesMobilityofFunction&ComputationAbilityofRepresentation计算模式-技术特点•LocalityOfReferences•MobilityofFunction(code)•MobilityofComputation•Abilityofrepresentation•Sensibilityofnetworkenvironment计算模式-应用优势•“战术”优势–性能优势:网络负载下降《=》交互的局部性–潜在应用:•“Longleg”applications•Massivedatapre-process–分析:•该优势并非绝对:–移动带来网络开销–运行支撑带来节点开销•合理选择应用场景计算模式-应用优势•“战略”优势–程序结构的灵活性–网络环境的适应性•潜在应用–支持移动设备和嵌入式设备《―》间断操作能力–服务器定制《―》服务个性化–遗产软件利用《―》封装能力–网络资源协同《―》环境感知能力•分析:–综合考虑技术的成熟性和网络的安全保障系统支撑执行创建冻结迁移消亡中止派发恢复激活撤销计算模式-移动agent生命周期•创建状态–给定移动agent名及身份–确定功能语义和迁移语义–需求•移动agent环境提供一个良好的用户使用环境•一套丰富的移动agent应用程序编程接口计算模式-移动agent生命周期•执行状态–agent在执行期间代替用户消耗各类资源,开展协作,最终完成主要的功能–需求•利用解释型语言,解决跨平台问题。因此,需要获得该种语言解释器的运行支撑•获得底层运行支撑环境提供的迁移、通信、安全、资源访问等支援计算模式-移动agent生命周期•冻结状态:–移动的agent是一个计算状态和计算上下文的移动,因此,agent移动前必须暂时中止agent的计算,进行运行状态和运行上下文的封装,此时,移动agent的状态将转换为冻结状态。–需求:•完成agent执行的冻结•应对所有处于冻结状态的agent进行协作信息的暂存和缓冲计算模式-移动agent生命周期•迁移状态–是一个移动agent按照迁移信息进行物理转移的过程中所处的状态–需求:•借助网络和操作系统的数据传输能力•协作信息进行暂存和缓冲和转发•要求环境进行必要的容错处理•agent对象类的代码迁移计算模式-移动agent生命周期•消亡状态–两种方式•按照agent的功能语义和迁移语义,由系统主动撤销•用户在线发布撤销指令,由运行环境强行完成agent的撤销系统支撑-总体设计迁移通信安全agent运行环境…………JavaRuntimeEnvironment1.2.2OSagent管理用户环境容错系统支撑-agent设计•迁移语义(信息):–Agent具有自主迁移的能力–移动agent必须携带有反映或指导这些迁移的具体算法与信息(迁移语义信息)–通常:•迁移语义和功能语义混杂–类似goto语句•迁移语义和功能语义分离系统支撑-迁移机制classMakeAppointmentextendsAgent{….;publicvoidstart(){money=1000;migrateTo(newLocationName(“bestFlowers));buyFlowers(money);migrateTo(newLocationName(“ModernArts));buyTickets(money);print(money);}}ClassMakeAppointmentextandsAgent{……;voidbuyFlowers(Floatwallet){};voidbuyTicket(floatmallet){};publicvoidstart(){money=1000;itinerary=newItinerary((“bestFlowers”,buyFlowers,money),(“ModernArts”,buyTicket,money));};}系统支撑-结构化迁移机制•非结构化形式publicvoidstart(){...migrateTo(newLocationName(“somewhere));...}–问题•编程复杂,难理解,难维护,难适应系统支撑-结构化迁移机制•1,封装:旅行计划•2,分离–agent体和旅行计划分离旅行步1旅行步2ItineraryFun1(…){…};Fun2(…){…};…Agent体系统支撑-结构化迁移机制•3,装配Itinerary1Itinerary2ItineraryiItineraryLibraryAssemblyAgentBody1AgentBody2AgentBodyiAgentBodyLibrary系统支撑-结构化迁移机制•结构化机制特点:–能力足够–结构清晰–易维护–能复用系统支撑-迁移机制•系统实现提出移动申请停止agent运行收集agent状态发送状态数据恢复agent运行恢复agent状态接收状态数据下一移动申请系统支撑-迁移机制•强迁移和弱迁移–强迁移:•Agent代码•上下文•执行状态•数据状态–弱迁移:•Agent代码•数据状态系统支撑-结构化迁移机制•系统实现创建旅行计划库agent功能库执行用户任务Mogent执行环境移动下一步地址计划更新没有下一站消亡没有新旅行计划装配解释旅行计划等待就绪有新旅行计划网络传输通信框架•Agent协作–软件agent为大规模网络异构应用系统提供了一种新的计算模式–移动agent本质上是代表用户在网上寻找合作伙伴,进行交互并最终完成用户指派的任务的一个计算实体–Agent之间开展的协作是自主、漫游的agent的本质需求通信框架•协作的技术需求:–功能互通•陌生agent之间如何相互“认识”并深入了解对方的功能,以便开展有效协作–协作联盟及模式•协作的方式、方法–通信机制•具体的信息/知识交换通信框架•分层多模式通信框架TCP/UDP等OS通信层直接访问模式间接访问模式KQML/XML移动agent移动agent系统支撑-层次式通信框架•设计需求–名设计–透明寻址–通信模式–可靠通信系统支撑-agent设计•名设计需求:–命名唯一性•Internet范围内•保证唯一性的两种方式:–静态唯一性、动态唯一性–支持寻址透明性•随机的移动带来突出的寻址问题•通常:中间机构、名解析–支持用户使用友善性•支持按用户名使用通信框架•通信模式–Meeting……协同需求通信框架•通信模式–PeertoPeer(1)……通信框架•通信模式–PeertoPeer(2)建立连接MessagePassing通信框架AA:send(B,M)•透明寻址B?系统支撑-层次式通信框架•通信可靠性研究的必要性:–移动agent支撑环境可能会成为未来分布计算平台的通用支撑环境–Agent协同是agent的天然特性–Agent通信是完成agent协同的必须手段–Agent的自主移动必定会造成agent通信的失效现象系统支撑-层次式通信框架•通信可靠性