Watermark机制:
Watermark 是用来触发eventtime窗口的计算。
Watermark是一个时间戳。
每一个消息事件到达时,都有一个针对该事件到达时的一个watermark值。
当watermark值>=窗口结束时间时触发窗口计算。
watermark=当前窗口计算周期内最大的事件时间-最大允许的数据延迟时间或乱序时间(注意:每一个事件到达时,该窗口计算周期内所有已到达的消息事件中都会有一个最大的事件时间)
watermark可以通过改变窗口触发计算时机,来解决一定程度上的数据乱序或延迟到达的问题
当前窗口的最大的事件时间>=窗口结束时间+最大允许的数据延迟时间或乱序时间(当有一条事件时间大于等于窗口结束时间+最大允许的数据延迟时间或乱序时间的消息事件到达后,就立刻触窗口发计算)
实际上就是在原有的窗口结束时间上再多等一个最大允许的数据延迟时间或乱序时间,一旦有事件时间在这个多等时间刻度线后的消息事件到达就立刻触发窗口计算。