实例生成方式:发布后即时生成

当您希望节点发布到生产环境后能够按照配置立即生成调度实例自动执行时,可以将节点的实例生成方式配置为发布后即时生成。

背景信息

节点发布后,可在运维中心查看任务最新配置。DataWorks每晚会根据周期任务的节点配置,生成第二天周期性自动调度的周期实例。而节点新建和更新操作发布至生产环境当天,自动调度的周期实例何时生效,或依赖关系何时更新,与您选择的实例生成方式有关。

DataWorks,您可以通过实例生成方式的两个选项:T+1次日生成发布后即时生成,来控制是否立即生效。

  • T+1次日生成:节点新建和更新操作在第二天的周期实例上生效。如果节点发布到生产环境后,需要立即执行任务,可以针对该任务执行补数据操作。

  • 发布后即时生成:节点新建和更新操作将及时生效,但发布节点的时间点与真正生成可运行实例之间存在时间差,这将对不同的任务运行场景产生不同影响,详情可参见常见即时生成实例场景说明

注意事项

  • 工作流的内的节点不支持单独配置发布后即时生成,仅支持在工作流编辑页面的调度配置中对整个工作流配置发布后即时生成。

  • 无论在调度配置中选择T+1次日生成实例,还是发布后即时生成实例,每天23:3024:00为全量生成次日周期调度实例的时间。在该时间段发布的任务均需等待至第三天才能生成相应实例。

  • 上游任务实例生成方式不一致,可能导致孤立节点产生。

  • 即时生成实例存在时间差:为避免实例变更导致任务运行异常,发布后即时生成实例存在10分钟的时间差,即定时调度时间需晚于发布时间点至少10分钟,任务才会按最新配置运行。

  • 即时生成实例的作用范围:并非所有变更都会立即生效。例如修改了节点关联的数据源实例,然后配置即时生成实例发布,这不会影响当天已有实例,当天周期实例仍会采用变更前的数据源实例执行。

    说明

    您可以对最新配置的周期任务执行补数据操作,补数据将根据任务最新配置执行。

即时生成实例说明

发布后即时生成实例仅适用于未来时间段的定时调度。具体来说,只有在任务的调度时间晚于发布时间点时,实例才会正常执行

  • 新建任务当天会生成周期实例,但只有定时调度时间在未来时间段的实例才会正常执行;

  • 更新节点调度时间,定时调度时间在过去,则不会生成实例;如果定时调度时间在未来时间段,将按照新配置生成新实例,替换更新前实例。

    说明

    定时调度时间必须在节点发布时间点的10分钟以后的未来时间,才可正常即时生成实例。

image

实例定时时间在正常执行的区间

  • 场景一:新建节点当天生成真实运行的周期实例,配置调度时,实例定时调度时间是节点发布生成实例时间的未来时间,两个时间点之间的差值大于10分钟,则会正常调度实例,详情可参见:新建节点发布后选择即时生成实例

  • 场景二:更新节点配置后,且实例定时调度时间是节点发布生成实例时间的未来时间,且两个时间点之间的差值应大于10分钟,则会正常调度实例,调度的实例为更新后的实例。详情请参见:更新已发布任务的调度周期

  • 场景四:变更任务定时时间,对下游依赖关系的影响。

重要

不建议在修改生产节点调度配置时使用该功能。该功能可能存在依赖关系变更、依赖关系错乱、实例替换、实例被删除等现象,导致当天依赖关系变得复杂,但第二天任务依赖关系会恢复正常。

实例定时时间在空跑的区间

定时调度时间在节点发布时间的过去时间,仍会生成自动调度的周期实例,但实例会空跑,实例状态为实时生成的过期实例,不会生成真实运行代码逻辑,详情可参见:新建节点发布后选择即时生成实例

  • 场景一:实例定时调度时间是节点发布生成实例的预定未来时间,两个时间点之间的差值应小于10分钟。该实例状态为实时生成的过期实例

    例如:A节点的定时调度时间为09:05,而节点的发布时间为09:00。若实例的调度时间点位于节点发布生成实例时间点的未来时刻,并且两者之间的时间差小于10分钟,则A节点将生成实时生成的过期实例的空跑实例。

  • 场景二:实例定时调度时间点是节点发布生成实例时间的过去时间点,立即生成实时生成的过期实例

    例如:A节点的调度时间配置为09:00,发布时间为10:00,实例生成时间点在发布时间点之前。则A节点立即生成实时生成的过期实例的空跑实例。

常见即时生成实例场景说明

使用发布后即时生成方式生成实例时,相关功能场景的实例运行及上下游依赖情况如下:

新建节点发布后选择即时生成实例

新建任务发布当天会即时生成实例,发布当天生成的实例是否真实执行,与任务的调度时间有关,详情可查看下表:

场景

描述

任务的调度时间为实例实际生效的未来时间

DataWorks将根据调度时间生成可执行的周期实例并调度执行。

选择发布后即时生成策略仅影响任务当天的实例运行情况。实例是否替换,与实例调度时间是否在发布时间点10分钟后有关,详情请参见:背景信息

任务的调度时间为实例实际生效的过去时间

DataWorks会生成过期的空跑实例,实例状态为实时生成的过期实例,该实例不会真实执行。

若需执行当天数据,可选择进行补数据操作,对业务时间是昨天的数据进行补数据。该操作生成实例时也会存在10分钟的时间差,详情请参见:背景信息

示例:假设任务发布至生产环境的时间为12:00,则实时转实例生效时间点为12:10

  • 若任务的调度时间在12:10后,则任务将真实调度执行。

  • 若任务的调度时间在12:10前,则任务将空跑,其实例状态为实时生成的过期实例

更新已发布任务的调度周期

更新生产任务的调度时间并发布后,当天可能出现变更前与变更后的实例并存,导致实例依赖复杂。非必要,建议已发布任务不使用发布后即时生成实例方式。以下为调度从小时调度任务变更为日调度后的场景示例

说明

此场景仅发生在实时转实例任务发布的当天,发布第二天任务会正常根据配置生成周期实例。

  • 案例一:从每6小时调度变更为每天调度,天调度任务调度时间为过去时间。

    09:00时修改任务调度时间为过去时间,将每6小时调度变更为每日08:00调度,当日实例依赖情况如下:

    image
  • 案例二:从每6小时调度变更为每天调度,天调度任务调度时间为未来时间。

    09:00时修改任务调度时间为未来时间,将每6小时调度变更为每日18:00调度,当日实例依赖情况如下:

    image
    • 生成实例:根据新配置在09:00后生成日调度实例A3。

    • 替换已有实例:新实例A3替换掉原有实例A3A4。

    • 保留实例:小时调度的在09:10前的实例保留。

说明
  • 任务的调度时间为未来时间:DataWorks将根据最新调度配置替换已生成的未来时间段的实例。

  • 任务的调度时间为过去时间:DataWorks会保留修改后的实例生效时间之前的实例,替换或删除修改后的实例生效时间之后的实例。

调度时间变更并发布后,当天实例是否会根据新配置重新生成实例并真实执行,取决于任务调度时间的设置,以及最终将变更操作发布至生产环境的时间点。详情请参见背景信息

变更任务调度时间,对下游依赖关系的影响

任务发布后即时生成的实例,其下游会按照上游最新的调度配置来设置依赖。调度配置可以是天、月或小时。

说明

变更调度时间的生产任务,其下游实例会按照最新的调度配置,为新生成的实例和未替换的旧实例挂载依赖,小时、分钟各场景依赖情况,详情请参见:复杂依赖场景调度配置原则与示例。待发布的节点版本,其实例生成方式为发布后即时生成,且仅在存在调度时间变更时,才会出现该场景。

示例场景如下:

  • 案例一:上游节点从每6小时调度一次,变更为每8小时调度一次,并且选择即时生成实例。

    image
  • 案例二:上游节点从每6小时调度一次,变更为每日16点调度一次,并且选择即时生成实例。

    image

变更任务调度时间并选择即时生成实例后,下游实例会根据最新的调度配置调整依赖关系,确保新生成的实例与未替换的旧实例之间的依赖逻辑正确。对于未替换的旧实例和新生成的实例,下游会分别挂载相应的依赖,确保调度逻辑正确。

上下游任务实例生成方式不一致

若上下游均为新建节点,并且上下游任务的实例生成方式不一致。例如,上游选择T+1次日生成,下游选择发布后即时生成,则会导致产生孤立节点。孤立节点不会自动调度运行,如果该孤立节点下游依赖较多,可能会造成较严重的后果。

image