middle
Как устроена архитектура топика?
Топик — это логическая единица организации данных в Kafka, разбитая на партиции для параллельной обработки.
- Топик разбит на партиции — сообщения распределяются по партициям для эффективной параллельной обработки и хранения
- Партиции хранятся на диске — Kafka сохраняет данные на диск, что обеспечивает персистентность
- Партиции делятся на сегменты — сегмент представляет собой файл на диске; сегменты бывают пассивные и активный. Запись происходит в активный сегмент
- Данные удаляются по времени или по размеру. Удаление происходит посегментно, начиная с самого старого сегмента:
retention.bytes— по максимальному размеруretention.ms— по времени
- Сообщение можно быстро найти по его Offset — каждому сообщению в партиции присваивается уникальный offset (смещение), по которому его можно мгновенно найти
На собеседовании: важно объяснить связь «топик -> партиция -> сегмент -> файл на диске». Часто спрашивают, почему Kafka так быстра, несмотря на запись на диск — ответ в последовательной записи (sequential I/O) и использовании page cache ОС.