加载中...

水位线(Watermark)是流处理系统中衡量事件时间(event time)进度的机制。一条时间戳为 t 的水位线表示:系统认为事件时间早于 t 的数据已经(基本)到齐,后续算子可以放心触发 t 之前窗口的计算。
现实数据流普遍乱序:网络延迟、设备离线补传都会让事件到达顺序与发生顺序不一致。如果窗口只按到达时间关闭,结果会不准;如果无限等待,又永远无法输出。水位线就是在延迟与完整性之间做权衡的手段。
常见策略是有界乱序水位线,即当前观察到的最大事件时间减去允许的最大乱序时长。多分区输入时,算子取各上游水位线的最小值向下游传播。迟于水位线到达的数据称为迟到数据,可选择丢弃、旁路输出或触发窗口修正。
Flink、Apache Beam(Dataflow 模型)都以水位线为核心;《Streaming Systems》一书对其语义有系统阐述。

登录 后参与讨论
暂无讨论,来发表第一条评论吧