跳转至

调度说明

1、调度概览

本平台调度系统基于周期调度框架构建,以“任务 → 实例 → DAG”为核心模型,实现任务可预期、可观测、可运维的统一调度能力。

调度系统主要解决以下问题:

  • 明确每日/每周期需要执行的任务清单

  • 明确任务依赖关系,支持自动识别与人工干预

  • 支持单日多次更新、补数、重跑等运维场景

2、核心概念说明

1. 任务与实例

  • 任务(Task):调度配置的逻辑单元,如数据源表任务、普通物化任务、加速物化任务

  • 实例(Instance):任务在某一个定时时间或业务日期下生成的具体执行单元

一个任务在一天内可能生成一个或多个实例(如分钟 / 小时周期)。

2. 周期类型

支持以下调度周期:

  • 分钟

  • 小时

不同周期的任务,实例生成规则不同:

  • 分钟 / 小时:一天内可能生成多个实例

  • 日及以上:每天生成一个实例(非调度日为空跑实例)

3、时间体系说明

1. 定时时间

定时时间来源于任务的时间属性配置:

  • 日 / 周 / 月 / 年:date_trunc(定时时间, DAY)

  • 小时:date_trunc(定时时间, HOUR)

  • 分钟:date_trunc(定时时间, MINUTE)

2. 业务日期

  • 周期实例:由定时时间推导

    • 日周期:业务日期 = 定时时间 - 1 日

    • 小时周期:业务日期 = 定时时间 - 1 小时

    • 分钟周期:业务日期 = 定时时间 - 1 分钟

  • 补数实例:由用户在提交补数时指定

4、实例状态流转

1. 自然状态流转

2. 人工干预状态

  • 置为成功:

    • 允许状态:未运行 / 等待运行 / 失败 / 暂停

    • 用于跳过当前实例,继续下游执行

  • 暂停:

    • 允许状态:未运行 / 等待运行 / 运行中

    • 恢复后等价于重跑实例

5、任务类型说明

1. 数据源表任务

  • 用于描述数据源更新事件

  • 支持:

    • 开启 / 关闭调度

    • 周期调度

    • 外部 API 触发更新

数据源表任务是下游物化任务的重要依赖节点。

2. 普通物化任务

  • 用于生成结果表供外部系统或查询使用

  • 特点:

    • 不参与查询改写

    • 支持全量 / 分区 / 合并更新

3. 加速物化任务

  • 用于查询加速

  • 特点:

    • 可被查询命中

    • 不支持追加类更新(保证命中正确性)

4. 外挂物化任务

  • 用于已有外部物化结果的注册

6、调度依赖说明

调度依赖规则一览

当前实例周期 可依赖实例周期 依赖生效条件 依赖选择规则
分钟 分钟 同一自然小时定时时间 ≤ 当前实例 选择最近的一条
分钟 小时 同一自然小时定时时间 ≤ 当前实例 唯一满足则依赖
分钟 日 / 周 / 月 / 年 同一自然日定时时间 ≤ 当前实例 唯一满足则依赖
小时 分钟 同一自然小时 选择该小时内最后一个
小时 小时 同一自然日定时时间 ≤ 当前实例 选择最近的一条
小时 日 / 周 / 月 / 年 同一自然日定时时间 ≤ 当前实例 唯一满足则依赖
分钟 / 小时 同一自然日 选择当天最后一个
日 / 周 / 月 / 年 同一自然日 唯一满足则依赖