Gymterview
middle

Как устроена архитектура топика?

Топик — это логическая единица организации данных в Kafka, разбитая на партиции для параллельной обработки.

  • Топик разбит на партиции — сообщения распределяются по партициям для эффективной параллельной обработки и хранения
  • Партиции хранятся на диске — Kafka сохраняет данные на диск, что обеспечивает персистентность
  • Партиции делятся на сегменты — сегмент представляет собой файл на диске; сегменты бывают пассивные и активный. Запись происходит в активный сегмент
  • Данные удаляются по времени или по размеру. Удаление происходит посегментно, начиная с самого старого сегмента:
    • retention.bytes — по максимальному размеру
    • retention.ms — по времени
  • Сообщение можно быстро найти по его Offset — каждому сообщению в партиции присваивается уникальный offset (смещение), по которому его можно мгновенно найти

На собеседовании: важно объяснить связь «топик -> партиция -> сегмент -> файл на диске». Часто спрашивают, почему Kafka так быстра, несмотря на запись на диск — ответ в последовательной записи (sequential I/O) и использовании page cache ОС.