基于框架技术的通用虚拟计算平台的实现

2013-09-11 03:20关新全
计算机工程与设计 2013年8期
关键词:计算环境计算资源组件

张 千,梁 鸿,石 琎,关新全

(中国石油大学 计算机与通信工程学院,山东 青岛266555)

0 引 言

目前石油勘探开发行业对于高性能计算有着强劲的应用需求,高精度勘探对地震资料的存储和处理能力的需求呈指数倍增长,我校早期购置的一些32节点、64节点的小规模集群虽性能良好,但已不能满足大规模计算任务日益增长的需求,并且集群间在系统软硬件上存在异构,现有方法难以将其有效整合和集成利用,从而导致可用资源处于闲置状态,在该背景下,本文提出了一种基于JAVA框架技术的虚拟计算平台 (framework-base virtual computing environment,FVCE)实现方法,充分利用现有的计算资源和闲置集群资源,对分散异构的资源进行整合管理,提升资源的利用率,同时最大限度地屏蔽底层繁杂通信细节,简化系统业务逻辑的实施,建立了通用的虚拟计算系统框架,提供简单易学的接口,满足系统接口的应用就可以利用网络中的计算资源,为用户提供透明的计算资源使用方式。

1 FVCE关键技术研究

1.1 FVCE服务组件设计

虚拟计算环境需要协调多个计算主机求解复杂的计算任务,计算环境自身的功能和组织结构就十分复杂。因此,FVCE使用WEB架构技术,将虚拟计算环境分解为功能相对独立的服务组件,各组件可以独立设计、开发和进化,从而缩小整个计算环境的实施和维护代价。FVCE按照功能划分成7个服务组件,各服务组件的主要功能描述如下:

(1)用户访问接口 (user port):基于FVCE二次开发的,方便用户操作和使用的图形用户接口。用户访问接口提供观测计算环境资源负载状态、组织提交任务、查看任务执行状态和结果、浏览工作目录等功能;

(2)任务提交服务 (submit):接收来自于用户的任务执行请求,分析任务执行文件,创建任务描述对象,维护任务状态信息和执行逻辑;

(3)注册服务 (register):向FVCE提交注册信息,维护计算环境拓扑结构,测试远程主机心跳等;

(4)信息服务 (information):维护整个计算环境静态主机信息列表,获取远程主机动态信息;

(5)文件服务 (file):当任务计算需要传输数据文件时,将相关文件从调度主机传递到执行主机,并维护任务执行结果,方便使用者查询;

(6)任务执行服务 (executor):接收远程任务执行请求,在本地开启任务执行,并监控任务执行状态,反馈任务执行信息;

(7)调度服务 (schedule):接收来源于任务提交服务的调度请求,评估信息服务提供的资源信息,采用某种调度策略,为任务选择执行主机,并将任务提交到执行主机的执行服务。

FVCE是基于对等组织结构的,因此计算环境中的所有计算节点都具有完备功能,即每个计算资源都要配置所有的7个服务。经过划分后的7个服务组件,功能和内部实现相对独立,各组件通过相应服务访问接口获取其它组件功能支持,同时向其它组件提供服务支持,各服务组件可直接通过网络与其它主机内的服务组件通信,实现相应功能。

1.2 FVCE服务分层模型

松散耦合的WEB设计架构中,服务对外提供的访问方法和交互数据内容是预定义的,不可改变,但服务内部实现和业务逻辑是可变更的。服务实现者在遵从服务访问规则前提下,根据系统需求提供最终的内部实现逻辑。FVCE框架的服务分层设计模型将服务访问规则与具体服务实现相隔离,相同功能的组件对外提供相同服务,而对内却可有多种不同的策略和实施方式,从而提高了应用服务的适应性和扩展性。图1展示了FVCE框架中服务设计的层次关系。

图1 服务设计层次关系

确定服务对外提供的功能和访问方式,是服务设计需要解决的首要任务。如图1所示,Resource层描述服务对外访问接口,是服务功能的具体体现。虚拟计算环境设计过程中,根据各服务组件向外提供的功能,确定Resource层相应的接口方法。

XSD层用于规范服务间通信消息格式,一般同Resource层结合定义。Resource层定义接口过程中使用的复杂参数和返回值,需要使用XSD规范定义,通信双方通过XSD文档规范转换出各自应用场景下使用的消息表示形式,最终完成通信。服务访问规则是一个服务对外的功能和访问方式体现,因此一旦确定,就很少发生改变。外部其它环境或应用在理解服务访问规则的前提下,可以使用任何设计方式和实现环境对FVCE进行二次开发。使用XSD规范复杂通信数据类型的目的在于,环境的继续开发者可以选择期望的开发和运行环境对FVCE进行功能扩展,采用计算环境提供的RESTful类型的访问方式,结合XSD的数据格式定义,任何一个能够解析HTTP协议和XML文档的开发运行环境都能够轻易的与计算环境交互,使用其内部功能,达到灵活扩展的目的。

Model层描述Resource层中定义的复杂参数和返回值类型,是通信两端消息的实体存在。通信两端通过XSD层定义转换出对应的 Model实体类 (entity class)。JAVA提供XJC可将XSD定义文档直接转换成包含有JAXB标记的Model层实体类,方便XML消息的自动生成和解析。

Logic层是服务内部实现的逻辑抽象,衔接Resource层和内部具体实现。每个服务内部可能有多种具体实现,不同的实现版本在策略和逻辑上略有差异,因此Logic和Impl是一对多的关系。在计算环境启动时,使用一定的配置手段,选择适当的Impl,为远程请求提供服务支持。

为了提高服务使用的灵活性,采用Deploy外部文件的形式配置服务运行参数。Factory层在服务开启时,分析Deploy文件描述,选择适当的Impl实现注入到Resource层的Logic引用中,当远程请求访问Resource的相应接口时,Resource会通过Logic层选用具体的Impl版本提供服务处理。当需要更改计算环境中某个服务的具体实现时,只需将新实现版本相关文件加入到运行环境中,更改Deploy配置选项,无需对计算系统原有代码进行修改,提高了系统扩展性和灵活性。计算环境中所有7个服务都遵从服务分层设计方法,具有较好的可用性、灵活性和扩展性同时,也方便了其他人员对环境的研究和改进。

1.3 FVCE服务框架描述

1.3.1 框架技术组合

Spring[1,2]企业级框架技术简化服务内部资源组织、维护和管理,能与多种通信框架无缝结合,屏蔽服务底层繁杂通信逻辑,可向外部应用者提供多种可选服务访问方式,提高了系统灵活性。Spring框架技术在FVCE服务搭建过程中处于关键地位。图2描述了虚拟计算环境框架技术组合方式,JRE (Java runtime environment)是基于JAVA 框架的服务运行基础,屏蔽计算资源硬件和软件系统异构性,支撑服务运行。Jetty是嵌入式WEB容器,负责构建和维护内部发布的服务,并在运行期间,监听远程服务请求,选择相应的服务处理请求。

图2 框架组合方式

服务启动时Spring框架负责构建应用对象,根据服务配置解析应用对象间依赖关系,完成对象关系的依赖注入,服务运行后,Spring框架负责接收Jetty容器提交来的请求,解析请求信息内容,转换成内部Resource层相应方法的调用,Resource层使用Impl层提供的具体逻辑处理远程业务请求,业务执行结束后,Spring负责将响应内容以请求者期望的通信方式包装返回。

Spring HTTP使用完整JAVA串行化机制,支持复杂JAVA对象传输,适合JAVA端到端之间通信;Hessian使用自定义二进制信息传输格式,将对象转换成二进制编码,并进行压缩后传输,减轻网络传输负担,同时支持多种异构平台间信息传输。

Blazeds是由Adobe公司提供的基于二进制格式的消息传输方式,与Hessian相似,具有一定跨异构平台传输能力,适用于Flex客户端与虚拟计算环境通信使用,由于本文提供的用户访问界面使用Flex开发,因此Blazeds作为默认客户端通信方式,Jersey提供RESTful类型服务通信支持,当其它通信方式无法满足服务使用者开发需求时,可以选用RESTful通信模式与FVCE进行通信,计算环境提供RESTful结合XML的通信形式,因此对于能使用HTTP协议,且解析XML文档的开发运行环境,就有与计算环境通信的可能。

可二次开发是FVCE的特性之一,开发者在了解FVCE相应使用规范后,即可对FVCE功能进行扩展。因此,计算环境向外提供多种可选服务通信方式,方便服务使用者开发使用。服务使用者选择期望的开发语言和运行平台扩展FVCE的功能。

1.3.2 服务构建及请求处理

本文结合多种框架技术为外部提供灵活的访问方式,同时提出基于分层的设计实现方法。通过分析服务构建流程,有利于理解计算环境和框架结合使用的方式,同时说明服务如何通过配置文件,配置服务内部业务逻辑。图3描述了基于框架技术的服务构建流程。

图3 服务构建流程

jetty.xml文档描述Jetty容器启动时配置的运行参数(例如:IP地址、端口号、服务名称、缓冲池大小等),服务启动时,Jetty分析jetty.xml文档,设定容器运行参数。Jetty容器正常启动后,分析工作目录下的web.xml文档,获取应用服务具体配置。web.xml文档提供了远程请求URI与应用处理程序入口的映射,Jetty根据应用程序入口配置,启动Spring处理过程。Spring分析配置文件servlet.xml,创建应用服务对象,并分析对象间依赖关系,完成依赖关系注入。

然后Spring创建Factory对象,分析deploy.xml文档。deploy.xml文档中配置服务开启时默认使用的业务逻辑策略,Factory负责创建具体的Impl对象,并将Impl对象注入到Resource层的Logic引用中。同时,Spring分析通信模式的配置,并将通信模式的访问与Resource层中具体方法相关联,确定内部数据的转换逻辑。

服务运行时,接收远程请求,选择适当的业务处理逻辑处理请求,并以期望的方式给予响应。Jetty服务容器监听远程客户端请求,如果请求的URI描述与服务映射相同,将请求转交给Spring监听器处理,Spring根据URI的描述,选择可用通信处理手段,解析请求消息内容,生成调用过程中使用的JAVA参数对象,并根据URI描述定位Resource层中具体的方法,Resource层的方法通过Logic接口,调用Impl层的具体实现,完成远程请求的业务处理逻辑。Spring负责将请求处理结果按请求提交的通信方式反馈给客户端。

2 FVCE服务组件实现

2.1 注册服务

注册服务包含5个主要功能,分别是注册、注销、探测、心跳测试和主机列表获取。

任意计算节点启动时,向FVCE中某个计算节点提交注册信息,表明当前节点期望加入计算组织,接收注册信息的节点称为介绍者节点。介绍者节点将新节点信息通知整个计算组织,并将计算组织内的主机列表反馈给新节点。注册结束后,新节点知道计算环境中所有计算节点的资源静态信息,计算环境中的其它计算节点也容纳了新节点的信息。如果介绍节点是新节点自身或者配置的注册节点不可达,则新节点自己构成一个虚拟计算环境。

计算节点正常离开时,向FVCE提供注销信息,组织中的其它主机删除注销节点,不再将任务提交到离开的节点执行。当计算节点异常离开时,FVCE会对异常节点开启异常探测过程。注册服务对不可达主机进行定期心跳测试,当测试次数超过指定阈值后,注册服务认为该主机将在很长一段时间内不可达,并将不可达主机从主机列表中删除。

图4展示了注册服务用户界面,列表中显示PCClient计算节点能够调度使用的计算单元基本信息。从表中可以得出,虚拟计算环境能够组合多种类型的异构资源。

图4 注册服务

2.2 信息服务

信息服务组件主要包括,资源静态信息列表维护、资源动态信息获取、本地资源历史信息维护和本地资源信息查询等功能。

在服务注册期间,信息服务获取各计算节点的静态信息,存储到本地。调度组件通过分析主机静态信息选取部分感兴趣的计算节点,使用信息服务获取资源动态信息,因此,调度过程中仅对部分主机使用动态信息获取,减轻了网络负担。

本地资源信息查询需要获取本地资源配置信息,出于安全考虑,多数编译和运行环境不提供主机信息的直接提取,JAVA仅能获取少量OS相关信息,无法获取CPU、内存、硬盘等详细信息。可以使用C或脚本语言编写本地主机信息获取程序,结合管道技术将信息传递给信息服务组件。由于不同操作系统资源访问库和脚本不同,一个信息获取程序的编写不适用于所有操作平台,如果每种操作系统都由FVCE单独提供信息收集程序,那么计算环境将面临高昂的开发代价。

本文描述的信息服务使用Sigar[3]收集计算资源系统信息。信息服务开启时,通过JAVA提供的操作系统基本信息,选择适当的Sigar信息收集库连接到资源系统,即可完成计算资源信息收集。图5展示了信息服务组件提供的功能。

图5 基本信息服务

2.3 文件服务

文件服务主要有两类功能,分别是文件管理功能和文件传输功能。文件管理功能包括,远程主机工作目录访问、文件关键属性查询 (文件名、类型、大小、修改日期等)和工作目录下创建、查找、删除文件等操作,JAVA提供了文件系统相关API,可完成上述功能。

文件服务在任务开始执行前,将任务执行文件和相关数据文件传输到执行主机工作目录,并在任务执行结束后将执行结果相关文件传输到调度提交端,以便使用者查询任务执行结果,且文件服务清理执行主机工作目录任务相关文件,恢复任务执行前执行主机文件系统状态。

2.4 任务管理服务

任务管理服务由3个主要功能组成,分别是分析任务、维护任务状态和维护任务池。分析任务是接收远程任务提交请求、分析任务说明文件、创建任务描述对象,并维护对象间执行逻辑关系;维护任务状态是指,任务提交服务接收远程执行服务任务状态变化通知,修改任务池中相应单元的执行状态,以便用户查询;提交任务池,维护投递到本节点,但尚未执行完成的任务,任务提交服务通过任务池容量可以限定投递到本地的计算任务数量。

任务调度服务接收提交服务的任务调度请求,通过信息服务获取计算环境主机静态信息,使用评估策略从中筛选出若干性能较好的资源,之后使用信息服务的动态信息获取功能,获取选中节点的动态运行信息,评估资源,选择优秀的执行资源,将任务投递到执行主机的执行服务。调度算法采用了一种基于对等模式的随机自适应调度算法,能适应异构的、资源性能差距较大的运行环境,合理的将计算任务分配到节点上,并使用随机策略、过载评估策略和反馈策略,将任务分配到优秀资源上执行的同时,保证整个计算环境负载平衡。

执行服务接收远程任务执行请求,创建执行描述对象,存放于任务执行池中,在本地开启任务执行,监控任务执行状态,并将执行状态变化反馈给调度主机的提交服务。执行服务同样需要维护任务池,任务池的容量限定了执行主机能够同时运行的计算任务的数量。

图6展示了测试用的5个并行执行的子任务在虚拟计算环境中的执行状态。

图6 任务执行信息

3 系统测试分析

3.1 测试环境

如表1所示,测试环境采用4个Dell服务器节点、3个高性能计算单机节点、4个普通测试节点和1个远程控制节点组成。每个Dell服务器节点由两个CPU组成,每个CPU有4个核心,使用超线程技术,每个核心提供两个计算线程,因此,每个服务器节点由2×4×2个逻辑CPU组成。每个高性能计算单机节点由1个双核CPU组成,而普通测试节点则配置较低,与高性能节点性能差距较大。

表1 虚拟计算环境主机列表

基于对等体系结构的FVCE,系统内各计算单元间没有严格的等级结构,所有的计算单元都具有提交、调度、执行任务功能。系统管理者可以根据需要,先将内部的零散计算资源组织成一个较小的FVCE,之后使用主动探测功能与远程其它FVCE构建成更大的计算组织。

Server2、Server3、Server4根据配置文件向Server1注册,PC2、PC3向PC1注册,Demo2、Demo3、Demo4向Demo1注册,Server1、PC1、Demo1、PCClient向自身注册。当所有计算单元上的服务都正常开启后,Server1、Server2、Server3、Server4,PC1、PC2、PC3,Demo1、Demo2、Demo3、Demo4和PCClient都各自构成一个FVCE,最后,使用注册服务的主动探测功能,Server1、PC1、Demo1分别向PCClient交换信息,构成一个更大的计算环境。通过FVCE中的任何一个计算资源,用户都可以访问整个计算环境,本文通过使用装有Windows系统环境的PCClient访问整个计算环境。

3.2 应用测试

本文使用Marmousi模型波场正演[4]对FVCE组件功能进行测试。有限差分波场正演根据炮集划分成若干粒度较粗子任务,各任务可独立并行运行,正演过程分成五步:①速度模型重采样;②单炮正演,采用二维声学有限差分正演每炮合成记录;③每炮使用梯形滤波,过滤不必要的频率成分;④生成单炮合成记录;⑤所有炮正演结束后,统一调整道头,产生零偏移距剖面和近偏移距剖面。任务DAG图描述如图7所示。

图7 Marmousi正演过程DAG描述

在FVCE环境下通过计算测试得出零偏移距和近偏移距剖面合成结果如图8所示,FVCE分布式计算框架基本上可以满足地震勘探海量测试数据的计算需求。利用这种虚拟计算框架能够协同多种计算资源共同完成复杂的计算任务,节约了计算成本。

图8 零偏移距和近偏移距剖面合成记录

在同等环境下,将FVCE的功能组件与集群计算和网格计算环境下的处理系统进行对比,计算Marmousi正演过程所需的时间。3种不同虚拟计算环境下的处理系统的运行时间如图9所示。集群PBS处理系统所需运行时间为10805(s),集群使用集中调度方式,对全局资源评估的基础上实施调度,在实验室计算规模较小的情况下相对性能较高。

图9 不同虚拟环境下Marmousi正演时间对比

网格计算GT系统所需运行时间为13203(s),尽管GT也使用集中调度方式,但是网格的性能提升很大程度上依赖与底层集群的执行效率,并且子任务不能够跨越多个集群执行,因此效率比单集群低很多。

FVCE环境下所需运行时间为11001(s),FVCE采用对等式调度模式,所有的计算节点都具有调度执行功能,并且适用于异构的计算环境中实施调度,在当前实验室配置环境中,FVCE的执行性能与GT相近。当计算环境规模扩大,并且资源种类多样时,FVCE性能将会得到进一步提升。

当计算规模较小,且使用同构或性能差异较小的计算资源,集群即可发挥较大的性能优势;当计算环境规模不断扩大,计算资源种类较多且性能差异明显时,集群已无法满足计算和调度需求,FVCE使用对等式调度模式,适用于组织零散的计算资源,尤其是计算资源性能差异明显并且规模较大的情况。当计算资源规模继续扩大,并且能够将同构计算资源使用集群组织管理,分层管理模式的GT在更高层次上控制和管理多个集群,能够使整个系统获得更好的计算性能。

4 结束语

本文在研究以往虚拟计算环境、调度算法和框架技术基础上,提出了一种基于框架技术的虚拟计算环境FVCE的实现方法,框架技术能够屏蔽底层繁杂的通信细节,简化系统业务处理逻辑,实现多个服务组件在异构环境中通信与协作,能够整合散异构的计算资源。FVCE采用分层服务设计方式来提高服务扩展性及灵活性,将计算环境按功能划分成多个服务组件,各服务组件在遵循接口定义的约束下,可独立设计、开发和进化,方便用户进行二次开发,提升了虚拟计算系统的灵活性。采用Marmousi模型波场正演为例进行了应用测试,证明了虚拟计算系统的可行性,并在相同的硬件配置环境下与集群和网格计算系统进行了性能测试对比,实验结果表明,FVCE适用于性能差异明显的计算资源组织,在计算资源规模较大的环境下性能较好,能够充分发挥出整体的计算潜能。

[1]Shufen Zhang,Shuai Zhang,Xuebin Chen,et al.Analysis and research of cloud computing system instance [C]//Second International Conference on Future Networks,2010:88-92.

[2]Rod Johnson,Juergen hoeller,Keith Donald,et al.Spring framework reference document [EB/OL]. [2011-04-25].http://www.springsource.org.

[3]Ryan Morgan,Doug MacEachem.System information gather and reporter(SIGAR)[EB/OL]. [2010-09-10].http://support.hyperic.com/display/SIGAR/Home.

[4]Ding Renwei,Li Zhenchun,Tong Zhaoqi.Research and development of seismic data processing system based on CFP technology by utilizing Qt graphical user interface library [J].Geophysical Prospecting for Petroleum,2009 (2):256-261.

[5]Daniel Nurmi,Rich Wolski,Chris Grzegorczyk,et al.The eucalyptus open-source cloud-computing system [C]//9th IEEE/ACM International Symposium on Cluster Computing and the Grid,2009:124-132.

[6]Youseff L.Toward a unified ontology of cloud computing[C]//Grid Computing Environments Workshop,2008:1-10.

[7]Foster I.Cloud computing and grid computing 360-degree compared[C]//Grid Computing Environments Workshop,2008:12-16.

[8]Peter Mell,Timothy Grance.The NIST definition of cloud computing [S].National Institute of Standards and Technology Special Publication (800-145),2011.

[9]CHEN Xiaojun,ZHANG Jing,LI Junhuai.Framework for collaborative computing task distribution deployment and execution over multiple virtual machines [J].Journal of Applied Sciences,2011,29 (5):516-520 (in Chinese). [陈小军,张璟,李军怀.多虚拟机协同计算任务的分发部署及运行框[J].应用科学学报,2011,29 (5):516-520.]

[10]Ellert M,Gronager M,Konstantinov A,et al.Advanced resource connector middleware for lightweight computational grids [J].Future Generation Computer Systems,2007 (23):219-240.

[11]ZHU Jun,GONG Jianhua,LIN Jun.Study on VGE computing architecture and key technologies [J].Journal of North University of China (Natural Science Edition),2007,28(4):326-330 (in Chinese). [朱军,龚建华,林军.虚拟地理环境计算框架及其关键技术研究 [J].中北大学学报 (自然科学版),2007,28 (4):326-330.]

猜你喜欢
计算环境计算资源组件
云计算环境下船舶无线通信网络入侵检测方法
云计算环境下网络安全等级保护的实现途径
无人机智能巡检在光伏电站组件诊断中的应用
基于模糊规划理论的云计算资源调度研究
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
改进快速稀疏算法的云计算资源负载均衡
基于Wi-Fi与Web的云计算资源调度算法研究
耦合分布式系统多任务动态调度算法
大数据云计算环境下的数据安全