知识卡片

水位线的广播传播与终止标志

专业/工作 · 499.a.1

内容

水位线在数据流图中沿着与数据记录相同的边传播,但规则不同:上游算子会把水位线广播给它连接的所有下游算子,而不是像普通数据那样按Key或随机分发——因为水位线代表的是”某个时间点之前的数据都到齐了”这个全局性事实,必须让每个下游都同步知道。另外有一个特殊值:当某条流发出的水位线达到最大值(Long.MAX_VALUE)时,代表这条流已经结束、不会再有后续数据,相当于一个显式的终止信号,让下游可以放心地触发所有还在等待的窗口计算。这套”广播+哨兵值”的设计,让一个纯粹靠时间戳比较的机制同时承担了进度同步和结束通知两个职责。

参考来源

《Flink入门与实战》第3章《时间和窗口》