防止日志记录重复



>我在世界各地有许多应用程序将数据发送到我的服务器。所有数据均使用 Kafka 流作为 avro 生成到 Kafka 主题中,具有 40 个分区我想防止重复数据。就我而言,应用程序可以多次发送相同的消息(即使在几分钟后(,我想知道 Kafka 是否可以帮助我防止它。是否有任何选项可以"散列"消息并防止向 Kafka 生成两次?

我读过一次等等,似乎它支持制片人未能制作的情况。

我希望 Kafka 能够在有限的时间内(假设 10 分钟(防止重复的消息

如果数据的生成者是 Streams 应用,则可以考虑使用 Suppress 运算符来缓冲和抑制重复项。

看:https://kafka.apache.org/documentation/streams/developer-guide/dsl-api.html#controlling-emit-rate

这假定重复项来自 KTable 更新。

如果你想提供一个这些上游应用程序的例子,我可以举一个更具体的例子,但它基本上看起来像:

myKTable
  .suppress(untilTimeLimit(
    ofMinutes(10), 
    maxBytes(1_000_000).emitEarlyWhenFull()
  ))
  .to(...the output topic...)

如果你想防止重复,你必须在生产者方面做这样的事情。另一方面,如果您只想节省存储重复项的费用,则可以在相关主题上配置日志压缩。

我希望这有帮助!

-John

相关内容

  • 没有找到相关文章

最新更新