Flink 理解延迟事件与水印

Flink understanding late events vs watermark

查看 this article 它说关于 watermark

We will now set the watermark as current time - 5 seconds, which tells Flink to expect messages to be a maximum of 5 seconds dealy - This is because each window will be evaluated only when the watermark passes through it

后面 post 它解释了当设置 允许迟到时 :

Flink will not discard message unless it is past the window_end_time + allowed lateness

实际上导致了 window 的延迟评估,因为设置了 allowed lateness ?

那么 watermarkallowed lateness 的实际使用有什么区别?什么时候使用哪个?

水印延迟 设置了 Flink 在触发 window 之前等待乱序事件的下限第一次.

允许的延迟 决定了 Flink 将在 window 的状态下保持多长时间。在 window 的状态仍然可用时到达的任何迟到事件将 再次触发 window ,导致它产生更新的结果。

一旦允许的迟到过期,window 的状态将被清除,任何超晚事件要么被丢弃,要么被发送到侧输出。

如果您的 window 输出的下游消费者可以像这样处理接收 window 结果的更新(例如,window 连接到实时仪表板),那么设置一个相对较短的水印延迟可能是有意义的,并自由地使用允许的迟到。另一方面,如果您不能在初始结果后利用任何东西,您将希望使水印延迟足够大以满足您对 accuracy/completeness 的要求,并将允许的延迟设置为零。