利用Spaces搭建网格计算框架
2010-01-27
作者:谢景明,齐德昱,林伟伟
摘 要:利用Spaces模型的时间和空间透明性,将Spaces用作网格计算中共享数据和分配任务的“黑板”,设计了一个基于Spaces的网格计算构架——GCFS,为网格计算的框架设计提供了一种新方法。
关键词:网格计算异步通信Spaces模型 Master-Worker模型
随着网络技术的发展,网格计算作为一种新型的分布式技术,提供了集成的计算与资源环境,在提高资源利用率方面起到越来越重要的作用。但在分布式系统中,进程间的通信、事件同步是必须解决的问题。目前出现了众多的解决方法,具有代表性的有RMI、CORBA、Web Service等分布式计算模型。由于这些方法在解决问题时的抽象层次不一样,所以对系统的开销、可扩展性、跨平台性以及易实现性等方面的影响程度也不一样。
耶鲁大学的David Gelernter在Linda系统中提出了元组空间(Tuple Space)的思想。该系统的初衷是利用Spaces为并行计算提供全局的通信缓存。由于Spaces模型简单且能较好地协调进程间的同步,因此,可将它作为另一种抽象的分布式计算模型应用于当前的各种分布式计算领域。T Spaces、JavaSpaces作为由Tuple Space模型发展起来的通用分布式中间件,已被应用到很多分布式计算中。但在实际应用中,它们的一些功能是不必要的,且容易引起性能效率的降低。网格计算中一个很重要的性能是可将位于异构网络的多种资源整合为虚拟的统一视图,由不同的应用动态地共享。本文把Spaces用作网格计算中共享数据和分配任务的“黑板”,通过动态地创建或取消Spaces服务来适应网格计算环境的变化并设计了具有良好可伸缩性的GCFS(Grid Computing Framework with Spaces)框架。
1Spaces模型
分布式应用中的通信通常有两种。一种是异步通信,指不同进程间的消息传递;另一种是同步通信,指远程过程的调用。Spaces扩展了进程间异步通信的模型,应用的参与者集中在一个或多个Spaces中,资源提供者将信息放到Spaces,订阅该资源的请求者可从Spaces访问到这些信息,也就是说Spaces为网络资源的提供者和请求者的相互协作提供了共同的虚拟空间。图1为Spaces模型,它体现了Spaces的以下特点:
(1)具有分布式应用的四个最基本操作:读、写、取、通知。
(2)计算机间的进程通信是间接的,并不需要预先知道其他进程的情况,直接和Spaces进行信息交互即可。与多个点对点通信的方式相反,所有的计算机都能通过Spaces看到相同的全局消息。
(3)具有持久性,即使创建消息的进程不再存在,它们所生成的消息也仍然可以保留。
(4)作为允许N个进程同时进行协作通信的公共中介,Spaces以一种自然的方式实现了分布式计算的可扩展性。新进程的加入和离开不需分别通知其他进程,只需由对应的Spaces进行管理。
根据上述特点,可把Space定义为一个可通过网络访问并提供协作异步通信服务的共享消息库。与RMI、CORBA、Web Service等进程间直接通信的计算模型不同,在Spaces模型中,进程间的协作交互是通过在一个或多个Spaces中交换消息来实现的。Spaces模型具有异步性,对Spaces内的信息操作具有时间和空间的透明性。该特性能有效地解决分布式系统设计中所遇到的局部失败、平台独立性、系统间难以相互发现等问题,从而减低了开发分布式应用程序的难度。
尽管Spaces能够存储各种消息,支持在应用间共享消息,但它们并不是分布式文件系统或者数据库。Spaces侧重于利用消息来协调分布式计算,而分布式文件系统侧重于对信息进行存储管理。由于两者的应用目的不同,所以使用方式也有很大差别。例如,在文件系统中,通过命名对先前存储的数据进行访问,用惟一的名字来标识文件,并通过文件的名字或内容来查找文件。而Spaces是逻辑共享内存模型,与常规的共享内存模式不同,它与值关联,但没有地址,可通过模板进行匹配查找。消息的名字、类型、内容以及消息间的关系等都可以作为查找条件。
2 GCFS的设计
2.1 体系结构
GCFS是利用Spaces的异步性来创建一个灵活且具有可扩展性的网格计算框架。图2所示的体系结构包含了六个主要构件,分别是:Space管理器、任务管理器、任务调度器、Space服务、负责通信的Agent以及网格应用程序。
Space管理器本身也是由Spaces模型建立起来的,它的主要功能是负责管理系统中的各个Space服务。Space管理器通过所掌握的参与网格计算的所有计算机的信息,动态地创建或者撤销Space服务,即系统中的Space服务能够随着计算环境的变化而动态变化。例如,在网格搭建的初期,A地参与的计算机数量较少,可以通过位于B地的Space服务为A地的计算机提供任务分配服务。但随着A地越来越多的计算机参与该网格平台,Space管理器将采用评估算法判断是否有必要专门在A地建立一个Space服务,从而减少两地之间的通信开销。相反,如果A地网格节点数量减少到一定程度,为了减轻Space管理器的管理成本,Space管理器也会评估是否有必要撤销A地的Space服务,并将A地的计算机重新引导到相邻地区的Space服务中。
在Space管理器中的任务管理器将任务划给各个Space服务。相应地,Space服务的任务调度器负责将任务分配给合适的网格节点执行。Space服务为网格节点提供信息的公共存储和共享服务,在GCFS中起到了连接网格节点和待处理任务的中间桥梁作用。一个Space服务可以管理多个网格节点,但每个网格节点只接受一个Space服务管理。此外,GCFS框架具有良好的负载均衡性,参与计算机首先连接平台的Space管理器,Space管理器根据当前各个Space服务的负载、计算机的处理能力以及地理位置等情况,将计算机引导到相应的Space服务。如果某个Space服务出错或者出现过载,Space管理器会根据调度算法重新将该服务区域中的网格节点切换到其他的Space服务。
图3描述了将GCFS应用于Master-Worker模式的方法示例。一个位于A地的Master(同时作为Space管理器)通过任务管理器划分多个任务到各个Space服务。位于各地的Worker通过Space管理器访问相应的Space服务,从中获取任务进行计算并将计算结果返回Space服务。Master从各个Space服务中收集返回的结果进行汇总分析。图3中用虚线圈出的Space是虚拟的,由位于各地的多个Space服务构成,它们可以被动态地创建或撤销。位于各地的Worker看到的是一个虚拟统一的Space,其中真实存在的Space服务的变动对Workers来说是透明的。
2.2 实现方法
由于Java语言具有良好的跨平台性和可移植性,因此GCFS的实现采用Java语言。本节重点讨论GCFS的主要类设计,其类结构如图4所示。
Computer类负责管理参与网格的计算机基本信息。这些基本信息主要包括计算机的所在位置、计算机名、用户、IP地址、CPU处理能力、内存大小、硬盘空间、操作系统版本、网络连接情况以及开始参与系统的时间等。evaluateComputer方法根据计算机的属性评估其性能指标,为Space-
Manager类的evaluateSpace方法提供算法判断依据,使Space管理器能够选择计算能力强的计算机提供Space服务。同时,任务管理器和任务调度器也能够根据计算机的性能情况分配合适的任务给各个网格节点进行处理。
SpaceManager类用于管理网格中的Space服务,包括Space服务的动态创建、撤销和监控。evaluatedSpace方法的作用是评估在某个网格节点上创建或者撤销一个Space服务的必要性。该方法首先要判断网格中是否需要创建新的或者撤销一个已有的Space服务,然后再选择应该在哪个网格节点上执行新建或者撤销的操作。
TaskManager类管理网格中的任务,决定如何进行任务划分和分配。assignTask方法利用智能任务调度算法,根据各个Space的当前负载情况,决定在何时将何任务分配给何Space服务。
Space类用于提供Space服务。在本框架中,Space服务的主要作用是为任务提供管理服务,网格节点能够从Space服务中获取任务。该类提供了read、write、take、inform等基本方法操作存放在Space服务中的系统信息和任务。
TaskScheduler类对在Space服务中的任务进行调度。它的scheduleTask方法与TaskManager类的assignTask方法功能类似,都是将任务分配给合适的资源,其差别为二者分配的资源对象不同。scheduleTask是将在Space服务中的任务分配给该服务辖下的网格节点。
Task类表示子任务的信息,starttime属性表示任务的开始时间,estimatedinterval属性表示预计要处理的时间。这两个属性用于容错,如果当前时间超出了starttime+k×estimatedinterval(其中k是一个经验值),任务调度器就会通知Space服务,要求其检查负责该任务的网格节点是否出现故障。taskobject属性包含了任务的可执行代码,当网格节点从Space服务获得一个Task实例后,taskobject会自动地下载到节点上执行,并将计算结果返回给Space服务。
ClientAgent类和ServerAgent类用于网格节点、Space服务和Space管理器之间的相互通信。connectServer、listentoServer等方法采用的是UDP通信协议。目前GCFS在安全方面的措施还较少,参与任务计算的网格节点不需验证就可以直接连接到Space服务和Space管理器上,且网格节点对服务器传送的数据也是信任的。
3 结束语
网格技术要对计算资源进行“虚拟”组合,使得位于不同位置、具有不同硬件和操作系统的资源能够协同工作。Spaces模型是一种非常抽象的分布式计算模型,可管理消息、资源和任务等信息。通过在网格中动态地创建Space服务,GCFS系统建立了一个轻量级的网格计算框架。为了提高3G无线网络仿真的性能,该框架正被应用于移动通信的3G仿真。该框架还存在着许多需要深入研究的问题,例如,如何使多个Spaces进行相互协作,如何更好地增强Spaces在Internet中的安全性以及如何有效地对任务进行分解和调度等。
参考文献
1 Freeman E,Hupfer S,Arnold K.JavaSpaces(TM) Principles,Patterns and Practice.Addison-Wesley Pub Co,1999
2 Edwards W K.Jini核心技术.北京:机械工业出版社,2002
3 GigaSpacesTM Technologies Ltd.GigaSpaces Grid Server for Web Services Applications[R/OL].http://www.gigaspaces. com/whitepaper.htm.2005,1
4 Sterck H D,Markel R S,Pohl T et al.A lightweight Java Taskspaces framework for scientific computing on computational grids.In:Proceedings of the ACM Symposium on Applied Computing,Track on Parallel and Distributed Systems and Networking,2003
5 Lehman T J,Cozzi A,Xiong Y et al.Hitting the distributed computing sweet spot with TSpaces.Computer Networks, 2001;35(4)
6 Liu M L.Distributed Computing Principles and Applications.Pearson Education,Inc,2004
7 Noble M,Slateva S.Scientfic computation with JavaSpaces. Harvard-Smithsonian Center for Astrophysics.Boston University,Boston,2001