Как работает смещение темы Kafka - PullRequest
0 голосов
/ 10 января 2019

У меня есть вопрос о том, как смещения темы работают в Kafka, хранятся ли они в виде структуры B-Tree в Kafka?

Конкретная причина, по которой я прошу это, скажем, у меня есть Тема с 10 миллионами записей в Теме, что будет означать смещение в 10 миллионов, если сжатие не произошло или оно отключено, а теперь, если я использую consumer.seek (5000000) , он будет работать как LinkList, я имею в виду, он перейдет к смещению 0 и попытается перейти оттуда к 5000000-му смещению, или у него есть индексоподобная структура, которая точно скажет, где находится 5000000-я запись в журнале?

Спасибо за ответы?

1 Ответ

0 голосов
/ 10 января 2019

Записи Кафки хранятся последовательно в журналах. Точный формат хорошо описан в документации .

Кафка обычно ожидает, что чтение будет последовательным, так как потребители выбирают записи по порядку. Однако, когда требуется произвольный доступ (посредством поиска или перезапуска с определенной позиции), Kafka использует индексные файлы для быстрого поиска записи на основе ее смещения.

Бревно Кафки состоит из нескольких сегментов. Каждый сегмент имеет индекс и связанный с ним файл временного индекса, который сопоставляет смещения и временную метку с положением файла. Частота, с которой записи добавляются в индексы, может быть настроена с помощью index.interval.bytes. Используя эти файлы, Кафка может сразу же искать ближайшую позицию и не перечитывать все сообщения.

Возможно, вы заметили, что после нечистого отключения Кафка восстанавливает индексы в течение нескольких минут. Именно эти индексы используются для поиска искомых позиций, которые перестраиваются.

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