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