CN107423122A - 一种复杂运维作业编排与调度系统及其方法 - Google Patents
一种复杂运维作业编排与调度系统及其方法 Download PDFInfo
- Publication number
- CN107423122A CN107423122A CN201710610131.5A CN201710610131A CN107423122A CN 107423122 A CN107423122 A CN 107423122A CN 201710610131 A CN201710610131 A CN 201710610131A CN 107423122 A CN107423122 A CN 107423122A
- Authority
- CN
- China
- Prior art keywords
- task
- scheduling
- execution
- worker
- job
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Abstract
本发明涉及一种复杂运维作业编排与调度系统,包括任务编排模块、任务调度模块和任务执行模块;其中,任务编排模块,用于将作业划分为整体复杂任务Task、运行步骤step及执行任务job三类对象,并根据三类对象的数据和关联关系编排;任务调度模块,用于将任务调度划分为server、scheduler和worker三个层面的调度,并根据任务编排模块的编排执行任务调度;任务执行模块,用于根据任务调度的worker调度执行任务。本方法可以将多机器的复杂运维过程作业模板化,通过三层调度实现任务快速高效的执行。减少运维人员的人工干预过程。提高运维效率。
Description
技术领域
本发明属于数字化业务技术领域,具体涉及一种复杂运维作业编排与调度系统及其方法。
背景技术
Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
随着互联网+和去IOE浪潮的推进,传统行业X86服务器的数量逐渐增多。服务器数量剧增带来的直接后果就是运维复杂度的增加。而且随着应用数量的增多,需要同时对多个应用进行快速高效的备份或者持续部署等非常复杂的操作。传统的运维思路已经很难满足现实的需求。
发明内容
本发明所要解决的技术问题是,克服现有技术的缺点,提供一种复杂运维作业编排与调度系统及其方法,将复杂运维操作基于特定场景通过编排的方式进行运维作业固化,从而减少运维操作的复杂度,提高运维操作的执行效率。
为了解决以上技术问题,本发明提供一种复杂运维作业编排与调度系统,包括任务编排模块、任务调度模块和任务执行模块;其中,
任务编排模块,用于将作业划分为整体复杂任务Task、运行步骤step及执行任务job三类对象,并根据三类对象的数据和关联关系编排;
任务调度模块,用于将任务调度划分为server、scheduler和worker三个层面的调度,并根据任务编排模块的编排执行任务调度;
任务执行模块,用于根据任务调度的worker调度执行任务。
本发明进一步限定的技术方案是:系统基于Zookeeper作为服务的注册和管理中心;通过RabbitMQ进行服务模块之间消息的传递;并采用MySQL作为基础数据的数据库。
作为本发明的进一步改进,进一步,任务编排模块中整体复杂任务Task接收业务数据,进行数据校验,当数据格式正确情况下执行各个运行步骤step,在单个运行步骤step中获取具体执行任务job列表,并对每个执行任务job列表的任务参数封装成一个任务线程。
作为本发明的进一步改进,更进一步,运行步骤step之间存在依赖关系则采用串行执行,运行步骤step之间不存在依赖关系则可放入同一个运行步骤 step中执行,运行step内部的执行任务job采用并行执行。
作为本发明的进一步改进,进一步,整体复杂任务Task、运行步骤step和执行任务job的数据和关联关系数据存放在MySQL数据库中。
作为本发明的进一步改进,进一步,任务调度模块中server向scheduler 发送执行任务job的信息,scheduler接收后根据worker的数量以及单个worker 的处理能力经验值计算该次执行任务job需要调用worker的最优次数,并下发到具体worker中执行,worker根据自身处理能力的大小,将多个目标机器进行再次分割,然后并发执行任务,执行结束后将结果回传到server的任务线程中。
作为本发明的进一步改进,更进一步,server和scheduler的调度方式包括pull和push两种模式,即server定时向scheduler推送任务消息和 scheduler在任务执行结束之后也会向server询问是否有其他可执行的任务。
作为本发明的进一步改进,进一步,任务执行模块中worker接受到执行任务job执行的接口调用,判断执行任务job的参数格式,若不满足参数格式要求的直接返回出错;若满足则根据工具类型进行分类,worker会调用相应分类的模块接口进行任务的执行和结果的收集。
作为本发明的进一步改进,进一步,任务编排模块、任务调度模块和任务执行模块运行基于B/S架构的管理平台。
一种复杂运维作业编排与调度方法,包括如下步骤:
将作业划分为整体复杂任务Task、运行步骤step及执行任务job三类对象,并根据三类对象的数据和关联关系编排;
将任务调度划分为server、scheduler和worker三个层面的调度,并根据任务编排模块的编排执行任务调度;
根据任务调度的worker调度执行任务。
本发明的有益效果是:本方法可以将多机器的复杂运维过程作业模板化,通过三层调度实现任务快速高效的执行。减少运维人员的人工干预过程。提高运维效率。
具体实施方式
实施例1
本发明的一种复杂运维作业编排与调度系统,包括任务编排模块、任务调度模块和任务执行模块;其中,
任务编排模块,用于将作业划分为整体复杂任务Task、运行步骤step及执行任务job三类对象,并根据三类对象的数据和关联关系编排;
任务调度模块,用于将任务调度划分为server、scheduler和worker三个层面的调度,并根据任务编排模块的编排执行任务调度;
任务执行模块,用于根据任务调度的worker调度执行任务。
以下将对上各模块中的操作规则、方式等进行详细说明;
本系统运行基于B/S架构的管理平台,依靠Zookeeper作为服务的注册和管理中心;通过RabbitMQ进行服务模块之间消息的传递;并采用MySQL作为基础数据的数据库。
任务编排模块中整体复杂任务Task接收业务数据,进行数据校验,当数据格式正确情况下执行各个运行步骤step,在单个运行步骤step中获取具体执行任务job列表,并对每个执行任务job列表的任务参数封装成一个任务线程。例如:发布一个JavaWeb应用到2台机器上。首先,下掉负载,停掉web服务器(以Tomcat为例);其次,清理掉缓存数据和不用的日志数据;第三步,将应用包从软件仓库拷贝到目标机器的指定路径;第四步,启动web服务器;最后一步,更新应用的负载。形成一个由五个操作步骤的复杂任务,将这个复杂任务定义为三类对象:Task,step,job。Task就是整个的复杂任务,step即为五个步骤。Job就是每个步骤具体要做的事情。在任务编排时把这三类对象数据和关联关系数据存放到数据库中,数据如下:
在执行过程中,运行步骤step之间存在依赖关系则采用串行执行,运行步骤step之间不存在依赖关系则可放入同一个运行步骤step中执行,运行step 内部的执行任务job采用并行执行。运行过程如下:
首先,Task接受到整个任务数据,先会进行数据校验。在格式正确的情况下依次执行各个步骤Step,在单个Step中获取具体执行的job列表,并对每个 job的任务参数封装成一个任务线程,丢到线程池中去执行。
其次,线程执行时会将具体的任务发送到Scheduler中,然后等待MQ中的 job处理结果,Scheduler在接受到任务之后会根据目标机器和worker的数量以及单个worker的处理能力经验值来计算出此次job需要调用worker的最优次数。然后将任务下发到具体的worker中来执行。同时,告知worker任务结果发送到MQ中的消息队列。同时监听MQ中该队列的消息,接收到消息之后处理并回传到server中的任务线程中。
最后,worker在接受到任务参数和结果队列信息之后,会根据目标机器数量进行再次调度,然后收集任务处理结果并发送到scheduler执行的消息队列中去。这样,server接收到该step的所有job执行结果之后会继续执行下一步骤中的各个job。最终把整个复杂任务处理完成。
任务调度模块中,server向scheduler发送执行任务job的信息,scheduler 接收后根据worker的数量以及单个worker的处理能力经验值计算该次执行任务job需要调用worker的最优次数,并下发到具体worker中执行,worker根据自身处理能力的大小,将多个目标机器进行再次分割,然后并发执行任务,执行结束后将结果回传到server的任务线程中。
server和scheduler的调度方式包括pull和push两种模式,即server定时向scheduler推送任务消息和scheduler在任务执行结束之后也会向server 询问是否有其他可执行的任务。
例如目标机器有M台,worker数量有W个,每个worker处理任务的经验值是C个,伪代码如下:
任务执行模块中通过整体结构中的worker来执行。Worker在接受到任务执行的接口调用之后:首先会判断任务的参数格式,不满足参数格式要求的直接返回出错;格式正确的参数会被基于工具类型进行分类,如果是Ansible类的任务,worker会调用ansbile的模块接口进行任务的执行和结果的收集。如果是SaltStack类的任务,worker会调用SaltStack的模块接口进行任务的执行和结果的收集。最后,worker会以消息的形式将任务执行结果发送到任务下发时指定的RabbitMQ的消息队列中。最后Server会监听到此消息并进行进一步的处理。
本发明还提供一种复杂运维作业编排与调度方法,包括如下步骤:
将作业划分为整体复杂任务Task、运行步骤step及执行任务job三类对象,并根据三类对象的数据和关联关系编排;
将任务调度划分为server、scheduler和worker三个层面的调度,并根据任务编排模块的编排执行任务调度;
根据任务调度的worker调度执行任务。
除上述实施例外,本发明还可以有其他实施方式。凡采用等同替换或等效变换形成的技术方案,均落在本发明要求的保护范围。
Claims (10)
1.一种复杂运维作业编排与调度系统,其特征在于,包括任务编排模块、任务调度模块和任务执行模块;其中,
所述任务编排模块,用于将作业划分为整体复杂任务Task、运行步骤step及执行任务job三类对象,并根据三类对象的数据和关联关系编排;
所述任务调度模块,用于将任务调度划分为server、scheduler和worker三个层面的调度,并根据任务编排模块的编排执行任务调度;
所述任务执行模块,用于根据任务调度的worker调度执行任务。
2.根据权利要求1所述的一种复杂运维作业编排与调度系统及其方法,其特征在于,系统基于Zookeeper 作为服务的注册和管理中心;通过RabbitMQ进行服务模块之间消息的传递;并采用MySQL作为基础数据的数据库。
3.根据权利要求1所述的一种复杂运维作业编排与调度系统及其方法,其特征在于,所述任务编排模块中所述整体复杂任务Task接收业务数据,进行数据校验,当数据格式正确情况下执行各个运行步骤step,在单个运行步骤step中获取具体执行任务job列表,并对每个执行任务job列表的任务参数封装成一个任务线程。
4.根据权利要求1或3所述的一种复杂运维作业编排与调度系统及其方法,其特征在于,所述运行步骤step之间存在依赖关系则采用串行执行,所述运行步骤step之间不存在依赖关系则可放入同一个运行步骤step中执行,所述运行step内部的所述执行任务job采用并行执行。
5.根据权利要求1或3所述的一种复杂运维作业编排与调度系统及其方法,所述整体复杂任务Task、所述运行步骤step和所述执行任务job的数据和关联关系数据存放在MySQL数据库中。
6.根据权利要求1所述的一种复杂运维作业编排与调度系统及其方法,其特征在于,所述任务调度模块中所述server向所述scheduler发送执行任务job的信息,所述scheduler接收后根据worker的数量以及单个worker的处理能力经验值计算该次执行任务job需要调用worker的最优次数,并下发到具体worker中执行,worker根据自身处理能力的大小,将多个目标机器进行再次分割,然后并发执行任务,执行结束后将结果回传到所述server的任务线程中。
7.根据权利要求1或6所述的一种复杂运维作业编排与调度系统及其方法,其特征在于,所述server和所述scheduler的调度方式包括pull和push两种模式,即所述server定时向所述scheduler推送任务消息和scheduler在任务执行结束之后也会向server询问是否有其他可执行的任务。
8.根据权利要求1所述的一种复杂运维作业编排与调度系统及其方法,其特征在于,所述任务执行模块中worker接受到执行任务job执行的接口调用,判断执行任务job的参数格式,若不满足参数格式要求的直接返回出错;若满足则根据工具类型进行分类,worker会调用相应分类的模块接口进行任务的执行和结果的收集。
9.根据权利要求1所述的一种复杂运维作业编排与调度系统及其方法,其特征在于,所述任务编排模块、所述任务调度模块和所述任务执行模块运行基于B/S架构的管理平台。
10.一种复杂运维作业编排与调度方法,其特征在于,包括如下步骤:
将作业划分为整体复杂任务Task、运行步骤step及执行任务job三类对象,并根据三类对象的数据和关联关系编排;
将任务调度划分为server、scheduler和worker三个层面的调度,并根据任务编排模块的编排执行任务调度;
根据任务调度的worker调度执行任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710610131.5A CN107423122B (zh) | 2017-07-25 | 2017-07-25 | 一种复杂运维作业编排与调度系统及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710610131.5A CN107423122B (zh) | 2017-07-25 | 2017-07-25 | 一种复杂运维作业编排与调度系统及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107423122A true CN107423122A (zh) | 2017-12-01 |
CN107423122B CN107423122B (zh) | 2020-08-18 |
Family
ID=60430993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710610131.5A Active CN107423122B (zh) | 2017-07-25 | 2017-07-25 | 一种复杂运维作业编排与调度系统及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107423122B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110659116A (zh) * | 2019-08-15 | 2020-01-07 | 中国科学院计算机网络信息中心 | 一种大数据etl任务的调度方法 |
CN110795224A (zh) * | 2019-10-30 | 2020-02-14 | 北京思特奇信息技术股份有限公司 | 一种基于Ansible的自动化运维系统和方法 |
CN111736967A (zh) * | 2020-05-27 | 2020-10-02 | 国网电力科学研究院有限公司 | 多分支流程管控装置、流程模板生成方法及存储介质 |
CN112181621A (zh) * | 2020-09-27 | 2021-01-05 | 中国建设银行股份有限公司 | 一种任务调度系统、方法、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101986603A (zh) * | 2010-08-24 | 2011-03-16 | 大唐软件技术股份有限公司 | 一种基于数据驱动的工作流动态流程构建方法和系统 |
CN102096602A (zh) * | 2009-12-15 | 2011-06-15 | 中国移动通信集团公司 | 一种任务调度方法及其系统和设备 |
CN103473287A (zh) * | 2013-08-30 | 2013-12-25 | 中国科学院信息工程研究所 | 一种自动分发、运行和更新可执行程序的方法及系统 |
CN103647834A (zh) * | 2013-12-16 | 2014-03-19 | 上海证券交易所 | 一种用于处理多阶段分布式任务调度的系统及方法 |
CN105005469A (zh) * | 2015-06-03 | 2015-10-28 | 浙江大学 | 一种基于Zookeeper和RabbitMQ的非阻塞调用方法 |
CN106874090A (zh) * | 2017-01-23 | 2017-06-20 | 北京思特奇信息技术股份有限公司 | 基于云系统的作业调度方法和系统 |
-
2017
- 2017-07-25 CN CN201710610131.5A patent/CN107423122B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096602A (zh) * | 2009-12-15 | 2011-06-15 | 中国移动通信集团公司 | 一种任务调度方法及其系统和设备 |
CN101986603A (zh) * | 2010-08-24 | 2011-03-16 | 大唐软件技术股份有限公司 | 一种基于数据驱动的工作流动态流程构建方法和系统 |
CN103473287A (zh) * | 2013-08-30 | 2013-12-25 | 中国科学院信息工程研究所 | 一种自动分发、运行和更新可执行程序的方法及系统 |
CN103647834A (zh) * | 2013-12-16 | 2014-03-19 | 上海证券交易所 | 一种用于处理多阶段分布式任务调度的系统及方法 |
CN105005469A (zh) * | 2015-06-03 | 2015-10-28 | 浙江大学 | 一种基于Zookeeper和RabbitMQ的非阻塞调用方法 |
CN106874090A (zh) * | 2017-01-23 | 2017-06-20 | 北京思特奇信息技术股份有限公司 | 基于云系统的作业调度方法和系统 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110659116A (zh) * | 2019-08-15 | 2020-01-07 | 中国科学院计算机网络信息中心 | 一种大数据etl任务的调度方法 |
CN110795224A (zh) * | 2019-10-30 | 2020-02-14 | 北京思特奇信息技术股份有限公司 | 一种基于Ansible的自动化运维系统和方法 |
CN111736967A (zh) * | 2020-05-27 | 2020-10-02 | 国网电力科学研究院有限公司 | 多分支流程管控装置、流程模板生成方法及存储介质 |
CN111736967B (zh) * | 2020-05-27 | 2022-09-09 | 国网电力科学研究院有限公司 | 多分支流程管控装置、流程模板生成方法及存储介质 |
CN112181621A (zh) * | 2020-09-27 | 2021-01-05 | 中国建设银行股份有限公司 | 一种任务调度系统、方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107423122B (zh) | 2020-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107423122A (zh) | 一种复杂运维作业编排与调度系统及其方法 | |
CN106802826A (zh) | 一种基于线程池的业务处理方法及装置 | |
JP3717967B2 (ja) | プロセス機械の制御とスケジューリングを行う装置と方法 | |
CN107766132A (zh) | 多任务调度方法、应用服务器及计算机可读存储介质 | |
CN106020777B (zh) | 一种数据处理方法、装置及系统 | |
CN107506234A (zh) | 一种虚拟机调度方法及装置 | |
CN106709628A (zh) | 一种生产排程方法及系统 | |
CN110245181A (zh) | 数据同步的同步方法、装置及计算机存储介质 | |
CN108055350A (zh) | 一种物联网数据智能采集分析方法 | |
CN107797853A (zh) | 一种任务调度方法、装置及多核处理器 | |
CN106611270A (zh) | 一种求解并行机作业车间调度的混合启发式转移瓶颈算法 | |
CN111260320B (zh) | 面料订单的排程方法及装置 | |
CN101976240A (zh) | 表单编号生成方法和系统 | |
CN111356988A (zh) | 用于调度半导体加工的方法和系统 | |
CN107360233A (zh) | 文件上传的方法、装置、设备及可读存储介质 | |
CN105488134A (zh) | 大数据处理方法及大数据处理装置 | |
CN115169886A (zh) | 一种pcb钻孔工序自动排程方法、系统、介质及装置 | |
CN110532021A (zh) | 分布式控制系统的组态文件的处理方法及装置 | |
CN102750596A (zh) | 结合虚拟情境的生产线管理系统及其方法 | |
CN104576441A (zh) | 基于作业区域的半导体封装线lot多规则调度方法 | |
CN107018168A (zh) | 互联网资源调度方法及装置、网络红包调度方法 | |
CN109800078A (zh) | 一种任务处理方法、任务分发终端及任务执行终端 | |
CN107808226A (zh) | 基于最早开始时间的二车间柔性综合调度方法 | |
CN107122952A (zh) | 基于规则的流程调度方法及系统 | |
CN110232486A (zh) | 基于k最短路径的多车间综合调度方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: 215213 South Floor 4, Fuhua Building, No. 199 Chongwen Road, Suzhou Industrial Park, Suzhou, Jiangsu Province Patentee after: Jiangsu Boyun Technology Co.,Ltd. Address before: 215213 South Floor 4, Fuhua Building, No. 199 Chongwen Road, Suzhou Industrial Park, Suzhou, Jiangsu Province Patentee before: SUZHOU BONA XUNDONG SOFTWARE Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |