前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flink 定时器的4个特性

Flink 定时器的4个特性

作者头像
smartsi
发布2021-06-17 18:08:25
2K0
发布2021-06-17 18:08:25
举报
文章被收录于专栏:SmartSi

本文介绍了在 Flink 中使用定时器的一些基本概念和注意事项。开发人员可以使用 Flink 的 ProcessFunction 算子来注册自己的定时器,该算子可以访问流应用程序的一些基本构建块,例如:

  • 事件(流元素)
  • 状态(容错,一致性,仅在 KeyedStream 上应用)
  • 定时器(事件时间和处理时间,仅在 KeyedStream 上应用)

有关 Flink ProcessFunction 的更多信息,请参考 Flink 如何使用ProcessFunction

1. 什么是定时器

定时器可以让 Flink 流处理程序对处理时间和事件时间的变化作出反应。我们之前的一篇文章比较详细地介绍了 Flink 中不同概念的时间以及说明了处理时间、事件时间以及摄入时间之间的差异。在使用定时器处理事件流,每次调用 processElement() 时,我们可以借助 Context 对象访问元素的事件时间戳和 TimerService。然后我们使用 TimerService 为将来的事件时间/处理时间实例注册回调。这样之后,一旦到达定时器的指定时刻,就会调用 onTimer() 方法。

onTimer() 回调函数可能会在不同时间点被调用,这首先取决于使用处理时间还是事件时间来注册定时器。特别是:

  • 使用处理时间注册定时器时,当服务器的系统时间到达定时器的时间戳时,就会调用 onTimer() 方法。
  • 使用事件时间注册定时器时,当算子的 Watermark 到达或超过定时器的时间戳时,就会调用 onTimer() 方法。

与 processElement() 方法类似,onTimer() 回调函数中对状态的访问也仅局限于当前 key(即注册定时器的 那个 key)。值得注意的是,onTimer() 和 processElement() 调用都是同步调用,因此同时在 onTimer() 和 processElement() 方法中访问状态以及进行修改都是安全的。

2. 四个基本特征

下面我们讨论 Flink 中定时器的4个基本特征,在使用它们之前应该记住这些特征:

2.1 定时器只在 KeyedStream 上注册

由于定时器是按 key 注册和触发的,因此 KeyedStream 是任何操作和函数使用定时器的先决条件。

2.2 定时器进行重复数据删除

TimerService 会自动对定时器进行重复数据的删除,因此每个 key 和时间戳最多只能有一个定时器。这意味着当为同一个 key 或时间戳注册多个定时器时,onTimer() 方法只会调用一次。

2.3 对定时器Checkpoint

定时器也会进行Checkpoint,就像任何其他 Managed State 一样。从 Flink 检查点或保存点恢复作业时,在状态恢复之前就应该触发的定时器会被立即触发。

2.4 删除计时器

从 Flink 1.6 开始,就可以对定时器进行暂停以及删除。如果你使用的是比 Flink 1.5 更早的 Flink 版本,那么由于有许多定时器无法删除或停止,所以可能会遇到检查点性能不佳的问题。

你可以使用如下命令停止一个处理时间定时器:

代码语言:javascript
复制
long timestampOfTimerToStop = ... 
ctx.timerService().deleteProcessingTimeTimer(timestampOfTimerToStop);

你还可以使用如下命令停止一个事件时间定时器:

代码语言:javascript
复制
long timestampOfTimerToStop = ...
ctx.timerService().deleteEventTimeTimer(timestampOfTimerToStop);

值得一提的是,如果没有给指定时间戳注册定时器,那么停止定时器不会起任何效果。

英译对照:

  • 定时器: Timers
  • 状态: state
  • 摄入时间: Ingestion Time
  • 检查点: checkpoint
  • 保存点: savepoint

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-06-132,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 什么是定时器
  • 2. 四个基本特征
    • 2.1 定时器只在 KeyedStream 上注册
      • 2.2 定时器进行重复数据删除
        • 2.3 对定时器Checkpoint
          • 2.4 删除计时器
          相关产品与服务
          大数据
          全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档