我们有来自视频流客户端的事件流,大约 1k-3k/s,主要是心跳,我们将其聚合到会话中。我们使用具有 10 分钟间隔持续时间和默认触发的会话窗口(即不允许提前触发和不允许延迟)。
我们观察到的是(1)不稳定和突发的会话发射,以及(2)不稳定和“跳跃”的水印,有时可以追溯到 2 周的历史。
我们认为这可能与具有本地时钟偏差的客户端子集相关联,从而影响事件时间。
这意味着水印不会将来自“坏”客户端的事件标记为延迟,而是根据这些新(旧)时间戳进行自我调整,从而有效地阻止最近结束的会话的发射。并且只有在某个预定义的时间内没有观察到不良事件时,水印才会提前到实时并且可以发出最近的会话。
这是一个合理的假设吗?这是上述条件下的预期行为吗?鉴于我们的假设是正确的,推荐的解决方案是什么?