依赖 Dependency

在 Keeper 中,依赖分为前置依赖(紧前依赖)和后置依赖(紧前依赖)。前置依赖是调度任务运行的条件,前置条件必须满足时调度任务才会运行;后置依赖用于对计算结果的正确性进行检查,如果不正确则任务状态会变为“执行结果不正确”。依赖可以设置多个。

“无限循环任务”不支持设置前置依赖。其他类型的调度作业在手工“立即运行”时可以忽略前置依赖。

Keeper 支持三种类型的依赖,分别为任务依赖、SQL依赖和PQL依赖。

任务依赖

任务依赖 是指当前调度作业的任务的创建后需要等待依赖的调度作业的任务执行完成才能启动。比如在数据仓库中,ODS 层的任务完成后,DW 层的任务才能启动,即 DW 层的任务启动依赖于 ODS 层任务完成。

调度作业的多个命令构成了调度作业的内部工作流,通过任务依赖,可以构建调度作业之间的工作流。在未来版本中,系统会提供作业工作流的管理功能。

注意,被依赖的调度作业不有轻易修改调度时间,否则会影响后续所有的依赖任务。另外,后置依赖不支持“任务依赖”设置。

SQL 依赖

SQL 依赖 是日常生产过程另一种常用的依赖形式,依赖需要指定一个 SELECT 查询语句,系统会检查这个 SELECT 语句是否有返回结果,如果有结果表示依赖成立,否则会下一分钟继续检查。SQL 依赖需要配置的项如下:

SQL 依赖可用于后置依赖,即任务执行完成后的结果正确性检查,同样是如果查询有返回结果即判定任务的执行结果正确。

在 SQL 依赖的 SELECT 语句和非查询语句中,可以使用一些预设的变量。

例如:SELECT id FROM extra_tasks WHERE task_id=$task_id。主要用于扩展 Keeper。这些变量也可以通过参数的形式传递,如#{task_id}

PQL 依赖

PQL 依赖 可以理解为 SQL 依赖的高级版本,也可以理解为是自定义依赖。PQL 依赖除了可以访问数据库以外,还可以进行请求接口读写文件等操作。使用 PQL 依赖,可以检查某个接口的返回值是否正确、REDIS 中的某个键是否有期望的值、文件是否存在等,详见 PQL 相关的文档。PQL 依赖的配置项如下:

在PQL依赖的主程序和额外程序中,可以使用一些预设的变量。

这些变量可以直接在 PQL 过程中使用。同样,这些变量也可以通过参数的形式传递,例如#{job_id}

因为 PQL 依赖不能像 SQL 依赖一样传递查询结果给工作流中的命令,但是非要实现也有解决方案,需要使用 Keeper 的系统表,但不建议这么做,对系统表的更改可能会产生意外的结果。

依赖的尝试次数

调度任务被创建后,有前置依赖的任务会 每分钟 检查一次依赖是否成立。对于“仅依赖触发”的调度作业,建议设置成为0,表示一直检查。其他类型的调度作业默认设置为100次,可根据实际应用场景增减。如果检查次数超过这个设置的最大值,调度任务状态会变为“检查超过限定次数”。

依赖相关事件

前置依赖和后置依赖分别相关两个异常事件。前置依赖如果检查次数超过最大限定次数,会触发“检查超过限定次数”事件;后置依赖如果检查结果不符合预期会触发“执行结果不正确”事件。可以在事件和预警页面进行相应的设置。


参考链接


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