gpt4 book ai didi

apache-kafka-streams - 卡夫卡流 : windows retention period memory/performance impact

转载 作者:行者123 更新时间:2023-12-02 01:00:19 25 4
gpt4 key购买 nike

我们在 kafka-streams 中进行了开发,它产生了一种时间窗口聚合:

selectKey().groupByKey().aggregate()

然后使用

TimeWindows.of().until()

我的主要问题是,如果不使用 until 会发生什么情况,假设我们有 1 分钟的窗口,由于某些不可预见的原因,一个新事件从 1 周前到达,应用程序是否保存了所有Windows 从一开始就状态?,它不会产生过多的内存消耗,或者在持久化所有窗口的状态的情况下,它不会假设一个显着的延迟来恢复适当的窗口吗?

最佳答案

我们最近遇到了同样的问题。答案可以在这个 kafka 流的源文件中找到:

https://github.com/apache/kafka/blob/1.1/streams/src/main/java/org/apache/kafka/streams/kstream/Windows.java

其中包含:

static final long DEFAULT_MAINTAIN_DURATION_MS = 24 * 60 * 60 * 1000L; // one day

因此,如果不指定 until() 设置,您的窗口状态存储将默认保留一天(下限)的记录。

您问题的另一部分是:对于延迟到达、超过窗口过期时间的事件会发生什么情况?该答案在开发人员指南中:

In the Kafka Streams DSL users can specify a retention period for the window. This allows Kafka Streams to retain old window buckets for a period of time in order to wait for the late arrival of records whose timestamps fall within the window interval. If a record arrives after the retention period has passed, the record cannot be processed and is dropped.

将这些信息拼凑在一起表明,如果您没有在窗口流中指定 until() 设置,则记录将至少保留一天,并且记录到达时间超过一天迟到将被丢弃。

关于apache-kafka-streams - 卡夫卡流 : windows retention period memory/performance impact,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51096241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com