CN107423122B - 一种复杂运维作业编排与调度系统及其方法 - Google Patents

一种复杂运维作业编排与调度系统及其方法 Download PDF

Info

Publication number
CN107423122B
CN107423122B CN201710610131.5A CN201710610131A CN107423122B CN 107423122 B CN107423122 B CN 107423122B CN 201710610131 A CN201710610131 A CN 201710610131A CN 107423122 B CN107423122 B CN 107423122B
Authority
CN
China
Prior art keywords
task
scheduling
module
execution
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.)
Active
Application number
CN201710610131.5A
Other languages
English (en)
Other versions
CN107423122A (zh
Inventor
丁明威
李亚琼
花磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangsu Boyun Technology Co ltd
Original Assignee
Suzhou Bona Xundong Software Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Bona Xundong Software Co ltd filed Critical Suzhou Bona Xundong Software Co ltd
Priority to CN201710610131.5A priority Critical patent/CN107423122B/zh
Publication of CN107423122A publication Critical patent/CN107423122A/zh
Application granted granted Critical
Publication of CN107423122B publication Critical patent/CN107423122B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling 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就是每个步骤具体要做的事情。在任务编排时把这三类对象数据和关联关系数据存放到数据库中,数据如下:
Figure GDA0001442729650000041
在执行过程中,运行步骤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个,伪代码如下:
Figure GDA0001442729650000051
任务执行模块中通过整体结构中的worker来执行。Worker在接受到任务执行的接口调用之后:首先会判断任务的参数格式,不满足参数格式要求的直接返回出错;格式正确的参数会被基于工具类型进行分类,如果是Ansible类的任务,worker会调用ansbile的模块接口进行任务的执行和结果的收集。如果是SaltStack类的任务,worker会调用SaltStack的模块接口进行任务的执行和结果的收集。最后,worker会以消息的形式将任务执行结果发送到任务下发时指定的RabbitMQ的消息队列中。最后Server会监听到此消息并进行进一步的处理。
本发明还提供一种复杂运维作业编排与调度方法,包括如下步骤:
将作业划分为整体复杂任务Task、运行步骤step及执行任务job三类对象,并根据三类对象的数据和关联关系编排;
将任务调度划分为server、scheduler和worker三个层面的调度,并根据任务编排模块的编排执行任务调度;
根据任务调度的worker调度执行任务。
除上述实施例外,本发明还可以有其他实施方式。凡采用等同替换或等效变换形成的技术方案,均落在本发明要求的保护范围。

Claims (7)

1.一种复杂运维作业编排与 调度系统,其特征在于,包括任务编排模块、任务调度模块和任务执行模块;其中,
所述任务编排模块,用于将作业划分为整体复杂任务Task、运行步骤step及执行任务job三类对象,并根据三类对象的数据和关联关系编排;
所述任务调度模块,用于将任务调度划分为server、scheduler和worker三个层面的调度,并根据任务编排模块的编排执行任务调度;
所述任务执行模块,用于根据任务调度的worker调度执行任务;
所述任务编排模块中所述整体复杂任务Task接收业务数据,进行数据校验,当数据格式正确情况下执行各个运行步骤step,在单个运行步骤step中获取具体执行任务job列表,并对每个执行任务job列表的任务参数封装成一个任务线程;
所述运行步骤step之间存在依赖关系则采用串行执行,所述运行步骤step之间不存在依赖关系则可放入同一个运行步骤step中执行,所述运行step内部的所述执行任务job采用并行执行;
线程执行时会将具体的任务发送到scheduler中,然后等待MQ中的job处理结果,即所述任务调度模块中所述server向所述scheduler发送执行任务job的信息,所述scheduler接收后根据worker的数量以及单个worker的处理能力经验值计算该次执行任务job需要调用worker的最优次数,并下发到具体worker中执行,worker根据自身处理能力的大小,将多个目标机器进行再次分割,然后并发执行任务,执行结束后将结果回传到所述server的任务线程中。
2.根据权利要求1所述的一种复杂运维作业编排与调度系统,其特征在于,系统基于Zookeeper作为服务的注册和管理中心;通过RabbitMQ进行服务模块之间消息的传递;并采用MySQL作为基础数据的数据库。
3.根据权利要求1所述的一种复杂运维作业编排与调度系统,所述整体复杂任务Task、所述运行步骤step和所述执行任务job的数据和关联关系数据存放在MySQL数据库中。
4.根据权利要求1所述的一种复杂运维作业编排与调度系统,其特征在于,所述server和所述scheduler的调度方式包括pull和push两种模式,即所述server定时向所述scheduler推送任务消息和scheduler在任务执行结束之后也会向server询问是否有其他可执行的任务。
5.根据权利要求1所述的一种复杂运维作业编排与调度系统,其特征在于,所述任务执行模块中worker接受到执行任务job执行的接口调用,判断执行任务job的参数格式,若不满足参数格式要求的直接返回出错;若满足则根据工具类型进行分类,worker会调用相应分类的模块接口进行任务的执行和结果的收集。
6.根据权利要求1所述的一种复杂运维作业编排与调度系统,其特征在于,所述任务编排模块、所述任务调度模块和所述任务执行模块运行基于B/S架构的管理平台。
7.一种基于权利要求1至6任一所述的复杂运维作业编排与 调度系统的复杂运维作业编排与调度方法,其特征在于,包括如下步骤:将作业划分为整体复杂任务Task、运行步骤step及执行任务job三类对象,并根据三类对象的数据和关联关系编排;
将任务调度划分为server、scheduler和worker三个层面的调度,并根据任务编排模块的编排执行任务调度;根据任务调度的worker调度执行任务。
CN201710610131.5A 2017-07-25 2017-07-25 一种复杂运维作业编排与调度系统及其方法 Active CN107423122B (zh)

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 CN107423122A (zh) 2017-12-01
CN107423122B true 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)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
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的自动化运维系统和方法
CN111736967B (zh) * 2020-05-27 2022-09-09 国网电力科学研究院有限公司 多分支流程管控装置、流程模板生成方法及存储介质
CN112181621A (zh) * 2020-09-27 2021-01-05 中国建设银行股份有限公司 一种任务调度系统、方法、设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
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 北京思特奇信息技术股份有限公司 基于云系统的作业调度方法和系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
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 北京思特奇信息技术股份有限公司 基于云系统的作业调度方法和系统

Also Published As

Publication number Publication date
CN107423122A (zh) 2017-12-01

Similar Documents

Publication Publication Date Title
CN107423122B (zh) 一种复杂运维作业编排与调度系统及其方法
EP2503733B1 (en) Data collecting method, data collecting apparatus and network management device
CN105159769B (zh) 一种适用于计算能力异构集群的分布式作业调度方法
CN110825535B (zh) 一种作业调度的方法和系统
CN105892996A (zh) 一种批量数据处理的流水线作业方法及装置
CN109445944A (zh) 一种基于dpdk的网络数据采集处理系统及其方法
CN103150213B (zh) 负载平衡方法和装置
CN110096353A (zh) 任务调度方法及装置
CN110611707B (zh) 一种任务调度的方法及装置
EP3588405A1 (en) Systems and methods for scheduling a set of non-preemptive tasks in a multi-robot environment
CN112559159A (zh) 一种基于分布式部署的任务调度方法
US10606650B2 (en) Methods and nodes for scheduling data processing
CN106295927B (zh) 给操作员分配任务的方法及装置
CN107038482A (zh) 应用于ai算法工程化、系统化的分布式框架
CN103634132A (zh) 用于it运维平台的高效采集系统
CN112559152B (zh) 一种基于异步式编程的分布式任务注册及调度方法和系统
CN103677959A (zh) 一种基于组播的虚拟机集群迁移方法及系统
CN112486657A (zh) 一种任务调度方法及系统
CN115619169A (zh) 面向跨组织业务需求的异构信息系统集成方法、终端设备
CN115712572A (zh) 任务的测试方法、装置、存储介质及电子装置
CN115509714A (zh) 一种任务处理方法、装置、电子设备及存储介质
CN103777593A (zh) 一种产品自动化操控生产系统及其实现方法
CN109981731B (zh) 一种数据处理方法和设备
CN106776031B (zh) 一种数据发送方法及装置
Chen et al. Development of a cyber-physical-style continuous yield improvement system for manufacturing industry

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