基于消息机制的集群任务自调度系统与方法

文档序号:7860378阅读:393来源:国知局
专利名称:基于消息机制的集群任务自调度系统与方法
技术领域
本发明属于计算机网络领域,具体涉及 一种基于消息机制的集群任务自调度系统与方法。
背景技术
随着云计算和互联网技术的高速发展,服务器集群的规模也在不断的扩大,在大规模的应用中,集群中服务器节点的个数已经上万,并以指数倍的速度持续增长。因此,运维人员面临的运维压力与日俱增,运维工作陷入瓶颈,主要表现在以下几个方面(I)运维复杂度高。集群规模的扩大,服务器节点角色的增加,导致集群运维的复杂程度不断提升,运维管理员清楚的掌握所有服务器的配置情况几乎不可能。(2)运维自动化程度低。大量的维护工作还由运维管理员手动完成,针对服务器的一个较小的控制维护工作也因集群规模的庞大变成一个浩大工程。而一些自动化工具也受限于支持的规模无法将集群统一管理。(3)定期的重复工作量大。运维人员会面临大量定期执行的重复任务和工作,这些重复工作消耗了大量人力资源。针对以上运维过程中的问题,出现了一些自动化集群运维工具,例如Puppet,Control Tire等,这些自动化运维工具在一定程度上能缓解运维人员的工作压力,但是仍然存在许多问题。现有的运维自动化大多采用一个管理端,多个被管理端的集中式管理方式。管理端与被管理端的通信、调度机制是决定运维工作效率的核心。而现有的自动化运维系统主要存在以下几个问题(I)大规模集群执行任务时效率低下。主要原因是管理节点和被管理节点间采用同步通信机制,这样管理节点会依次向被管理节点分发任务,并等待任务分发或执行结果。个别节点的异常情况会造成管理节点处于等待状态,管理节点此时无法对其他节点进行任务的下发及调度,从而造成集群任务执行效率的降低。(2)管理节点调度压力过大。集群中被管理节点的所有任务都由管理节点定期调度,造成管理节点的压力过大。限制了一个管理节点可管理的服务器规模。缺少对集群所有服务器任务调度执行情况的跟踪。大多集群自动化运维系统只提供了管理端到被管理端的任务调度功能,而各被管理节点的任务执行情况不会反馈给管理端。这样,运维人员无法轻易的得到所有任务调度节点的任务执行结果情况。

发明内容
为克服上述缺陷,本发明提供了一种基于消息机制的集群任务自调度系统与方法,使集群管理节点与被管理节点通过消息机制进行异步通信,实现任务的下发和任务执行结果的收集。提高了集群管理节点的处理能力;而且服务器任务自调度模式,将集群任务的调度由管理端转移到被管理端,实现一次分发,长久自调度。降低了集群管理端的负载,从而提升管理端的管理规模。为实现上述目的,本发明提供一种基于消息机制的集群任务自调度系统,包括数据库,其改进之处在于,所述系统包括依次进行数据交互的管理单元、消息中间件和代理单元;所述数据库与所述管理单元进行数据交互。本发明提供的优选技术方案中,所述管理单元,包括任 务发送模块和结果接收模块。本发明提供的第二优选技术方案中,所述任务发送模块,提供统一的任务定义接口,并根据实际配置的任务策略,将任务下发给所述代理单元;结果接收模块,实时接收代理单元发来的任务执行结果,并对结果进行归并及存储,并提供任务监控查询接口。本发明提供的第三优选技术方案中,所述消息中间件,包括任务队列模块和执行结果队列模块;所述任务队列模块存储有任务队列,所述执行结果队列模块存储有执行结果队列。本发明提供的第四优选技术方案中,所述任务发送模块通过所述任务队列模块向所述代理单元传输任务;所述结果接收模块通过所述执行结果队列模块接收所述代理单元传输的任务执行结果。本发明提供的第五优选技术方案中,所述消息中间件采用ActiveMQ。本发明提供的第六优选技术方案中,所述代理单元,包括依次进行数据通信的存储模块、任务执行模块和执行结果反馈模块。本发明提供的第七优选技术方案中,所述存储模块,接收并存储所述管理单元传输的任务;所述任务执行模块,根据接收到的任务的调度策略定期或定时的执行任务;所述执行结果反馈模块,将执行完任务的结果反馈给所述管理单元。本发明提供的第八优选技术方案中,提供一种基于消息机制的集群任务自调度方法,其改进之处在于,所述方法包括如下步骤(I).管理单元向代理单元分配任务;(2).代理单元对分配的任务进行调度和执行;(3).管理单元对已执行的任务结果进行收集。本发明提供的第九优选技术方案中,所述步骤I包括如下步骤(1-1).管理单元的任务发送模块定义任务的基本信息;(1-2).管理单元将任务的基本信息保存到数据库中,作为任务的元数据;(1-3).管理单元将任务封装成不同的消息,发送到消息中间件的任务队列模块中;(1-4).各个代理单元监听消息中间件上的任务队列,接收与自己对应的消息,并通知消息中间件从任务队列中删除消息;(1-5).代理单元将接收的任务消息进行解析,并封装成XML格式的文件进行存储。本发明提供的第十优选技术方案中,任务的基本信息,包括任务名称、任务描述、任务内容、任务执行策略和目标服务器节点;其中,任务内容包括服务器具体要进行的操作,启停服务和执行脚本。本发明提供的较优选技术方案中,所述步骤2包括如下步骤
(2-1).代理单元加载所有本地XML格式任务模型,并转换为可执行的任务;(2-2).代理单元根据任务执行时间策略,定期或定时执行任务;(2-3).代理单元将任务执行结果封装为消息,发送到消息中间件的执行结果队列模块中;其中,消息携带了所在代理单元的唯一标识。本发明提供的第二较优选技术方案中,任务执行时间策略包括定时任务指定时间,完成一次操作;循环任务一个循环周期内的特定时间点,完成一次操作,循环周期包括每小时、每天、每周、每月和每年;立即执行任务接受时立即执行;和自定义策略多个具体时间。本发明提供的第三较优选技术方案中,所述步骤3包括如下步骤
(3-1).管理单元监听执行结果队列,接收进入队列的消息,接收完成后,消息队列删除已被接收的消息;(3-2).管理单元解析消息,根据消息中代理单元的唯一标识,将任务执行结果保存到数据库中,完成执行结果的收集;(3-3).管理单元将所有任务执行结果进行归并,并提供统一的查询和浏览任务执行结果的接口。与现有技术比,本发明提供的一种基于消息机制的集群任务自调度系统与方法,提供了管理集群的统一入口,运维人员可以轻松的通过管理端对整合集群做管理和配置操作;提供了集群任务收集功能,并向运维人员开放了统一的查询浏览入口,使得运维人员轻松的了解集群的任务执行情况;而且完善了任务执行策略及服务器自调度模式,运维人员所做的定期重复工作将由服务器自己完成;再者,集群管理端与被管理端的异步通信机制,增强了管理端管控服务器的规模。


图I为基于消息机制的集群任务自调度系统的结构示意图。图2为基于消息机制的集群任务自调度方法的流程图。图3为基于消息机制的集群任务自调度方法的任务结果收集流程图。
具体实施例方式如图I所示,一种基于消息机制的集群任务自调度系统,包括数据库、依次进行数据交互的管理单元、消息中间件和代理单元;所述数据库与所述管理单元进行数据交互。所述管理单元,包括任务发送模块和结果接收模块。所述任务发送模块,提供统一的任务定义接口,并根据实际配置的任务策略,将任务下发给所述代理单元;结果接收模块,实时接收代理单元发来的任务执行结果,并对结果进行归并及存储,并提供任务监控查询接口。所述消息中间件,包括任务队列模块和执行结果队列模块;所述任务队列模块存储有任务队列,所述执行结果队列模块存储有执行结果队列。所述任务发送模块通过所述任务队列模块向所述代理单元传输任务;所述结果接收模块通过所述执行结果队列模块接收所述代理单元传输的任务执行结果。所述消息中间件采用ActiveMQ。
所述代理单元,包括依次进行数据通信的存储模块、任务执行模块和执行结果反馈模块。所述存储模块,接收并存储所述管理单元传输的任务;所述任务执行模块,根据接收到的任务的调度策略定期或定时的执行任务;所述执行结果反馈模块,将执行完任务的结果反馈给所述管理单元。如图2所示,一种基于消息机制的集群任务自调度方法,所述方法包括如下步骤(I).管理单元向代理单元分配任务;(2).代理单元对分配的任务进行调度和执行;·
(3).管理单元对已执行的任务结果进行收集。所述步骤I包括如下步骤(1-1).管理单元的任务发送模块定义任务的基本信息;(1-2).管理单元将任务的基本信息保存到数据库中,作为任务的元数据;(1-3).管理单元将任务封装成不同的消息,发送到消息中间件的任务队列模块中;(1-4).各个代理单元监听消息中间件上的任务队列,接收与自己对应的消息,并通知消息中间件从任务队列中删除消息;(1-5).代理单元将接收的任务消息进行解析,并封装成XML格式的文件进行存储。任务的基本信息,包括任务名称、任务描述、任务内容、任务执行策略和目标服务器节点;其中,任务内容包括服务器具体要进行的操作,如启停服务和执行脚本等。所述步骤2包括如下步骤(2-1).代理单元加载所有本地XML格式任务模型,并转换为可执行的任务;(2-2).代理单元根据任务执行时间策略,定期或定时执行任务;(2-3).代理单元将任务执行结果封装为消息,发送到消息中间件的执行结果队列模块中;其中,消息携带了所在代理单元的唯一标识。任务执行时间策略包括定时任务指定时间,完成一次操作;循环任务一个循环周期内的特定时间点,完成一次操作,循环周期包括每小时、每天、每周、每月和每年;立即执行任务接受时立即执行;和自定义策略多个具体时间。所述步骤3包括如下步骤(3-1).管理单元监听执行结果队列,接收进入队列的消息,接收完成后,消息队列删除已被接收的消息;(3-2).管理单元解析消息,根据消息中代理单元的唯一标识,将任务执行结果保存到数据库中,完成执行结果的收集;(3-3).管理单元将所有任务执行结果进行归并,并提供统一的查询和浏览任务执行结果的接口。通过实施例对基于消息机制的集群任务自调度系统与方法做进一步描述。系统的核心主要由管理端程序(Server App)、消息中间件(MON)和代理端程序(Agent App)三部分构成管理端程序管理端程序部署在管理节点上,它一方面为运维人员提供统一的任务定义接口,并根据实际配置的任务策略,将任务下发给所有的任务执行者(需要执行操作的服务器)。另一方面,管理端程序会实时接收代理端程序发来的任务执行结果,并对结果进行归并及存储,同时提供给运维人员统一的任务监控查询接口,供运维人员跟踪集群的任务下发及执行情况。代理端程序它部署在所有被管理的服务器节点上。首先它负责接收管理端下发的任务,并对任务进行持久化存储。其次会根据接收到的任务的调度策略进行定期或定时的执行任务操作,实现代理端自调度功能。另外,代理端程序在每 次任务执行完毕后,会将任务的执行结果反馈给管理端。消息中间件消息中间件可以部署在独立的服务器上,也可以与管理端部署在同一服务器上。它是管理端与代理端的沟通的桥梁。管理端与代理端不会直接通信,所有的任务下发及任务执行结果的反馈都是通过消息中间件完成的。采用两个消息队列,实现了集群管理节点与被管理节点的异步通信。本专利中采用的是ActiveMQ作为消息中间件。基于消息机制的集群任务自调度方法的流程如下任务分发流程I.运维人员通过Server App提供的任务配置接口定义任务任务名称、任务描述、任务内容(服务器具体要进行的操作,启停服务、执行脚本等)、任务执行策略、目标服务器节点。2. Server App会将任务的基本信息保存到数据库中,作为任务的元数据。3. Server App将任务封装成针对不同目标服务器节点的消息,发送到消息中间件中的任务队列中。4.所有的Agent App会监听消息中间件上的任务队列,并过滤出目标为自己的消息进行接收,接收后删除任务队列中的该条消息。5. Agent App将接收的任务消息进行解析,并封装成XML格式的文件存储到本地,完成任务的接收。任务调度流程I. Agent App启动时加载所有本地XML格式任务模型,并转换为可执行的任务。2. Agent App根据可执行任务执行时间策略,定期或定时执行。其中任务执行时间策略主要有以下几种定时任务指定时间,完成一次操作。循环任务一个循环周期内的特定时间点,完成一次操作,循环周期包括每小时、每天、每周、每月、每年等。立即执行任务接受时立即执行。自定义策略多个具体时间。3. Agent App将任务执行结果封装为消息,发送到消息中间件的执行结果队列中。其中消息携带了 Agent所在服务器的唯一标识。任务调度流程的详细流程图如图3所示。任务结果收集流程I. Server App监听执行结果队列,一旦有消息进入队列,就接收消息,接收完成后,消息队列将删除已接收的消息。
2. Server App解析消息,根据消息中服务器的唯一标识,将任务执行结果保存到数据库中,完成执行结果的收集。3. Server App将所有服务器任务执行结果进行归并,为运维人员提供统一的查询和浏览接口。
需要声明的是,本发明内容及具体实施方式
意在证明本发明所提供技术方案的实际应用,不应解释为对本发明保护范围的限定。本领域技术人员在本发明的精神和原理启发下,可作各种修改、等同替换、或改进。但这些变更或修改均在申请待批的保护范围内。
权利要求
1.一种基于消息机制的集群任务自调度系统,其特征在于,所述系统包括依次进行数据交互的管理单元、消息中间件和代理单元;所述数据库与所述管理单元进行数据交互。
2.根据权利要求I所述的系统,其特征在于,所述管理单元,包括任务发送模块和结果接收模块。
3.根据权利要求2所述的系统,其特征在于,所述任务发送模块,提供统一的任务定义接口,并根据实际配置的任务策略,将任务下发给所述代理单元;结果接收模块,实时接收代理单元发来的任务执行结果,并对结果进行归并及存储,并提供任务监控查询接口。
4.根据权利要求I所述的系统,其特征在于,所述消息中间件,包括任务队列模块和执行结果队列模块;所述任务队列模块存储有任务队列,所述执行结果队列模块存储有执行结果队列。
5.根据权利要求4所述的系统,其特征在于,所述任务发送模块通过所述任务队列模块向所述代理单元传输任务;所述结果接收模块通过所述执行结果队列模块接收所述代理单元传输的任务执行结果。
6.根据权利要求4或者5所述的系统,其特征在于,所述消息中间件采用ActiveMQ。
7.根据权利要求I所述的系统,其特征在于,所述代理单元,包括依次进行数据通信的存储模块、任务执行模块和执行结果反馈模块。
8.根据权利要求7所述的系统,其特征在于,所述存储模块,接收并存储所述管理单元传输的任务;所述任务执行模块,根据接收到的任务的调度策略定期或定时的执行任务;所述执行结果反馈模块,将执行完任务的结果反馈给所述管理单元。
9.一种基于消息机制的集群任务自调度方法,其特征在于,所述方法包括如下步骤 (1).管理单元向代理单元分配任务; (2).代理单元对分配的任务进行调度和执行; (3).管理单元对已执行的任务结果进行收集。
10.根据权利要求9所述的方法,其特征在于,所述步骤I包括如下步骤 (1-1).管理单元的任务发送模块定义任务的基本信息; (1-2).管理单元将任务的基本信息保存到数据库中,作为任务的元数据; (1-3).管理单元将任务封装成不同的消息,发送到消息中间件的任务队列模块中; (1-4).各个代理单元监听消息中间件上的任务队列,接收与自己对应的消息,并通知消息中间件从任务队列中删除消息; (1-5).代理单元将接收的任务消息进行解析,并封装成XML格式的文件进行存储。
11.根据权利要求10所述的方法,其特征在于,任务的基本信息,包括任务名称、任务描述、任务内容、任务执行策略和目标服务器节点;其中,任务内容包括服务器具体要进行的操作,启停服务和执行脚本。
12.根据权利要求9所述的方法,其特征在于,所述步骤2包括如下步骤 (2-1).代理单元加载所有本地XML格式任务模型,并转换为可执行的任务; (2-2).代理单元根据任务执行时间策略,定期或定时执行任务; (2-3).代理单元将任务执行结果封装为消息,发送到消息中间件的执行结果队列模块中;其中,消息携带了所在代理单元的唯一标识。
13.根据权利要求12所述的方法,其特征在于,任务执行时间策略包括定时任务指定时间,完成一次操作;循环任务一个循环周期内的特定时间点,完成一次操作,循环周期包括每小时、每天、每周、每月和每年;立即执行任务接受时立即执行;和自定义策略多个具体时间。
14.根据权利要求9所述的方法,其特征在于,所述步骤3包括如下步骤 (3-1).管理单元监听执行结果队列,接收进入队列的消息,接收完成后,消息队列删除已被接收的消息; (3-2).管理单元解析消息,根据消息中代理单元的唯一标识,将任务执行结果保存到数据库中,完成执行结果的收集; (3-3).管理单元将所有任务执行结果进行归并,并提供统一的查询和浏览任务执行结果的接口。·
全文摘要
本发明提供了一种基于消息机制的集群任务自调度系统和方法,系统包括数据库,依次进行数据交互的管理单元、消息中间件和代理单元;所述数据库与所述管理单元进行数据交互;方法,包括如下步骤(1).管理单元向代理单元分配任务;(2).代理单元对分配的任务进行调度和执行;(3).管理单元对已执行的任务结果进行收集。本发明提供的基于消息机制的集群任务自调度系统和方法,使集群管理节点与被管理节点通过消息机制进行异步通信,实现任务的下发和任务执行结果的收集。提高了集群管理节点的处理能力;而且服务器任务自调度模式,将集群任务的调度由管理端转移到被管理端,实现一次分发,长久自调度。降低了集群管理端的负载,从而提升管理端的管理规模。
文档编号H04L29/08GK102904746SQ20121033955
公开日2013年1月30日 申请日期2012年9月13日 优先权日2012年9月13日
发明者李帅, 赵欢, 龚文, 王明 申请人:曙光信息产业(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1