维护作业任务的系统和设计方法与流程

文档序号:11285990阅读:159来源:国知局
维护作业任务的系统和设计方法与流程
本发明涉及云资源管理
技术领域
,具体涉及一种维护作业任务的系统和设计方法。
背景技术
:云计算包含了公有云和私有云两种主要模式和发展方向,出于安全考虑,企业更愿意将数据存放在私有云中,但是同时又希望可以获得公有云的计算资源,在这种情况下混合云被越来越多的采用,它将公有云和私有云进行混合和匹配,以获得最佳的效果,这种个性化的解决方案,达到了既省钱又安全的目的。在目前对公有云和自建机房(私有云),无论是管理方式和对资源的实际使用都存在着不小的差异,例如:公有云平台中服务器资源一般都是虚拟化的,实际物理环境不需要关心;而私有云中,同时存在物理环境和虚拟环境;在私有云中,通过自建运维自动化作业平台,cmdb(configurationmanagementdatabase,配置管理数据库)系统来实现管理,在公有云中,需要依赖于公有云提供的api接口(applicationprogramminginterface,应用程序编程接口)和sdk(softwaredevelopmentkit,软件开发工具包),或者直接在公有云后台系统中操作。无论是私有云还是公有云,在实际使用中,都需要针对业务特性来对云资源进行规划和利用。在云资源管理中,一般会存在多种操作组合,例如资源购买、网络配置、服务部署等,云资源管理人员需要对操作流程建立标准化管理,因此流程落地时,需要一套能支撑该流程的自动化作业平台。在实际的云资源管理中,管理人员通过脚本、手工方式维护,操作流程依赖于个人的经验和熟练程度,无法正真保证流程的落地执行,当流程发生变更后,操作也无法保证能做到同步,如需要修改脚本业务逻辑。在操作中发生错误时,也会遇到操作步骤无法回溯、审计的困难技术实现要素:本发明设计了一种作业任务封装和执行装置,解决了对云资源操作流程标准化的技术问题。本发明采用的技术方案是:一种维护作业任务的系统,所述系统包括组件、任务和任务组;一个任务组包括至少一个任务,任务组控制组内的每一个任务的执行过程以及执行过程中的任务入口参数传递;一个任务包括至少一个顺序执行的组件,任务控制每个组件的执行,并将前一个组件的组件输出参数传递给下一个组件。进一步地,所述组件用于封装运维操作,包括以下组成部分:组件id,全局唯一;组件所属任务id,全局唯一,用于关联任务;组件状态;组件内容,执行所述组件的实体;组件输入参数,组件执行所需要的参数;组件输出参数,标记组件执行后需要导出的变量参数,用于后续组件执行;组件执行模块,执行并通过管道方式存储执行日志,更新执行状态。进一步地,所述任务用于创建组件执行流,包括以下组成部分:任务id,全局唯一,用于关联任务组及组件;任务所属任务组,用于关联任务组;组件索引,一组顺序排列的组件id,用于关联组件的执行;任务入口参数,用于接收并发送任务中第一个调用组件所需要的参数;任务执行模块,用于控制组件执行,更新任务状态。进一步地,所述任务组对任务进行分组执行,包括以下组成部分:任务组id,全局唯一,用于关联任务;任务索引,一组包含在所述任务组中的任务id列表;任务组执行策略,控制任务并发执行策略;任务组入口参数,用于接收并创建任务,任务组根据获取到的任务组入口参数,生成对应的任务;任务组执行模块,用于控制任务执行,更新任务组状态。一种维护作业任务的设计方法,任务组对任务进行分组执行,所述设计方法基于操作流程触发,对组件、任务和任务组进行封装;任务组控制组内的每一个任务的执行过程以及执行过程中的任务入口参数传递;任务控制每个组件的执行,并将前一个组件的组件输出参数传递给下一个组件;组件对运维操作进行封装;所述设计方法包括任务组创建和启动流程以及组件、任务、任务组执行流程。进一步地,所述任务组创建和启动流程步骤如下:步骤s11,web控制台接收用户请求,通过请求接收接口获取启动任务组的名称和参数;步骤s12,根据配置db中存储的任务组,创建并初始化任务组、任务和组件;步骤s13,推送任务组id到消息队列中;步骤s14,返回任务组id到web控制台,web控制台控制任务组执行。进一步地,所述组件、任务、任务组执行流程步骤如下:步骤s21,任务组创建和初始化完成后,任务组控制器将任务组id推送到消息队列;步骤s22,任务组控制器从消息队列重新获取任务组id,任务组控制器检查任务组状态;步骤s23,任务组控制器读取任务id列表,根据策略推送对应的任务id到消息队列中;步骤s24,任务控制器从消息队列中接收到任务id,触发任务运行,任务控制器检查任务状态,读取组件信息,将组件id或者组件所属任务组id推送到消息队列中;步骤s25,组件控制器从消息队列中接收到组件id,触发组件运行,组件控制器执行判断组件状态、执行组件并同步日志,执行完成后,刷新组件状态,同时推送组件所属任务id到消息队列中;步骤s26,重复步骤s21-步骤s25,直到整个组件、任务、任务组执行流程完成。进一步地,所述步骤s23中的策略包括并发模式和判断模式,并发模式中设定同时运行任务的数量,判断模式中当一个任务执行完成后,根据任务最后一个组件的组件输出参数判断后续执行的任务。进一步地,所述步骤s24中当组件需要执行时,将组件id推送到消息队列中;当组件运行完成后,则将组件所属任务组id推送到消息队列中。进一步地,组件、任务、任务组与web控制台交互时,在组件状态、任务状态、任务组状态同步刷新。本发明用于解决流程操作的实际落地,有益效果如下:1、可根据流程变更,灵活调整执行顺序;2、流程和操作能做到一一对应;3、每个流程步骤可独立执行,便于问题排查。附图说明图1是本发明系统结构图实施例一。图2是本发明系统结构图实施例二。图3是本发明任务组创建和启动流程图。图4是本发明组件、任务、任务组执行流程图。具体实施方式本发明基于操作流程触发,从组件(流程执行)、任务(流程组合)、任务组(流程批量组合执行)三个部分进行封装。用户在开发运维脚本时,只需要关注每一个步骤所需要做的事,而无需理会整个业务逻辑,通过任务组合方式建立与业务逻辑统一的业务流程,以实现流程与操作的统一。下文中,结合附图和实施例对本发明作进一步阐述。图1和图2为本发明系统结构图,系统包括组件、任务、任务组三个功能模块。各个功能模块说明如下:组件:用于封装特定的运维操作,比如一个脚本、或者一次接口调用,每个组件只负责一次单一的操作过程;组件的组成部分如下:组件id,全局唯一;组件所属任务id,全局唯一,用于关联任务;组件状态:特定关键字组件内容:执行所述组件的实体,如果组件是类型是调用脚本,则内容就是脚本本身;组件输入参数:一个组件执行所需要的参数,例如:一次ssh(secureshell,安全外壳协议)远程连接,需要host(主机)、user(登录账户)、password(登录密码);特定类型的组件可由默认参数和自定义参数组成;组件输出参数:标记所述组件执行后需要导出的变量参数,用于后续组件执行;组件执行模块:执行并通过管道方式存储执行日志,更新执行状态;组件分类:在程序设计中,可以将组件划分如下几类(如表1所示,非必须,用户依据设计可自行扩展)。表1组件分类任务:用于创建组件执行流,一个任务包含多个顺序执行的组件,任务控制每个组件的执行,并且将前一个组件的执行结果(组件输出参数)传递给下一个组件,除此之外,任务还可以控制后续组件的执行、暂停等操作,当其中一个组件执行错误,组件状态会直接返回至任务。任务的组成部分如下:任务id,全局唯一,用于关联任务组及组件;任务所属任务组,用于关联任务组;组件索引:一组顺序排列的组件id,用于关联多个组件的执行;任务入口参数:用于接收并发送任务中第一个调用组件所需要的参数;任务执行模块:用于控制组件执行,更新任务状态。任务组:将多个任务组织在一起构成一个任务组,任务组根据预设的执行策略,对任务进行分组执行,任务组控制组内的每一个任务的执行过程以及执行过程中的入口参数传递。任务组一个典型的场景:批量执行多个云主机,使用任务+组件封装好对云主机的具体操作流程,对n个云主机执行创建n个单一任务(n至少为1),使用任务组组合并控制这些任务(云主机)的执行策略:同时多个主机并发执行,或者是先执行哪一个云主机。任务组的组成部分如下:任务组id:全局唯一,用于关联任务;任务索引:一组包含在所述任务组中的任务id列表;任务组执行策略:控制任务并发执行策略;任务组入口参数:用于接收并创建任务,任务组可根据获取到的参数,生成对应的任务。例如:n个云主机的ip,生成对这些云主机操作的n个任务;任务组执行模块:用于控制任务执行,更新任务组状态。表2为状态标记,事先约定了在组件、任务、任务组之间通信的状态标记,作用是在功能模块间通过状态标记的变化来触发联动操作。各功能功能模块通过消息队列(消息的传输过程中保存消息的容器)通知方式,触发功能模块启动,功能模块根据获取到的状态标记来判断后续操作。表2状态标记状态标记说明模块场景create创建成功组件、任务、任务组init任务组完成初始化(创建任务成功)任务组start启动成功组件、任务、任务组running运行中组件、任务、任务组fail执行失败组件、任务、任务组pause暂停中任务、任务组done已完成组件、任务、任务组本发明中组件、任务、任务组之间使用层级依赖,当状态刷新后,推送上级id触发状态同步,三者同步关系因实时保持一致。本发明设计方法包括任务组创建和启动流程以及组件、任务、任务组执行流程,其中任务组创建和启动流程如图3所示,步骤如下:步骤s11,web控制台接收用户请求,通过请求接收接口获取启动任务组的名称和参数。步骤s12,根据配置db中存储的任务组,创建并初始化(init)任务组、任务和组件。步骤s13,推送任务组id到消息队列中(触发任务组执行)。步骤s14,返回任务组id到web控制台,web控制台控制任务组执行。组件、任务、任务组执行流程如图4所示,步骤如下:步骤s21,任务组完成初始化(init)后,任务组控制器将任务组id推送到消息队列。步骤s22,任务组控制器从消息队列重新获取任务组id,任务组控制器检查任务组状态。步骤s23,任务组控制器读取任务id列表,根据策略推送对应的任务id到消息队列中。任务组策略中包括两种模式:并发模式:设定同时运行多少个任务;判断模式:当一个任务执行完成后,根据任务最后一个组件的输出参数判断后续执行哪一个任务。并发模式适合批量并发执行云主机,判断模式适合更复杂的业务逻辑,例如:故障检测、业务逻辑测试、监控等。步骤s24,任务控制器从消息队列中接收到任务id,触发任务运行,任务控制器检查任务状态,读取组件信息,将当前需要执行的组件id推送到消息队列,如果组件运行完成(成功或失败),则推送所属任务组id到消息队列中。步骤s25,组件控制器从消息队列中接收到组件id,触发组件运行,组件控制器执行判断组件状态、执行组件并同步日志,执行完成(成功或失败)后,刷新组件状态,同时推送组件所属任务id到消息队列中。步骤s26,重复步骤s21-步骤s25,直到整个组件、任务、任务组执行流程完成。可选地,在消息队列可靠性方面需要考虑消息丢失,可单独运行一个模块检查进程,当模块一段时间内无变更,手动刷新状态、重新触发上级模块;可选地,各功能模块与web交互时,需要在各功能模块状态同步刷新,包括组件日志刷新时,推送状态通知到一个单独的消息队列中,使用websocket(基于tcp的一种新的网络协议)实时更新页面信息,刷新日志滚动。本发明开发语言包含以下部分:组件、任务、任务组实现多并发执行,可通过docker部署,各功能模块间通过队列进行交互、同级模块不关联,可以很方便在单台服务器上启动多个调用系统,增加单机并发操作能力同时降低部署难度;消息队列:使用redis简易队列可快速实现本发明消息通知部分,如需要保证消息可靠,可使用rabbitmq;后台存储:任务名及任务绑定执行数据可使用关系数据(mysql)保存,例如:可保存任务对应的脚本内容;任务执行数据使用mongodb存储,可利用mongo插入数据生成唯一key特性,直接将该key作为任务id或日志数据id推送;任务执行:ssh远程脚本执行优选使用fabric、传送文件可使用rsync或者同样使用fabric模块实现,云接口调用可使用标准http组件,同时需要将返回结果做格式标准化定义,保持接口调用的格式统一;websocket:优选使用nodejs实现。本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1