Apache Flink会在失败后恢复触发计时器吗?

时间:2016-03-30 10:28:02

标签: apache-flink flink-streaming

某些自定义分组具有状态并使用定时器(即this example)。

据我了解失败后的州will be restored,但定时器怎么样?它们会在自动失败后恢复吗?

2 个答案:

答案 0 :(得分:2)

在发生故障时,将对计时器进行检查点和恢复。

但是,这里有一个细微的细节需要理解。无论何时注册处理计时器,WindowOperator都会将未来的时间戳保存在队列中,并安排一个计时器任务,该任务将触发WindowOperator。如果触发WindowOperator,它将处理时间戳低于当前时间戳的所有已注册计时器事件。

Flink仅检查未来时间戳的队列,但不检查计划的计时器任务。这意味着在恢复情况下,您将恢复未来时间戳的队列,但没有计时器任务来触发WindowOperator(然后触发计时器事件)。所以你需要等待一个新元素,它将注册一个新的计时器任务。一旦此计时器任务触发,将执行具有较低时间戳的所有其他计时器事件。

这种细微之处不适用于事件时间处理,因为您没有触发WindowOperator水印的计时器任务。

答案 1 :(得分:0)

似乎最近版本中的行为发生了变化 现在"当前的行为是所有计时器(处理时间和事件时间)都在恢复时重新注册,因此应该自动触发"。

这是对flink列表中相关消息的引用: http://mail-archives.apache.org/mod_mbox/flink-user/201804.mbox/%3CF0F57EB6-54E9-4303-AD95-EBB367B899E4@apache.org%3E