Flink三种时间语义及应用场景

Flink三种时间语义

(1)Event Time:事件发生的时间。
(2)Processing Time:事件处理的事件,没有事件时间的情况下,或者对实时性要求超高的情况下。
(3)Ingestion Time:事件进入Flink的时间,存在多个 Source Operator 的情况下,每个 Source Operator可以使用自己本地系统时钟指派 Ingestion Time。后续基于时间相关的各种操作,都会使用数据记录中的 Ingestion Time。

Event Time

事件发生的时间,这是实际应用最常见的时间语义,也是最常用的。往往是数据自身带的时间

特点:

  • 数据本身携带,时间取决于数据
  • 事件到达Flink之前就已经确定
  • 必须指定如何生成WaterMarks,用来表示Event Time进度的机制
  • 无论事件什么时候到达或者其怎么排序,最后处理 Event Time 将产生完全一致和确定的结果

Processing Time

事件处理时间 即事件被处理时机器的系统时间

特点:

  • 最简单的 Time 概念
  • 最好的性能和最低的延迟
  • 分布式和异步环境下,不能提供确定性(不能保证结果数据的准确性)
  • 容易受到事件到达系统的速度(如消息队列)、事件在系统内操作流动的速度和中断的影响

Ingestion Time

在数据源操作处(进入 Flink source 时),每个事件将进入 Flink 时当时的时间作为时间戳

特点:

  • 事件在进入数据源(Flink Source)时的时间作为时间戳()
  • 介于Event Time 和 Processing Time 之间

你可能感兴趣的:(Flink面试)