开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

各位大佬,请教一下flink定时任务 ontimer,若项目从savepoint重启,原先保存未执行

各位大佬,请教一下flink定时任务 ontimer,若项目从savepoint重启,原先保存未执行的的定时任务是会立即触发吗?

展开
收起
十一0204 2023-04-11 09:24:21 450 0
3 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    在阿里云Flink中使用 onTimer 定时任务时,如果在 savepoint 后重启 Flink 作业,原先保存未执行的定时任务不会立即触发。

    具体来说,当您使用 savepoint 做了 Flink 作业的备份后,如果重启 Flink 作业,Flink 会从 savepoint 中恢复作业状态,包括已经注册的定时任务。但是,已经注册的定时任务不会立即触发,而是按照原定时任务的时间继续等待触发。

    2023-04-26 22:31:25
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    在 Flink 中,onTimer() 方法是用于处理定时事件的回调函数。当定时器到期时,Flink 会自动调用 onTimer() 方法,并将定时器的标识符和时间戳作为参数传递给该方法。

    如果您在 Flink 中使用了 onTimer() 方法,并且在执行过程中保存了一个 savepoint,那么在从 savepoint 重启应用程序时,Flink 会恢复应用程序的状态,包括已注册但未到期的定时器。这意味着,保存未执行的定时任务会被恢复,并在适当的时间触发,而不是立即触发。

    当应用程序从 savepoint 重启后,Flink 会自动重新注册已保存但未到期的定时器,并根据定时器的到期时间再次触发它们。如果您的定时器是处理一些状态的操作,那么在从 savepoint 重启后,Flink 会恢复应用程序的状态,并在适当的时间触发保存的定时器,以便处理未完成的状态操作。

    需要注意的是,如果您在重启应用程序时更改了定时器的逻辑或时间,可能会导致定时器在不同的时间触发,这可能会影响应用程序的行为。因此,在更改定时器逻辑或时间之前,请确保在重启应用程序后,定时器的行为与您预期的一致。

    2023-04-17 17:10:01
    赞同 展开评论 打赏
  • 坚持这件事孤独又漫长。
    • 如果你使用 OnProcessingTime()OnEventTime() 方式来注册 OnTimer() 回调函数的定时任务,然后在savepoint被恢复之前这些任务还没有被执行的话,那么这些任务是不会被立即触发的。

    • 在Flink中,定时任务与时间语义(Processing Time or Event Time)有关。使用Processing Time触发的定时任务,是基于系统时间(System Time)进行计算,即触发条件是基于机器当前时间进行计算的。而使用Event Time触发的定时任务,是基于事件时间(Event Time)进行计算,即触发条件是基于事件发生时间与Watermark进行计算的。

    • 因此,在 Flink 从 savepoint 恢复的时候,会将 checkpointed state 和 metadata 一起恢复,而定时任务的状态也会被恢复。但是,如果一个定时任务的触发时间已经过去,那么这个任务不会再被触发,无论是从 checkpoint 还是 savepoint 恢复的。如果定时任务的触发时间在Flink从savepoint 恢复前未到达,则在恢复之后,该任务可以被触发。

    2023-04-13 16:06:58
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载