Skip to content

窗口与水位线

1. 这是什么

窗口用于对流数据按时间或数量进行聚合,水位线用于描述事件时间进度。
这两者是 Flink 处理乱序和延迟数据的关键机制。

2. 为什么重要

很多实时业务并不是简单来一条处理一条,而是需要在一定时间范围内聚合和计算。
如果不了解窗口和水位线,就很难正确理解实时统计结果。

3. 核心内容

  • 滚动窗口
  • 滑动窗口
  • 会话窗口
  • 事件时间
  • 处理时间
  • 水位线与迟到数据

4. 学习重点

  • 理解事件时间和处理时间的差别
  • 理解水位线是对时间进度的估计
  • 理解迟到数据对结果完整性的影响

5. 常见问题

  • 把窗口理解成简单定时任务
  • 不区分事件时间和处理时间
  • 低估乱序数据对统计结果的影响

6. 练习建议

  • 写一个按分钟滚动统计的示例
  • 对比不同窗口类型的适用场景
  • 画一张水位线推进示意图

7. 自测问题

  • 事件时间为什么比处理时间更贴近真实业务
  • 水位线主要解决什么问题
  • 为什么窗口设计会影响实时结果解释方式