Flink 认为 Batch 是 Streaming 的一个特例,所以 Flink 底层引擎是一个流式引擎,在上面实现了流处理和批处理。而窗口(window)就是从 Streaming 到 Batch 的一个桥梁。
引言
在流处理应用中,数据是连续不断的,因此我们不可能等到所有数据都到了才开始处理。当然我们可以每来一个消息就处理一次,但是有时我们需要做一些聚合类的处理。
基于窗口驱动方式可分为:
- 时间驱动的(Time Window,例如:每30秒钟)
- 数据驱动的(Count Window,例如:每一百个元素)
基于窗口处理方式可分为:
- 翻滚窗口(Tumbling Window,无重叠)
- 滚动窗口(Sliding Window,有重叠)
- 会话窗口(Session Window,活动间隙)
需要说明的是,Flink将Time分为3种:
- event time(事件时间:事件发生时的时间)
- ingestion time(摄取时间:事件进入流处理系统的时间)
- processing time(处理时间:消息被计算处理的时间