应用
- 聚合统计: 按 window 聚合统计数据之后输出到 DB 中
- 记录合并: 将多个 Source 的数据做 merge 操作,写入到下游,减少下游的写入压力
- 双流join: 将两个 DataStream 以 window 范围做 join 操作
Window 模型

- WindowAssigner: 决定了将如何进行 Window 的划分,典型的有 SlidingWindow 滑动窗口、滚动窗口、Session 窗口等
- Trigger: 决定 Window 计算何时触发,根据 Window 的类型有不同的 Trigger ( Optional )
- Evictor: 数据剔除器,负责过滤一些不满足条件的数据 ( Optional )
- WindowFunction: 负责处理数据
- SideOutput: 负责数据如何输出到下游的 DataStream
Window Assigner
Flink Window 支持两种主要类型的 window:time window 和 count window,再细分可以划分为如下类型,同时,每种窗口又可以细分为 Keyed Windows 和 Non-Keyed Windows:
- time window
- Tumbling Windows 滚动窗口
- Sliding Windows 滑动窗口
- Session Windows 会话窗口
- Global Windows 全局窗口
- count window
Sliding Window

Tumbling Window

Session Window

Global Window

没有 trigger 触发器,也就是不会切分窗口
可以通过 添加 trigger 实现自定义