Kafka - компактное хранение, основанное на времени - PullRequest
2 голосов
/ 26 мая 2020

Я попытался создать конфигурацию Kafka topi c, которая использует сжатие и удаление, чтобы достичь следующего:

  • В течение периода хранения сохранить последнюю версию ключа
  • По истечении периода хранения любое сообщение старше отметки времени должно быть удалено

Для этого я попробовал следующую команду c Speci c config:

cleanup.policy=[compact,delete]
retention.ms=864000000 (10 days)
min.compaction.lag.ms=3600000 (1 hour)
min.cleanable.dirty.ratio=0.1
segment.ms=3600000 (1 hour)

Конфигурация брокера следующая:

log.retention.hours=7 days
log.segment.bytes=1.1gb
log.cleanup.policy=delete
delete.retention.ms=1 day

Когда я устанавливаю меньшее значение в тесте, например, 20 минут, 1 час и т.д. c, я могу правильно видеть, что данные удаляются после периода хранения , настраивая только retention.ms на topi c.

Я вижу, что данные правильно сжимаются, как и ожидалось, но после 10-дневного периода хранения, если я прочитаю topi c с самого начала , данные намного старше 10 дней все еще там. Это проблема с таким долгим сроком хранения?

Мне здесь не хватает какой-либо конфигурации? Я проверил журналы kafka и вижу, что брокер свертывает сегменты и уплотняет, как ожидалось, но ничего не видит об удалениях?

Версия Kafka: 5.1.2-1

1 Ответ

0 голосов
/ 28 мая 2020

Может случиться так, что ваш topi c и конфигурация брокера переопределяют друг друга, и в конечном итоге будет оценена одна с более высокой важностью.

...