Kafka Streams-时间窗口关闭延迟?

时间:2019-01-30 09:51:14

标签: apache-kafka apache-kafka-streams

我是Kafka Streams的新手。

我使用KTable的抑制方法来仅处理这样的窗口的最终结果:

myStream
    .windowedBy(TimeWindows.of(Duration.ofSeconds(10)).grace(Duration.ofMillis(500)))
    .aggregate(new Aggregation(),
        (k, v, a) -> a,  // Disabled the actual aggregation in order to eliminate possiblities of latency
        materialized.withLoggingDisabled())
    .suppress(untilWindowCloses(Suppressed.BufferConfig.unbounded()))
    .toStream().peek((k, v) -> log.info("delay " + (System.currentTimeMillis() - k.window().endTime().toEpochMilli())));

这样,我会得到一个日志,该日志每10秒会有一次延迟,其中包括窗口结束与调用窥视的实际时间之间的差异。 我会在这里说明一个很小的数字,因为这段代码实际上什么也没做...

尽管如此,每个键/窗口的延迟时间为4-20秒。

我为每个任务使用一个线程(本主题为5个线程)。

有人可以指出我是否做错了什么?

谢谢!

编辑:

使用VirtualVM显示,在sun.nio.ch.SelectorImpl.select()上消耗了约99%的时间。这意味着AFAIU,该过程大部分时间都是“闲置”。

编辑:

似乎更改“ commit.interval.ms”(默认为30000)可以大大减少延迟。

静态延迟在15秒内达到峰值,因此问题尚未解决...

0 个答案:

没有答案