时间和窗口
乱序流中的水位线

每隔一段时间,生成水位线=最大时间戳-延迟时间(2)
水位线向下游广播,确保下游窗口时间同步。
下游收到的来自上游的不同水位线,存储所有分区的水位线,取最小一个作为自己水位线。
所以 Flink 中的水位线,其实是流处理中对低延迟和结果正确性的一个权衡机制,而且把控制的权力交给了程序员,我们可以在代码中定义水位线的生成策略。其思想继承lamport时钟,功能上完成了exactly one。
窗口
将流处理转化为微型批处理,以提升效率
(1)第一个数据时间戳为 2,判断之后创建第一个窗口[0, 10),并将 2 秒数据保存进去;
(2)后续数据依次到来,时间戳均在 [0, 10)范围内,所以全部保存进第一个窗口;
(3)11 秒数据到来,判断它不属于[0, 10)窗口,所以创建第二个窗口[10, 20),并将 11秒的数据保存进去。由于水位线设置延迟时间为 2 秒,所以现在的时钟是 9 秒,第一个窗口也没有到关闭时间;
(4)之后又有 9 秒数据到来,同样进入[0, 10)窗口中&#x

本文详细介绍了Flink的流处理特性,包括时间窗口和水位线的概念,如何处理乱序流,以及检查点和端到端一致性。水位线用于处理乱序事件,确保低延迟和结果正确性。窗口机制将流转换为微型批处理,支持滚动、滑动和会话窗口。检查点用于状态备份,保证在不暂停处理的前提下实现一致性。此外,讨论了幂等性和事务在Flink中的应用,确保数据的准确写入。
最低0.47元/天 解锁文章
654

被折叠的 条评论
为什么被折叠?



