[收稿日期] 2006-07-17;修回日期 2006-08-31[基金项目] 高等学校博士学科点专项科研基金资助项目(20020288024),长江三角洲重大科技联合攻关资助项目(BE2004400)[作者简介] 张 (1981-)男,江苏宿迁市人,南京理工大学计算机科学与技术学院博士研究生,主要研究方向为协同虚拟现实、应用层组播基于网格服务的协同虚拟环境张 ,吴慧中,肖 亮(南京理工大学计算机科学与技术学院,南京 210094)[摘要] 由于计算资源、网络资源以及现有技术的限制,协同虚拟环境的扩展性问题至今没有得到很好的解决。针对这一问题,讨论了大规模协同虚拟环境的通信模式,提出了一个基于开放网格服务结构OGSA的协同虚拟环境体系结构,利用网格服务封装将系统功能实现与具体的物理资源相分离以达到系统可扩展的目的。另外,还重点研究了影响协同虚拟环境扩展性的关键技术———虚拟世界管理服务以及相关的支撑服务。最后基于GlobusToolkit开发了一个协同虚拟环境示例程序,验证所提出的框架和方法的可行性。[关键词] 协同虚拟环境;开放网格服务结构;虚拟世界管理;扩展性[中图分类号] TP391 [文献标识码] A [文章编号] 1009-1742(2007)11-0157-061 引言 随着虚拟现实技术特别是分布式虚拟环境技术的发展,人们自然地联想到用虚拟现实技术来构建一个计算机支持的协同工作环境(CSCW,computersupportcooperativework),使得参与协作的人能够更加融洽地协作,这种多人共享并协同工作的分布式虚拟环境称为协同虚拟环境(CVE,collaborativevirtualenvironment),又称为协同虚拟现实(CVR,collaborativevirtualreality)。CVE的研究开发工作可以追溯到20世纪80年代初,近年来网络技术的飞速发展更进一步地推进了CVE的研究和开发。目前,CVE系统已经在军事仿真、娱乐、教育和医疗等诸多领域得到了应用[1,2],但是由于CVE系统本身的复杂性和现有支撑技术的限制,构建一个规模可扩展、功能可扩充、高效的异构型CVE系统仍然面临着许多挑战。通过对CVE应用需求的分析,可以得知限制CVE系统扩展性的关键问题在于CVE所需各类资源(包括硬件资源和软件资源)的不足或异构。近年来,继万维网之后出现了一种面向资源共享的新型网络计算平台———网格计算(gridcomputing),网格计算的出现为解决影响CVE系统扩展性的资源共享问题提供了新的思路。当前网格计算领域的主流体系结构是开放网格服务体系结构OGSA(opengridservicesarchitecture)[3],它结合了Globus标准和面向商业应用的Web服务,把网格计算从科学与工程计算应用扩展到更广泛的以分布式系统服务集成为主要特征的商业应用领域。网格服务是OGSA中的基本概念,它是一种实现了标准接口、行为和约定的Web服务,通过接口提供服务发现、动态服务创建、服务生命周期管理、消息订阅和通知发送等功能。OGSA以服务为中心,把网格中的资源都包装成服务,隐藏各种资源的异构性,用服务这种统一的实体提供共享接口。笔者结合OGSA对CVE系统进行研究,以期利用网格服务来解决CVE系统的扩展性问题。2 协同虚拟环境通信模式 通信模式是影响CVE扩展性的首要问题[4~6],目前CVE的通信模式主要有对等模式(peer唱to唱peer)和客户桙服务器模式(client唱server)。对等模式允许网上任意两节点直接通信(如NPSNET和MASSIVE等系统),因此消息延迟小,每个节点完全自治,不会因为一个节点崩溃而影响整个系统;但是对等模式的主要问题是扩充性不好,通常节点需要存储每个实7512007年第9卷第11期体的表示、处理每个实体的消息、同步每个实体的状态,当插入一个新的节点时,维护整个世界状态的一致性比较困难。客户桙服务器模式则要求客户之间的通信必须通过服务器,即客户首先将消息发送到服务器,然后再由服务器将其发送到其他客户(如SPLINE和RING等系统)。客户桙服务器模式将负载从客户端转移到服务器上,便于保持整个世界的一致性;但是这种模式下服务器也容易成为瓶颈,并且客户之间的消息延迟较大。鉴于对等模式和客户桙服务器模式都有各自的局限,并且考虑到大规模CVE环境中数据通信的多样性,采用混合模式作为CVE的通信模式。系统中部署多个服务器,每个服务器负责管理一组客户机,服务器之间采用对等模式进行通信。对于需要集中控制的一致性管理、并发控制、资源管理等功能都配置在服务器上,这时发送方的客户首先将消息传送到服务器,经过处理后,再由服务器转发到各个接收端;客户间不需要集中控制的消息(如实体状态更新消息、客户之间的音频视频数据)则直接通过客户之间的端到端链路进行。采用多服务器的主要目的是为了共享多台服务器的资源以确保CVE系统的扩展性,但多服务器之间的异构资源互联、动态资源分配及安全问题尚缺乏一个有效的分布式计算平台。OGSA把用通信手段连接起来的资源无缝集成为一个有机的整体,它给用户提供一种基于互联网的新型计算平台,在这个平台上对客户的请求和提供资源的能力之间进行合理的匹配,为用户的请求选择合适的资源服务。可以看出,OGSA是支持多服务器CVE系统的天然框架,因此,采用网格服务对多服务器CVE的资源进行封装,由网格服务来解决多服务器之间的异构资源互联、动态资源分配及安全等问题。基于网格的混合通信模式如图1所示,客户端程序与部署在多服务器上的网格服务进行交互,不关心网格服务所占用的具体物理资源。3 基于网格的协同虚拟环境体系结构 结合开放网格服务结构OGSA,提出了一个基于网格服务的CVE体系结构(见图2),该结构分为4个层次:资源层,互联网协议层,网格支撑层,CVE服务层。1)资源层 资源层是系统使用到的所有资源的聚合,包括存在于网格环境中的所有计算设备、存储设备、仿真设备、网络资源等硬件资源以及各种文件图1 基于网格的混合通信模式Fig畅1 Mixingcommunicationmodelbasedongrid图2 基于网格服务的CVE体系结构Fig畅2 CVEarchitecturebasedongridservice系统和数据库系统等软件资源。CVE是为具体应用领域服务的,因此除了通用资源外还包括针对于具体应用的资源,如支持SBA应用的仿真模型库、知识库、国防桙工业资源库、协同设计和仿真工具等。另一方面,CVE系统本身还包含一些数据资源如场景数据、对象数据、多媒体数据以及用户认证信息和访问控制信息等。2)互联网协议层 互联网为构建大规模分布式应用提供了天然的网络平台,互联网上存在一系列不同层次的标准协议包括IP,TCP,UDP,HTTP,FTP和SMTP等,这些协议将分布于各地的资源互联起来,是在互联网上构建分布式应用的通信基础。3)网格支撑层 网格支撑层包括OGSA的主要组件:开放网格服务基础结构、OGSA服务和OGSA模式。这些组件提供了构造网格服务的基本构造块(包括描述和发现服务属性、创建服务实例、管理服务生命期、管理服务组,以及发布和订阅通知的标准851中国工程科学接口和相关行为)和一些相关服务(包括网格信息管理服务、网格资源管理服务、网格数据管理服务、网格作业管理服务以及网格通信和安全服务等)。网格支撑层建立在互联网协议层之上,以互联网协议中的通信、路由等功能为基础,向上为具体应用的网格服务提供网格服务容器环境。4)CVE服务层 CVE服务层建立在网格支撑层之上,是构建可扩展CVE系统的关键所在。这一层中将CVE系统的服务器端功能封装为网格服务,主要包括:a畅资源管理服务:在OGSA框架下一切CVE资源都能封装成网格服务,资源管理服务利用网格服务机制实现资源服务的注册、查找、定位、访问和删除。b畅虚拟世界管理服务:大规模CVE的虚拟世界数据来源主要有场景数据、各种模型数据、多媒体数据、用户认证信息以及访问控制信息,虚拟世界管理服务访问这些数据来构造和维护CVE中的虚拟世界。构造和维护CVE中虚拟世界是建立可扩展CVE系统的关键问题。c畅协同工作服务:利用全局的知识,对CVE中用户协同信息进行管理规划、以便协同完成一项共同的任务。d畅时间管理服务:提供全局协调机制来保证各客户端推进时间不同的情况下,共享对象能在一致的世界坐标中推进。e畅用户登录服务:负责管理用户登录和离开虚拟世界,并提供对用户组的管理,这里需要网格信息服务和访问控制等安全服务的支持。网格服务注册中心用于管理网格服务,记录各服务位置。网格服务注册中心地址是对外公布的,服务结点将网格服务位置注册到注册中心。客户端程序最初并不知道自己所需的服务是由哪些服务结点提供,更不知道服务结点的位置,而是通过查询注册中心获得所需服务位置。注册中心的信息是实时更新的。当服务结点加入网格环境时,注册中心添加其提供的服务;当服务结点退出网格环境时,注册中心删除其提供的服务。注册中心还提供对服务的查询、更新功能,并能处理多个客户端程序的并发请求。4 协同虚拟环境中虚拟世界管理服务 大规模CVE中虚拟世界通常包括复杂的地形模型、大量的静态实体模型和动态实体模型、逼真的自然景象模型等,导致处理和维护虚拟世界的开销很大。采用虚拟世界空间分区技术对虚拟世界进行管理,将大规模场景分布到多个虚拟世界管理服务(virtualworldmanagementservice)中,并部署在多个服务器上。图3所示,将虚拟世界V(构造虚拟世界的数据来自场景数据库S)用网格分成Nr块regions,记为Ri(0<i<Nr+1),然后采用某种策略(例如按照虚拟世界中各Ri中的实体数目)将regions的集合SceneManagej(0<j<Ns,V=SceneManage1∪SceneManage2∪…∪SceneManageNs)分布到各个虚拟世界管理服务中,一般是每台服务器上部署一个虚拟世界管理服务,从而实现系统负载的分布。当CVE场景规模变大时,可以通过添加服务器以及相应的虚拟世界管理服务来扩展系统。图3 虚拟世界空间分区示意图Fig畅3 ExampleofvirtualworldregionsCVE系统运行时,动态实体在虚拟世界中的位置和数目会不断变化,在一个时间段,大量的动态实体聚集到一个虚拟世界分区中可能会导致某个虚拟世界管理服务超载。另一方面,在CVE中,每个化身都有一个兴趣空间(AOI,areaofinterest),该兴趣空间受到化身感知能力、环境等因素的限制。当一个化身进入系统时,根据自身的位置信息寻找虚拟世界管理服务,该虚拟世界管理服务结合化身的AOI将相应的region数据传输给客户端程序。由于化身的AOI可能会跨越多个虚拟世界分区,从而引入了多个虚拟世界管理服务之间的协作问题。如果在多个虚拟世界分区交界处附近存在大量的化身,这将使虚拟世界管理服务之间产生大量的通信流量,从而导致某个虚拟世界管理服务超载。因此负载平衡机制采用虚拟世界分区中的动态实体数目、服务器之间的网络通信流量作为各个服务器上的虚拟世界管理服务负载平衡的性能指标[7]。利用OGSA网格服务可以方便的实现虚拟世界管理服务负载平衡机制。在OGSA中,一个特定的9512007年第9卷第11期网格服务有一个或多个服务实例,每个服务实例采用服务数据元素(SDE,servicedataelement)来表示自己的状态信息。在此,为虚拟世界管理服务定义两种类型的SDE:SceneregionType{regionarray:int[]},LoadType{avatarnum:int,networkload:float}。SceneregionType中属性描述了虚拟世界管理服务实例负责的regions标号,为客户端的服务发现提供信息服务。LoadType中属性描述了场景分区中的动态实体数目、场景分区与其他分区之间的网络通信流量,当属性值超过一定的阈值时,利用OGSA的通