一种分布式脚本控制方法及相关装置与流程

文档序号:24528009发布日期:2021-04-02 10:05阅读:46来源:国知局
一种分布式脚本控制方法及相关装置与流程

本申请涉及分布式系统领域,尤其涉及一种分布式脚本控制方法及相关装置。



背景技术:

目前的控制脚本定时运行的方案主要是利用linux系统提供的crontab命令,更新crontab文件或者通过编程语言的定时器来达到定时运行的目的。

当前技术技术方案通过手工添加定时任务的方式容易出现失误,而且定时任务不够灵活,无法高效实现执行任务的目标机器的迁移,另外,不能有效地统一管理日志记录。



技术实现要素:

本申请提供了一种分布式脚本控制方法及相关装置,用于解决现有技术人工设置定时易失误、定时任务执行不灵活以及日志管理不统一的技术问题。

有鉴于此,本申请第一方面提供了一种分布式脚本控制方法,包括:

通过第一控制脚本从预置数据库中定时获取脚本控制信息,所述脚本控制信息包括脚本运行参数,运行脚本机器ip列表,任务时间参数和日志输出参数;

基于所述脚本控制信息更新本地crontab文件,更新后的所述crontab文件包括脚本运行环境参数,运行脚本机器,运行时间计划和日志输出路径;

基于更新后的所述本地crontab文件,通过第二控制脚本根据所述运行时间计划为所述运行脚本机器对应的目标脚本配置目标运行参数,并运行所述目标脚本,所述目标运行参数包括所述脚本运行环境参数和所述日志输出路径。

可选的,所述通过第一控制脚本从预置数据库中定时获取脚本控制信息,之前还包括:

在预置数据库的列表中插入脚本控制信息的记录行。

可选的,所述基于所述脚本控制信息更新本地crontab文件,更新后的所述crontab文件包括脚本运行环境参数,运行脚本机器,运行时间计划和日志输出路径,包括:

将从所述脚本控制信息获取的所述脚本运行环境参数,所述运行脚本机器,所述运行时间计划和所述日志输出路径拼接为crontab运行参数;

将所述crontab运行参数写入所述本地crontab文件中完成更新操作。

可选的,所述基于更新后的所述本地crontab文件,通过第二控制脚本根据所述运行时间计划为所述运行脚本机器对应的目标脚本配置目标运行参数,并运行所述目标脚本,还包括:

在运行所述目标脚本前,根据预置redis缓存记录判断所述目标脚本是否已执行,若是,则等待脚本执行;若否,则运行所述目标脚本。

本申请第二方面提供了一种分布式脚本控制装置,包括:

获取信息单元,用于通过第一控制脚本从预置数据库中定时获取脚本控制信息,所述脚本控制信息包括脚本运行参数,运行脚本机器ip列表,任务时间参数和日志输出参数;

crontab更新单元,用于基于所述脚本控制信息更新本地crontab文件,更新后的所述crontab文件包括脚本运行环境参数,运行脚本机器,运行时间计划和日志输出路径;

脚本运行单元,用于基于更新后的所述本地crontab文件,通过第二控制脚本根据所述运行时间计划为所述运行脚本机器对应的目标脚本配置目标运行参数,并运行所述目标脚本,所述目标运行参数包括所述脚本运行环境参数和所述日志输出路径。

可选的,还包括:

信息准备单元,用于在预置数据库的列表中插入脚本控制信息的记录行。

可选的,所述crontab更新单元具体用于:

将从所述脚本控制信息获取的所述脚本运行环境参数,所述运行脚本机器,所述运行时间计划和所述日志输出路径拼接为crontab运行参数;

将所述crontab运行参数写入所述本地crontab文件中完成更新操作。

可选的,还包括:

运行脚本判断单元,用于在运行所述目标脚本前,根据预置redis缓存记录判断所述目标脚本是否已执行,若是,则等待脚本执行;若否,则运行所述目标脚本。

本申请第三方面提供了一种分布式脚本控制设备,所述设备包括处理器以及存储器:

所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;

所述处理器用于根据所述程序代码中的指令执行第一方面任一项所述的分布式脚本控制方法。

本申请第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行第一方面任一项所述的分布式脚本控制方法。

从以上技术方案可以看出,本申请实施例具有以下优点:

本申请中,提供了一种分布式脚本控制方法,包括:通过第一控制脚本从预置数据库中定时获取脚本控制信息,脚本控制信息包括脚本运行参数,运行脚本机器ip列表,任务时间参数和日志输出参数;基于脚本控制信息更新本地crontab文件,更新后的所述crontab文件包括脚本运行环境参数,运行脚本机器,运行时间计划和日志输出路径;基于更新后的本地crontab文件,通过第二控制脚本根据运行时间计划为运行脚本机器对应的目标脚本配置目标运行参数,并运行目标脚本,目标运行参数包括脚本运行环境参数和日志输出路径。

本申请提供的分布式脚本控制方法,将任务的执行相关的参数配置在预置数据库中,通过第一控制脚本获取这些信息,并以此更新crontab文件,脚本控制信息中包括任务时间参数,因此不需要人工设置定时任务;不同机器的目标脚本也可以根据运行脚本机器ip的设置进行选择执行,不需要在针对多台机器进行多次更新操作;而且,定时更新的crontab文件中记载的日志输出路径可以灵活配置脚本的日志输出目录,随时找到相应日志,从而实现不同目标脚本日志的统一管理。因此,本申请能够解决现有技术人工设置定时易失误、定时任务执行不灵活以及日志管理不统一的技术问题。

附图说明

图1为本申请实施例提供的一种分布式脚本控制方法的流程示意图;

图2为本申请实施例提供的一种分布式脚本控制装置的结构示意图;

图3为本申请实施例提供的分布式脚本控制系统结构示意图;

图4为本申请实施例提供的分布式脚本控制信令图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

为了便于理解,请参阅图1,本申请提供的一种分布式脚本控制方法的实施例,包括:

步骤101、通过第一控制脚本从预置数据库中定时获取脚本控制信息,脚本控制信息包括脚本运行参数,运行脚本机器ip列表,任务时间参数和日志输出参数。

进一步地,步骤101之前还包括:

在预置数据库的列表中插入脚本控制信息的记录行。

预置数据库可以是mysql数据库,它可以持久化存储脚本控制信息。第一控制脚本从预置数据库中获取脚本控制信息一般是通过缓存cache实现的,脚本控制信息首先缓存在cache中,第一控制脚本再从cache缓存中获取缓存信息。在预置数据库中插入脚本控制信息的记录行是一种动态添加或者修改信息的过程,主要通过数据库配置实现,不需要手动干预crontab任务。

脚本运行参数主要是任务执行的环境参数和其他相关运行参数;运行脚本机器ip列表则是明确可以执行此任务的机器,可以是单个机器,也可以是多个机器;任务时间参数主要是任务定时执行的时间参数,日志输出参数可以统一管理目标脚本的日志目录。除了以上信息,还可以根据需要在预置数据库中提前配置其他脚本控制信息。

步骤102、基于脚本控制信息更新本地crontab文件,更新后的所述crontab文件包括脚本运行环境参数,运行脚本机器,运行时间计划和日志输出路径。

进一步地,步骤102包括:

将从脚本控制信息获取的脚本运行环境参数,运行脚本机器,运行时间计划和日志输出路径拼接为crontab运行参数;

将crontab运行参数写入本地crontab文件中完成更新操作。

crontab文件定时任务由crontab工具管理,crontab工具是unix和类unix操作系统中的一项指令;在linux系统中,这个指令可以定时读取crontab文件,并执行文件内容指定的任务。更新本地crontab文件的过程并不仅仅只是更新crontab任务,还需要更新指定任务的周期,即运行时间计划;同时还要更新运行环境和其他所需更新的参数,日志输出路径的添加可以为日志目录的管理提供方便。

步骤103、基于更新后的本地crontab文件,通过第二控制脚本根据运行时间计划为运行脚本机器对应的目标脚本配置目标运行参数,并运行目标脚本,目标运行参数包括脚本运行环境参数和日志输出路径。

进一步地,还包括:

在运行目标脚本前,根据预置redis缓存记录判断目标脚本是否已执行,若是,则等待脚本执行;若否,则运行目标脚本。

更新后的本地crontab文件根据运行时间计划的周期定时唤起第二控制脚本根据获取到的参数拉起目标脚本,指定目标脚本的运行环境和日志输出路径,并运行目标脚本,从而完成目标脚本的运行。

在目标脚本开始运行时,可以选择检查redis缓存中有无其他机器已经运行了该脚本,如果有且数量和设定运行机器参数一致,则说明目标脚本已经执行,就需要进入等待阶段,如果没有则判断该脚本可以直接执行。通过设置redis锁可以实现多机器目标脚本的并发执行。

请参阅图3,图3中包括为目标脚本、控制脚本、数据库、缓存和crontab工具部分,目标脚本包括多个,即script1、script2和script3。控制脚本根据控制任务还可以划分为crontab文件更新脚本模块scripts_control以及运行脚本模块run_script;其中更新脚本模块相当于执行第一控制脚本的功能,运行脚本相当于执行第二控制脚本的功能;即scripts_control主要是用于根据脚本控制信息更新crontab文件;run_script则主要是拉起对应的目标脚本。整个脚本控制系统中统一管理目标脚本文件,而目标脚本文件在不同的目标机器上都有相同的副本,可以达到随时更改脚本运行机器的容灾效果。除了数据库database还有cache缓存,主要为脚本运行快速提供脚本控制信息。

请参阅图4,crontab文件更新脚本scripts_control通过定时读取mysql数据库中的脚本控制信息,从每条脚本控制记录获取脚本运行参数,运行脚本机器ip列表,任务时间参数和日志输出参数来分别确定脚本运行环境参数,运行脚本机器,运行时间计划和日志输出路径;随后,将所需运行的目标脚本及相关参数拼接为crontab运行参数,并写入本地crontab文件中;接着由crontab执行定时任务拉起运行脚本run_script,最后根据传入的参数指定目标脚本的运行环境及其他运行所需参数,运行目标脚本。脚本运行开始时,可以选择检查redis缓存中有无其他机器已运行该脚本,如果判断该脚本可以执行,则脚本运行并更新缓存状态,达到控制脚本并发执行的效果。

通过动态调整数据库中的日志数据参数可以灵活配置脚本的日志输出目录,在需要查找日志目录时可以随时根据配置参数找到相应日志。另外,本申请实施例中的脚本运行参数可以提前配置在数据库中,因此,还可以根据实际需求插入定时日志检查脚本,获取脚本执行的错误码达到监控和告警的目的。

本申请实施例提供的分布式脚本控制方法,将任务的执行相关的参数配置在预置数据库中,通过第一控制脚本获取这些信息,并以此更新crontab文件,脚本控制信息中包括任务时间参数,因此不需要人工设置定时任务;不同机器的目标脚本也可以根据运行脚本机器ip的设置进行选择执行,不需要在针对多台机器进行多次更新操作;而且,定时更新的crontab文件中记载的日志输出路径可以灵活配置脚本的日志输出目录,随时找到相应日志,从而实现不同目标脚本日志的统一管理。因此,本申请实施例能够解决现有技术人工设置定时易失误、定时任务执行不灵活以及日志管理不统一的技术问题。

以上为一种分布式脚本控制方法的实施例,以下为一种分布式脚本控制装置的实施例。

请参阅图2,本申请提供了一种分布式脚本控制装置的实施例,包括:

获取信息单元201,用于通过第一控制脚本从预置数据库中定时获取脚本控制信息,脚本控制信息包括脚本运行参数,运行脚本机器ip列表,任务时间参数和日志输出参数;

crontab更新单元202,用于基于脚本控制信息更新本地crontab文件,更新后的所述crontab文件包括脚本运行环境参数,运行脚本机器,运行时间计划和日志输出路径;

脚本运行单元203,用于基于更新后的本地crontab文件,通过第二控制脚本根据运行时间计划为运行脚本机器对应的目标脚本配置目标运行参数,并运行目标脚本,目标运行参数包括脚本运行环境参数和日志输出路径。

进一步地,还包括:

信息准备单元204,用于在预置数据库的列表中插入脚本控制信息的记录行。

进一步地,crontab更新单元具体用于:

将从脚本控制信息获取的脚本运行环境参数,运行脚本机器,运行时间计划和日志输出路径拼接为crontab运行参数;

将crontab运行参数写入本地crontab文件中完成更新操作。

进一步地,还包括:

运行脚本判断单元205,用于在运行目标脚本前,根据预置redis缓存记录判断目标脚本是否已执行,若是,则等待脚本执行;若否,则运行目标脚本。

本申请还提供了一种分布式脚本控制设备,设备包括处理器以及存储器:

存储器用于存储程序代码,并将程序代码传输给处理器;

处理器用于根据程序代码中的指令执行上述方法实施例中任一种分布式脚本控制方法。

本申请还提供了一种计算机可读存储介质,计算机可读存储介质用于存储程序代码,程序代码用于执行上述方法实施例中任一种分布式脚本控制方法。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以通过一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文全称:read-onlymemory,英文缩写:rom)、随机存取存储器(英文全称:randomaccessmemory,英文缩写:ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1