Flink 在流应用程序中支持不同的 Time 概念,就比如有 Processing Time、Event Time 和 Ingestion Time。下面我们一起来看看这三个 Time。
Processing Time
Processing Time 是指事件被处理时机器的系统时间。
如果我们 Flink Job 设置的时间策略是 Processing Time 的话,那么后面所有基于时间的操作(如时间窗口)都将会使用当时机器的系统时间。每小时 Processing Time 窗口将包括在系统时钟指示整个小时之间到达特定操作的所有事件。
例如,如果应用程序在上午 9:15 开始运行,则第一个每小时 Processing Time 窗口将包括在上午 9:15 到上午 10:00 之间处理的事件,下一个窗口将包括在上午 10:00 到 11:00 之间处理的事件。
Processing Time 是最简单的 "Time" 概念,不需要流和机器之间的协调,它提供了最好的性能和最低的延迟。但是,在分布式和异步的环境下,Processing Time 不能提供确定性,因为它容易受到事件到达系统的速度(例如从消息队列)、事件在系统内操作流动的速度以及中断的影响。
Event Time
Event Time 是指事件发生的时间,一般就是数据本身携带的时间。这个时间通常是在事件到达 Flink 之前就确定的&
本文详细介绍了Flink中Processing Time、Event Time和Ingestion Time三种时间语义,强调了各自的特点和应用场景。Processing Time提供最佳性能但可能不准确,Event Time确保确定性但可能有延迟,Ingestion Time则介于两者之间。Flink支持通过WaterMark机制处理无序事件。实际应用中,Processing Time适用于不关心事件时间的场景,而Event Time常用于需要精确时间的业务。
订阅专栏 解锁全文
988

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



