使用事件触发器调度 TDS 的调度任务

  使用配置
内容纲要

概要描述

本文主要介绍使用事件触发器调度 TDS 的调度任务。注意,只有较高版本的TDS才支持事件触发器。

详细说明

使用场景

通常我们希望调度任务在我们配置的调度时间进行调度执行,主要通过cron表达式(或进一步配合日历功能)配置调度周期,但有时业务要求在某个时间触发时即触发调度任务执行,时间可能不固定,无法通过cron表达式的方式配置。

此时就可以用 TDS 中的事件触发器功能实现。

配置事件触发器调度

file

在调度任务中,点击右上角的任务流配置,可以把调度周期设置为“事件触发器”,同时可以在下方的“定义事件”配置具体的事件信息。下一节介绍不同触发类型的事件配置方法。

常见触发类型的事件配置

文件到达

针对一些现场,尤其是金融领域,业务系统下游数据使用方只能通过文件交互,下游使用方和上游提供方约定一个时间,定时获取文件并调度执行。此时若是文件较晚的到达,可能会导致下游的执行失败,或延迟执行。

TDS中的解决方案是,定义一个文件到达的事件,定时去扫描对应的文件是否到达,从而触发当前及下游的任务流。

file

触发类型需选择“文件到达”。

重要配置说明:

  • 检查频率:每隔多长时间,扫描一次事件是否满足。

  • 文件系统源:事件的检查对象所在的文件系统,需要在配置-数据源页面定义好文件系统,这里仅支持ftp/sftp/hdfs 三种类型的数据源。

  • 文件路径:事件的检查对象在文件系统源中的具体路径,通常是一个目录。

  • 目标对象:事件检查的具体对象,有两种配置,分别是“资源名称”和“文件全路径匹配”。选择“资源名称”时,会在“文件路径”下根据配置的值匹配文件名;选择“文件全路径匹配”时,会在“文件路径”下根据配置的值匹配文件或目录的所有对象。配置的值支持通配符和参数。

  • 不停止扫描:事件检查策略之一。即使扫描的结果已经满足,也会继续扫描,直到当前调度任务下线。一般针对一天多次且没有任务计划的场景。该策略下的事件检测内容为文件变更(文件发生了创建或修改)。

  • 停止时间:事件检查策略之一。在设定的时间范围内扫描事件,一旦扫描成功,今天将不再继续扫描。一般针对约定好某个时间段内的事件扫描,例如每天10点若文件未到达,调度任务直接停止。该策略下的事件检测内容为文件存在。

  • 检查次数:事件检查策略之一。从某个时间点开始扫描,一旦超过设定的次数,停止扫描。该策略下的事件检测内容为文件存在。

  • 通过条件:通常选择默认的“检查内容满足”。在一些特殊场景,例如文件较大变更较慢,可以设置“基于LastModifiedTime校验”,此时支持进一步配置超过N分钟无变化认为事件已满足。

  • 保存结果:支持将文件名称赋值给参数,该参数可以被当前调度任务及子任务引用。

SQL结果检查

一些现场会涉及跨系统或跨工作区等场景的消息通知,即当前任务流是否可以执行,取决于外部系统的消息通知,通知内容可能是一个通知标识,也有可能是一个具体的文件或资源信息。

TDS中的解决方案是,通过往通用的数据表中添加一条消息,下游的任务流监听该表,从而完成跨系统或工作区等资源隔离的限制。

file

触发类型需选择“SQL结果检查”。

重要配置说明:

  • 检查频率:每隔多长时间,扫描一次事件是否满足。

  • 连接:事件扫描的数据源,需要先在TDS中配置好。

  • SQL:SQL编辑框,事件的检查对象即为该查询SQL有结果输出。

  • 按时间间隔滚动扫描:事件检查策略之一。需配置开始时间和滚动时间窗口,计算出每个扫描窗口,一个扫描窗口内的事件满足后,当前窗口的事件扫描将终止。

  • 停止时间:事件检查策略之一。在设定的时间范围内扫描事件,一旦扫描成功,今天将不再继续扫描。一般针对约定好某个时间段内的事件扫描,例如每天10点若SQL未满足,调度任务直接停止。

  • 检查次数:事件检查策略之一。从某个时间点开始扫描,一旦超过设定的次数,停止扫描。

  • 保存结果:支持将文件名称赋值给参数,该参数可以被当前调度任务及子任务引用。

脚本自定义

针对以下没有内置的场景模式,用户均可以按需定义脚本,自己控制触发逻辑,例如:

  • 文件到达的文件系统不在支持范围内,可通过接口定时检查其他文件系统的文件情况
  • 监控外部调度系统或平台的执行状态,可通过对应系统的接口访问,定义通过条件

file

触发类型需选择“脚本自定义”。

重要配置说明:

  • 检查频率:每隔多长时间,扫描一次事件是否满足。

  • 执行节点:脚本会在任务流配置中的执行器组中的某个可用执行器里执行,支持内置执行器(pod)和外置执行器(RPM)。

  • 脚本内容:脚本编辑框,判断的脚本执行后echo $?=0则任务时间满足,故用户可以在if else中根据自己的业务需求,exit 1还是exit 0。

  • 按时间间隔滚动扫描:事件检查策略之一。需配置开始时间和滚动时间窗口,计算出每个扫描窗口,一个扫描窗口内的事件满足后,当前窗口的事件扫描将终止。

  • 停止时间:事件检查策略之一。在设定的时间范围内扫描事件,一旦扫描成功,今天将不再继续扫描。一般针对约定好某个时间段内的事件扫描,例如每天10点若脚本未满足,调度任务直接停止。

  • 检查次数:事件检查策略之一。从某个时间点开始扫描,一旦超过设定的次数,停止扫描。

事件检查的资源使用

如果使用事件触发器功能,会用到 Workflow Scheduler 和 Workflow Executor 的资源,Workflow Scheduler 负责控制检测流程;Workflow Executor 负责实际完成检测,会在任务流配置中的执行器组中的某个可用执行器里执行,支持内置执行器(pod)和外置执行器(RPM)。

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。