如果延迟kafka手动提交offset有什么影响

What is the impact if delay kafka manual commit offset

我们想手动提交kafka偏移量来控制数据丢失事件。但是我们可能会延迟手动提交,因为我们只想在坚持到数据源后才这样做

我想了解减慢提交偏移量如何影响 kafka topic/paralalism/partition 如果有的话

当你从一个topic消费的时候,如果这个consumers属于一个consumer group,那么Kafka会保证一个partition被一个consumer消费。因此,如果您手动提交,它不会影响其他消费者,因为他们从另一个分区消费。

但是,如果您将相同的分区消费者与 enable.auto.commit=falseenable.auto.commit=true 进行比较,那么自动提交启用的消费者吞吐量相对较高。如果你不需要确认你的提交,那么使用 commitAsync,它会比 commitSync 提高吞吐量。

Generally, you call the API when you are finished processing all the messages in a batch, and don’t poll for new messages until the last offset in the batch is committed. This approach can can affect throughput and latency, as can the number of messages returned when polling, so you can set up your application to commit less frequently.

但是,如果您进行手动提交,消费者重启或重新平衡时可能会出现重复消费的消息。当您使用一条消息并写入您的数据库时,之后您将把消息提交给 Kafka。如果此时消费者重新平衡或重启,则该消息将不会提交,并将被同一组中的另一个消费者重新消费。

更多信息请参考