Keeper 中的调度 Job

调度,或者可以称为“作业”,是 Keeper 中调度计划的基本单元。根据调度计划设置的不同,Job 可以分为四种类型:时间计划调度、无限循环调度、依赖触发调度和手工执行调度。每个调度还有很多附加信息,用于调度管理和配置,比如 DAG、依赖、事件等。

调度的类型

时间计划调度

时间计划调度是任务调度中最常用的类型,比如每天执行一次、每隔两小时执行一次等。时间计划调度使用 Cron 表达式进行配置,系统会计算任务的下一次运行时间nextTick,当Keeper心跳时间与nextTick一致时,则为Job创建Task实例并运行。可以在Job详情页手工修改下一次运行时间nextTick。时间计划调度最快频率是1分钟运行一次,但一定要保证任务在1分钟内可以运行完成,否则会造成任务积压。

无限循环调度

无限循环调度会一直运行,一次运行完成之后,间隔一段时间之后,继续运行下一次任务。可以设置 时间间隔,单位是 ,最小间隔是1秒,支持不同时间段设置不同的时间间隔,详见Cron 表达式中关于无限循环任务的设置说明。

依赖触发调度

依赖触发的调度与时间计划无关,但必须要设置执行前依赖。当依赖条件满足时,则任务会开始运行。

手工执行调度

手工执行的调度不会自动运行,需要用户自己通过 立即运行 按钮启动,一般用于测试、执行次数较少或间隔较长的任务。

调度的关键信息

Cron 表达式

Cron表达式用来设定调度作业执行的频率或在什么时间执行,时间计划任务和无限循环任务支持 Cron 表达式设置,Cron 表达式是调度作业的最关键信息。

工作流 DAG

工作流即调度要运行的程序,如果不设置工作流,这个调度没有任何意义,详见工作流设置

依赖 Dependency

依赖是调度任务运行的前置条件,当满足依赖条件时,调度任务才会执行。同时,Keeper也支持“后置依赖”,即当任务执行完成时对计算结果进行检查。详见依赖设置

事件 Event

事件是当调度任务转换到生命周期的某一状态时,Keeper要做的工作,事件主要用于异常状态的预警。详见事件设置

所有者 Owner

在Keeper中,调度作业有着严格的权限控制,所有者拥有调度作业的管理权限。详见所有者设置

任务 Task

任务是调度作业的一次执行副本,每次调度作业运行都会生成一个任务记录,任务记录包含很多信息用于帮助用户了解任务的执行情况。详见调度任务

调度的其他管理信息

名称

调度作业的名称建议起一个清晰易读的名字,系统支持按名称搜索。调度名称只用于管理,并不对调度的执行产生任何影响。在详情页点击调度名称可进行修改。

所属项目

项目是调度作业的组织形式,一个项目可以包含多个调度。在调度详情页点击项目名称可进行修改,项目的添加和修改详见项目管理

启停用调度

调度作业只有在启用状态下才能正常被调度并运行,停用状态的作业不会生成新的任务副本。启停用状态只影响任务副本的创建,已创建或运行的任务无论调度作业是否启用,都会继续执行。可点击调度详情页右上角的“启停用按钮”才启用或停用调度作业。注意,已经设置了工作流的调度才能被启用。

下次运行时间

下次运行时间 只适用于时间计划调度,Keeper 将在到达个时间时创建新的副本任务,并重新计算下一次运行时间是,可以手工修改。

自动开启时间

新建的调度作业默认为停用状态,这个属性可以在设定的时间到达时自动启用调度任务。如今天我创建了一个新的调度,每小时运行一次,但是希望明天早上8点才开始运行,可以设置自动启用时间为明天早上8点。

自动关闭时间

与“自动开启时间”对应,这个属性可以在设定的时间到达时自动关闭调度任务。可以配合自动开启时间使用,如国庆节期间不希望调度运行,可以设置101日自动关闭,108日自动开启。

任务并行度

任务并行度指定Keeper可以同时运行几个这个调度作业的任务副本,多个副本可同时运行可以最大化利用计算机资源,提高运算效率,避免任务积压,特别是在追溯数据时。如果两个或两个副本同时运行会影响最终结果,那么这个值需要设置为1

任务超时设置

这个参数的单位是 分钟,表示当执行超过时间超过指定的分钟数时,触发onTaskSlow事件。可以在事件页面设置当触发事件时该做什么。这个事件不会中断程序的执行。

任务副本记录数

任务记录的主要信息保存在数据库中,任务日志保存在磁盘中。为了节省数据库和磁盘空间,提高查询效率,可在这里设置最大的任务副本保存数。超过这个数量的任务副本记录将被定时删除,设置为0将会永久保存此调度作业的所有任务副本。

自动补全错过的任务

虽说 Keeper 一般不会自动退出,但是有时 Keeper 会不可避免的停机,如服务器当机、版本升级等。这个参数可以在 Keeper 重新启动时自动补全停机过程中没有被创建和执行的任务。对于连续性要求高的调度作业,这个参数非常重要。


参考链接


微信公众号
码农老吴  |  星源工作室  |  开发月志  |  问题反馈
联系我们:wu@qross.io     手机/微信:18618171102
京 ICP 备 20027445 号
$(h1)!