按照数据的时间戳来看,事件是乱序的,则watermark就非常重要了:
乱序怎样产生的呢
采集过程中导致的乱序
网络传输过程导致的乱序
乱序将会导致数据丢失
如何解决乱序的数据丢失问题呢
等待时间(乱序程度)如何设置
等待时间 = 最大的乱序程度。
经验值 => 对自身集群和数据的了解,大概估算
对数据进行抽样
肯定不会设置为几个小时,一般设为 秒 或者 分钟
底层实现
watermark = maxTimestamp - outOfOrdernessMillis - 1
= 最大乱序事件时间 - 乱序程度(等待时间) - 1ms
需求
根据socket文本计算当前乱序3秒的数据统计
分配水印机制-forBoundedOutOfOrderness
参考代码