Как устроен Kafka изнутри: лог, партиции, оффсеты, группы потребителей
Топик Kafka — это набор партиций, каждая из которых представляет собой упорядоченный, только дописываемый лог на диске. Сообщение получает оффсет — порядковый номер внутри партиции; порядок гарантируется только внутри партиции, между партициями его нет. Чтение не удаляет данные: потребитель хранит позицию, а сообщения живут до истечения ретеншена, поэтому один и тот же поток читают несколько независимых групп и можно перечитать историю. Группа потребителей делит партиции между своими участниками: одну партицию в момент времени читает ровно один участник группы, отсюда правило — параллелизм группы ограничен числом партиций, и лишние потребители простаивают. Оффсеты хранятся в служебном топике; их фиксация — отдельное решение: автоматическая проще, ручная после обработки безопаснее. Реплики поддерживаются через набор синхронных реплик (ISR), из которого выбирается лидер партиции при отказе.