Как Кафка удаляет надгробные сообщения - PullRequest
0 голосов
/ 03 апреля 2020

После нескольких неудачных попыток я смог удалить записи в kafka, используя сообщения-захоронения. Однако алгоритм (или логика c), который использует Кафка для удаления этих надгробных сообщений, мне до сих пор неясен.

Из моих наблюдений я мог бы выяснить, что существует некоторая связь между последним измененным временем сегмента и удаление надгробных сообщений. Я изучил это { ссылка }, но это немного сложно понять.

Топи c детали

Topic:reddyvel_13   PartitionCount:1    ReplicationFactor:3 Configs:cleanup.policy=compact,segment.bytes=2000000,delete.retention.ms=10000
    Topic: reddyvel_13  Partition: 0    Leader: 1   Replicas: 1,5,2 Isr: 1,5,2

У меня есть set cleanup.policy=compact, segment.bytes=2000000, delete.retention.ms=10000

Хронология событий

  • Первый сегмент (baseOffset = 0) был закрыт в 2020-04-02 07:12:09,908
[2020-04-02 07:12:09,908] INFO [ProducerStateManager partition=reddyvel_13-0] Writing producer snapshot at offset 16623 (kafka.log.ProducerStateManager)
[2020-04-02 07:12:09,908] INFO [Log partition=reddyvel_13-0, dir=/local/kafka/data] Rolled new log segment at offset 16623 in 1 ms. (kafka.log.Log)

Сжатие было немедленно запущено в этом закрытом сегменте

[2020-04-02 07:12:22,989] INFO Cleaner 0: Cleaning log reddyvel_13-0 (cleaning prior to Thu Apr 02 07:12:09 EDT 2020, discarding tombstones prior to Wed Dec 31 19:00:00 EST 1969)... (kafka.l
og.LogCleaner)
  • Отправлено еще несколько сообщений вместе с несколькими надгробиями (для удаления сообщений, присутствующих в первом сегменте) и Второй сегмент был закрыт в 2020-04-02 07:56:50,405
[2020-04-02 07:56:50,405] INFO [ProducerStateManager partition=reddyvel_13-0] Writing producer snapshot at offset 33868 (kafka.log.ProducerStateManager)
[2020-04-02 07:56:50,406] INFO [Log partition=reddyvel_13-0, dir=/local/kafka/data] Rolled new log segment at offset 33868 in 2 ms. (kafka.log.Log)

Сжатие было запущено

[2020-04-02 07:56:53,180] INFO Cleaner 0: Cleaning log reddyvel_13-0 (cleaning prior to Thu Apr 02 07:56:50 EDT 2020, discarding tombstones prior to Thu Apr 02 07:11:59 EDT 2020)... (kafka.l
og.LogCleaner)

Здесь, выше, в сообщении журнала указано discarding tombstones prior to Thu Apr 02 07:11:59 EDT 2020. Эта временная метка точно равна первой метке времени закрытия сегмента (2020-04-02 07:12:09,908) - delete.retention.ms (10 секунд) моей топи c. Я не могу выяснить связь между ними.

Может кто-нибудь объяснить алгоритм удаления захоронения в более простых терминах и причины этого?

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...