gpt4 book ai didi

apache-kafka - Kafka 压缩可以覆盖具有相同分区键的消息吗?

转载 作者:行者123 更新时间:2023-12-02 06:58:23 25 4
gpt4 key购买 nike

我正在使用以下代码写入 Kafka:

String partitionKey = "" + System.currentTimeMillis();
KeyedMessage<String, String> data = new KeyedMessage<String, String>(topic, partitionKey, payload);

我们使用的是 0.8.1.1 版本的 Kafka。

是否有可能当多个线程正在写入时,其中一些线程(具有不同的有效负载)使用相同的分区键写入并且因此 Kafka 会覆盖这些消息(由于相同的分区键)?

让我们朝这个方向思考的文档是: http://kafka.apache.org/documentation.html#compaction

最佳答案

我在 https://cwiki.apache.org/confluence/display/KAFKA/Log+Compaction 找到了更多资料

要点:

  1. 0.8版本之前,Kafka只支持单次retention机制:删除旧的日志段
  2. 日志压缩提供了一种替代方法,它可以为每个条目维护最新的条目唯一键,而不是只维护最近的日志条目。
  3. 每个主题都有一个选项可以选择“删除”或“压缩”。
  4. 压缩保证每个键在尾部都是唯一的日志。它的工作原理是从头到尾重新复制日志,删除稍后在日志中出现的 key 。
  5. 任何停留在日志头部 (~1GB) 内的消费者都将看到所有消息。

因此无论我们是否进行日志压缩,Kafka 都会删除较旧的记录,但日志头部的记录是安全的。

仅当下游客户端长时间无法清空 Kafka 队列(例如达到每个主题大小/时间限制)时,才会出现记录丢失问题。

我认为这应该是预期的行为,因为我们不能永远保留记录。有时必须删除它们。

关于apache-kafka - Kafka 压缩可以覆盖具有相同分区键的消息吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26643669/

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