保留策略删除旧消息后,Kafka 会继续分配顺序偏移吗?

问题描述 投票:0回答:1

我正在使用 Kafka 来处理一个有 4 个分区的主题。 Kafka 中消息的保留期 (TTL) 默认设置为 7 天。我正在运行一个非流式批处理作业来处理来自 Kafka 的数据,并且在每次处理运行后手动存储 Kafka 偏移量。

以下是处理几天后保存的偏移量的示例:

第 1 天(已保存偏移量):

{
  "0": 100,
  "1": 110,
  "2": 90,
  "3": 123
}

第 6 天(已保存偏移量):

{
  "0": 20000,
  "1": 21000,
  "2": 11000,
  "3": 17003
}

到第 7 天,Kafka 的保留策略将生效,所有超过 7 天的消息将被自动删除。

我的担忧:

当第 7 天后向 Kafka 生成新数据并且旧消息已被删除时,我想知道偏移量会发生什么情况。

  • Kafka 是否会继续按顺序分配偏移量,这意味着下一条新消息的分区 0 的偏移量为 20001?
  • 或者一旦旧消息被删除,Kafka会将每个分区的偏移量重置回0?

我存储的最后处理的偏移量约为 20000,我想确保第二天从偏移量 20001 开始读取将允许我正确读取新生成的消息,而不会遇到任何问题(例如 Kafka 重用旧偏移量) .

apache-kafka spring-kafka apache-kafka-streams confluent-kafka-python
1个回答
0
投票

Kafka 不会重用以前不再映射到记录的偏移量。

新记录总是按顺序分配下一个偏移量。因此,如果分区上当前的最后一条记录位于偏移量 20000 处,则该分区上的下一条记录将位于偏移量 20001 处,无论保留或日志压缩如何。

© www.soinside.com 2019 - 2024. All rights reserved.