基于ice的分布式作业调度引擎的制作方法

文档序号:6332271阅读:217来源:国知局
专利名称:基于ice的分布式作业调度引擎的制作方法
技术领域
本发明属于计算机领域,涉及一种分布式作业调度引擎。
背景技术
作业调度主要用于分布式计算,包括作业调度算法、与计算节点之间的通讯等方 面的内容。目前,大多数作业调度系统采用面向模块化的架构,包含了作业提交模块、作业 调度模块、资源管理模块等。各种模块之间是平行对等的关系。这种架构缺乏层次,侧重于 作业调度系统的服务端功能,没有包含计算节点,与上层具体应用和具体硬件关系结合过 于紧密,不易于在不同应用环境下进行移植。在与计算节点进行作业控制时,大多数作业调度系统采用中间件技术,如微软公 司的DCOM/. net, OMG的CORBA,SUN公司的Java中间件、WebSerices和ICE等。在作业调 度方面,DCOM/. net只支持微软公司旗下的WindoWs操作系统,不支持其它平台系统。CORBA 规范过于复杂,不易开发、维护和扩展。Java RMI是基于Java的解决方案,与其他语言兼容 性差。此外,它们都要求使用特定协议实现客户端与服务端之间的访问,不支持不同平台上 的服务之间的互相访问。Web Services是一种新的分布式计算技术,具有传统的组件技术 特点,支持不同平台上的服务之间的互操作,在遥感卫星数据处理系统中取得了广泛的应 用。但是Web Services占用大量的网络带宽和CPU开销,需要私有化开发平台,还存在安 全方面的问题。

发明内容
本发明的技术解决问题是克服现有技术的不足,提供了一种容易扩展维护、占用 网络带宽和系统资源低的基于ICE的分布式作业调度引擎。本发明的技术解决方案是基于ICE的分布式作业调度引擎,采用三层分布式对 象的体系架构,包括服务接口层、调度管理层和计算资源层,调度管理层和计算资源层之间 通过ICE进行通信,服务接口层和调度管理层之间通过接口函数完成作业提交和结果返 回,其中服务接口层属于引擎服务端,接收外部输入的计算作业请求,将计算作业请求提 交到调度管理层;将调度管理层传来的计算作业处理结果返回给外部;调度管理层属于引擎服务端,实时监控计算资源层中各计算节点的负载状态,根 据各计算节点的负载情况将服务接口层接收的计算作业请求分配给相关的计算节点进行 处理;将计算资源层中各计算节点的计算作业请求处理结果返回给服务接口层;计算资源层包含有多个计算节点,各计算节点部署了引擎客户端,服从调度管理 层的调度分配,对分配的计算作业请求进行处理并将处理结果返回给调度管理层。所述的调度管理层包括配置文件、计算节点列表、可用节点列表、作业等待列表、 作业分配控制器和节点管理器,其中配置文件存储计算资源层中各计算节点的信息,包括计算节点的名称、地址、最大作业数;计算节点列表记录计算资源层中各计算节点的名称、地址、最大作业数,同时实时记录计算节点的可用状态;可用节点列表记录处于可用状态的计算节点正在执行作业的参数、占用的作业 数和空闲的作业数;作业等待列表记录需要等待分配计算节点的计算作业请求;作业分配控制器负责对计算作业请求进行分配,当有计算作业请求时,从可用节 点列表中取出第一个节点,如果该节点的空闲作业数不为零,将当前的计算作业请求分配 给该节点,同时修改该节点的负载情况,将该节点的已占用作业数增加,空闲作业数减小, 并把该节点排到可用节点列表的末尾,如果该节点的空闲作业数为零,则直接将该节点排 到可用节点列表的末尾,依次类推从可用节点列表中读取下一节点进行处理;当计算作业 请求处理完成后,从可用节点列表中将处理该计算作业请求的计算节点找出,修改该节点 的负载情况,同时将该节点的已占用作业数减小,空闲作业数增加;如果可用节点列表中的 所有节点都没有空闲作业资源,则将该计算作业请求送入作业等待列表排队等待,直到可 用节点队列中的作业节点释放出空闲的作业资源;节点管理器将配置文件存储的信息送至计算节点列表和可用节点列表,对各计 算节点定时发送监控请求,根据计算节点是否对监控请求发出回应判断计算节点状态正常 或者故障并对计算节点列表和可用节点列表进行实时更新。本发明与现有技术相比的优点在于本发明作业调度引擎采用了三层分布式对象 的体系结构,引擎可以对由多个计算节点组成的计算集群进行分布式的管理,并且能够根 据计算节点的负载情况,将计算作业分配给集群内的计算节点。引擎具有唯一的外部作业 接口,所有计算节点对外表现为一体,用户不需要关心作业运行在哪个计算节点。采用ICE 中间件实现计算节点之间的通讯,可以实现根据实际应用时引擎的负载情况增删节点而不 会影响引擎的稳定性,以保证引擎具有可扩展性和提高引擎的可靠性。引擎具有容易扩展 维护、占用网络带宽和系统资源低等优点。


图1为本发明调度引擎的结构图;图2为本发明调度管理层的作业调度原理图;图3为本发明引擎的工作流程图。
具体实施例方式ICE是近几年在CORBA技术基础上发展出的一个新中间件技术,有着跨平台性好, 性能高,安全性高,易于开发和维护等优点。ICE采用客户-服务端机制,可以运行在不同的 操作系统和机器架构上,并且支持多种网络技术进行通信。客户端和服务端的底层核心提 供网络通信的环境支持,包含了协议、线程、字节等与网络相关的内容。如图1所示,本发明作业调度引擎采用三层分布式对象的体系架构,S卩服务接口 层、调度管理层和计算资源层,每个层提供不同的功能,不同层之间相互独立。调度管理层 和计算资源层之间通过ICE进行通信,服务接口层和调度管理层之间通过接口函数完成作业提交和结果返回。服务接口层是外部计算作业与引擎交互的唯一入口,负责接收外部的 计算作业提交请求和将作业提交到调度管理层,在作业处理完成后将结果返回给外部。调 度管理层具有作业管理调度和节点监控的功能,负责根据计算节点的负载情况向节点分配 计算作业和监测各个计算节点的运行状态。计算资源层负责承担请求作业的计算任务,由 多个计算节点组成。引擎使用ICE的API对按照ICE规范定义的Slice语言生成代理和骨 架。代理运行在引擎服务端,负责向计算节点上的应用程序发起调用请求,骨架运行在引擎 客户端,是代理在服务端的等价物,负责在ICE和应用程序之间进行线程控制。也就是说, 本发明作业调度引擎分为服务端和客户端两个部分,服务端包含服务接口层和调度管理 层,运行在管理节点上,客户端运行在计算资源层中的所有计算节点上。引擎利用ICE来实 现服务端和客户端之间的网络通信,完成远程调用计算节点上的应用程序和监测计算节点 的运行状态。 作为引擎的核心,调度管理层需要完成作业分配和节点管理两个核心功能。调度 管理层内部维护三个列表,分别是计算节点列表、可用节点列表和作业等待列表。计算节点 列表记录了计算资源层中的所有计算节点信息,包括节点的运行状态、可运行的最大作业 数和地址信息等。可用节点列表记录了当前正在运行的计算节点信息,包括已经占用的作 业数、空闲的作业数和占用作业参数等。作业等待列表记录了需要等待分配节点的计算作 业。本发明引擎采用FIFO算法来管理计算节点中的可用节点列表,如图2所示。FIFO 算法在作业分配控制器中进行,通过作业分配控制器对可用节点队列进行管理,能够根据 计算节点的负载情况对并发的计算作业进行调度。当有作业请求时,调度管理层从可用节 点列表中取出第一个节点,将该作业请求分配给该节点。同时,修改该节点的负载情况,将 该节点的已占用作业数增加和空闲作业数减小,把该节点排到队列末尾。当请求作业处理 完成后,根据节点返回的结果信息从可用节点列表中将该节点找出,修改该节点的负载情 况,将刚才所占用的作业资源释放。如果可用节点列表中的第一个节点没有空闲的作业资 源,则直接将其放回队列末尾,取第二个节点,以此类推。如果可用节点列表中的所有节点 都没有空闲作业资源,则将该请求的作业放入到一个作业等待列表中,直到可用节点队列 中的节点释放出空闲的作业资源。为了提高引擎的效率,在有新的作业请求时,引擎先查询作业等待列表中是否有 正在等待节点资源的作业。如果没有等待的作业,则引擎从可用节点列表中查询具有空闲 资源的节点,并将该作业分配给取出的节点。如果尚有等待的作业,则引擎直接将该作业排 入作业等待列表。计算资源层中的所有计算节点组成一个计算集群,彼此之间互相备份,但是节点 之间的联系是松耦合的,可以实现根据实际应用时引擎的负载情况增删节点而不会影响引 擎的稳定性,以保证引擎具有可扩展性。当有新的计算节点加入或者移出计算节点时,只需 要更改引擎的配置文件,然后重新启动引擎。引擎启动时,会从配置文件中读取计算节点信 息,并将其保存到计算节点列表和可用节点列表内。在无故障节点的情况下,计算节点列表 和可用节点列表内的节点个数是一致的。本发明引擎通过节点管理器来动态管理计算节点队列,从而对计算节点的进行运 行状态监控,可以根据实际应用情况对计算节点进行删减,以保证引擎的可扩展性和可靠性。为了提高引擎的可用性和容错性,节点管理器定时对计算资源层中的计算节点进行是 否宕机的检测。根据计算节点列表中的节点信息,节点管理器向计算节点发出应答请求,如 果计算节点在规定时间内没有应答,则认为该节点已经宕机。如果该节点当前状态为运行, 节点管理器会将该节点从可用节点列表中移出,并将计算节点列表中该节点的运行状态改 为停止。如果在该节点上尚有未完成的作业,则先将正在运行的作业移至下一个节点上,再 将该节点从可用节点列表中移出。如果节点管理器向处于停止状态的计算节点发出应答请 求后,该节点及时向节点管理器返回应答,则表明该计算节点已经恢复运行,节点管理器会 将该节点的状态改为运行,再将其加入到可用节点列表。引擎启动时,会从配置文件中读取计算节点信息,并将其保存到计算节点队列和 可用节点队列内。配置文件中定义了计算节点的地址信息、节点名称和最大作业数。其中, 计算节点的硬件性能(如CPU个数、内存大小等)决定节点上所支持的最大作业数。如图 3所示,启动后,引擎处于等待状态,服务接口层接收到外部的计算作业请求后,将作业请求 发给调度管理层。调度管理层先判断作业等待队列中是否有处于等待状态的队列,如果有 等待作业则将作业插入到队列中,如果无等待作业则判断可用节点对列中是否有可用状态 的计算节点。如果无可用节点则将该作业插入到作业等待队列中,如果有可用节点则直接 将作业分配给该节点上。作业计算完毕后,将作业结果返回。调度管理层定时向计算节点 发出监控请求,并根据节点运行状态更新计算节点队列和可用节点队列。 本发明说明书中未作详细描述的内容属本领域技术人员的公知技术。
权利要求
1.基于ICE的分布式作业调度引擎,其特征在于采用三层分布式对象的体系架构,包 括服务接口层、调度管理层和计算资源层,调度管理层和计算资源层之间通过ICE进行通 信,服务接口层和调度管理层之间通过接口函数完成作业提交和结果返回,其中服务接口层属于引擎服务端,接收外部输入的计算作业请求,将计算作业请求提交到 调度管理层;将调度管理层传来的计算作业处理结果返回给外部;调度管理层属于引擎服务端,实时监控计算资源层中各计算节点的负载状态,根据各 计算节点的负载情况将服务接口层接收的计算作业请求分配给相关的计算节点进行处理; 将计算资源层中各计算节点的计算作业请求处理结果返回给服务接口层;计算资源层包含有多个计算节点,各计算节点部署了引擎客户端,服从调度管理层的 调度分配,对分配的计算作业请求进行处理并将处理结果返回给调度管理层。
2.根据权利要求1所述的基于ICE的分布式作业调度引擎,其特征在于所述的调度 管理层包括配置文件、计算节点列表、可用节点列表、作业等待列表、作业分配控制器和节 点管理器,其中配置文件存储计算资源层中各计算节点的信息,包括计算节点的名称、地址、最大作 业数;计算节点列表记录计算资源层中各计算节点的名称、地址、最大作业数,同时实时记 录计算节点的可用状态;可用节点列表记录处于可用状态的计算节点正在执行作业的参数、占用的作业数和 空闲的作业数;作业等待列表记录需要等待分配计算节点的计算作业请求; 作业分配控制器负责对计算作业请求进行分配,当有计算作业请求时,从可用节点列 表中取出第一个节点,如果该节点的空闲作业数不为零,将当前的计算作业请求分配给该 节点,同时修改该节点的负载情况,将该节点的已占用作业数增加,空闲作业数减小,并把 该节点排到可用节点列表的末尾,如果该节点的空闲作业数为零,则直接将该节点排到可 用节点列表的末尾,依次类推从可用节点列表中读取下一节点进行处理;当计算作业请求 处理完成后,从可用节点列表中将处理该计算作业请求的计算节点找出,修改该节点的负 载情况,同时将该节点的已占用作业数减小,空闲作业数增加;如果可用节点列表中的所有 节点都没有空闲作业资源,则将该计算作业请求送入作业等待列表排队等待,直到可用节 点队列中的作业节点释放出空闲的作业资源;节点管理器将配置文件存储的信息送至计算节点列表和可用节点列表,对各计算节 点定时发送监控请求,根据计算节点是否对监控请求发出回应判断计算节点状态正常或者 故障并对计算节点列表和可用节点列表进行实时更新。
全文摘要
基于ICE的分布式作业调度引擎,采用三层分布式对象的体系结构,分为服务接口层、调度管理层和计算资源层。引擎定义了计算节点队列和可用节点队列,并利用先进先出(FIFO)算法对可用节点队列中的多个计算节点进行分布式的管理,并且能够根据计算节点的负载情况,将计算作业分配给集群内的计算节点。引擎采用ICE中间件技术实现服务端与客户端之间的通讯,可以根据实际应用时引擎的负载情况增删计算节点而不会影响引擎的稳定性,具有容易扩展维护、占用网络带宽和系统资源低、可靠性高等优点。
文档编号G06F9/46GK102033777SQ20101028601
公开日2011年4月27日 申请日期2010年9月17日 优先权日2010年9月17日
发明者喻文勇, 王治中 申请人:中国资源卫星应用中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1