代码之家  ›  专栏  ›  技术社区  ›  user1028741

Kafka流-为变更日志定义保留策略

  •  0
  • user1028741  · 技术社区  · 6 年前

    我使用Kafka流进行一些时间窗口聚合。 我只对每个窗口的最终结果感兴趣,所以我使用了.suppress()功能,它为其状态创建一个changelog主题。

    此changelog主题的保留策略配置定义为“紧凑型”,据我所知,它将至少保留过去每个键的最后一个事件。

    我的应用程序中的问题是密钥经常更改。这意味着主题将无限增长(每个窗口都会带来新的键,这些键永远不会被删除)。

    因为聚合是按窗口进行的,所以在聚合完成后,我并不真正需要“旧”键。

    有没有方法告诉Kafka流从以前的窗口中删除密钥?

    为此,我认为将changeLog主题保留策略配置为“compact,delete”将完成此项工作(在Kafka中可以根据以下内容获得: KIP-71 , KAFKA-4015 .

    但是,是否可以使用Kafka Streams API更改保留策略?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Matthias J. Sax    6 年前

    suppress() 如果记录从缓冲区中被逐出并发送到下游,则操作员将向changelog主题发送逻辑删除消息。因此,您不必担心主题的无限增长。更改压缩策略实际上可能会破坏操作员提供的保证,并且您可能会丢失数据。