Всем здарова. Подготовил список часто встречающихся вопросов на собесах по теме оффсетов в 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) на эту тему. Джуна за оффсет мучать вообще не будут, да и мидлов не часто такое спрашивают, но почему бы не блестнуть этими знаниями на собесах)

Короче если нужны ответы на эти вопросы, дайте знать. Скину с ссылочками, мб даже отдельным постом