Всем здарова. Подготовил список часто встречающихся вопросов на собесах по теме оффсетов в Kafka (пост по офсетам выше👆). Я собрал их на основе популярных источников с русско-и англоязычных ресурсов для разрабов и сис. аналитиков
🟢 База
- Что такое оффсет в Kafka и зачем он нужен?
- Чем оффсет отличается от позиции сообщения в партиции?
- Где физически хранятся оффсеты консьюмеров (какой топик)?
- Что происходит с оффсетом после чтения сообщения консьюмером?
🟢 Коммит оффсетов
- В чём разница между auto-commit и manual commit оффсетов?
- Когда именно коммитится оффсет — после чтения или после обработки? Почему следующий оффсет (offset + 1)?
- Какие риски auto-commit (дубликаты, потеря сообщений)?
🟢 Практические сценарии
- Что случится, если консьюмер прочитал сообщения, обработал их, но не закоммитил оффсет и упал?
- Как избежать дубликатов при рестарте консьюмера? Нужна ли идемпотентность?
- В примере с пачкой сообщений (оффсеты 100-102, ошибка на 102): какой оффсет коммитить и почему?
- Как сбросить оффсеты консьюмера (CLI kafka-consumer-groups, programmatically)?
🟢 Для бывалых
- Как оффсеты работают в consumer group при rebalance?
- Что такое earliest/latest offset при подписке и когда их использовать?
- Можно ли хранить оффсеты не в Kafka, а externally (в БД)? Зачем?
- Как offset management влияет на exactly-once семантику?
ℹ️ Эти вопросы покрывают 90% того, что спрашивают на собесах (middle/senior) на эту тему. Джуна за оффсет мучать вообще не будут, да и мидлов не часто такое спрашивают, но почему бы не блестнуть этими знаниями на собесах)
Короче если нужны ответы на эти вопросы, дайте знать. Скину с ссылочками, мб даже отдельным постом