Вопросы по Kafka
Топики и партиции, producer и consumer, репликация, гарантии доставки.
- 01Чем Kafka принципиально отличается от RabbitMQ?
Kafka — распределённый журнал: сообщения хранятся заданное время независимо от чтения, потребители сами двигают offset и могут перечитать. RabbitMQ — классический брокер очередей…
Middle - 02Как на стороне consumer-а добиться доставки at-least-once и почему при этом появляются дубли?
Сначала обработать, потом зафиксировать offset (или подтвердить сообщение). Если упасть между обработкой и фиксацией, сообщение придёт снова — отсюда дубли, и обработка должна…
Middle - 03Как consumer group в Kafka масштабирует потребление?
Партиции топика делятся между участниками группы: каждая партиция в группе читается ровно одним потребителем. Добавили потребителя — партиции перераспределились.
Middle - 04Чем отличаются at-most-once, at-least-once и exactly-once?
At-most-once — не повторяем: возможны потери, дублей нет. At-least-once — повторяем до подтверждения: потерь нет, дубли возможны. Exactly-once — эффект ровно один раз: достигается…
Middle - 05Что такое topic, partition и offset в Kafka?
Топик — именованный поток сообщений. Партиция — упорядоченный журнал, часть топика. Offset — номер сообщения внутри партиции.
Junior - 06Какая гарантия порядка в Kafka является базовой?
Kafka гарантирует порядок только внутри партиции. Чтобы события одного заказа шли по порядку, у них должен быть одинаковый ключ (order_id) — тогда они попадут в одну партицию.
Middle - 07Что произойдёт, если потребителей в consumer group больше, чем партиций в топике?
Лишние потребители простаивают: одна партиция в группе читается только одним потребителем, поэтому параллелизм группы не больше числа партиций.
Senior - 08Когда стоит выбирать Kafka?
Kafka — когда нужны журнал событий с хранением и перечитыванием, большая пропускная способность, много независимых потребителей одного потока и порядок по ключу.
Middle - 09Какие основные компоненты Kafka?
Брокеры хранят партиции и обслуживают клиентов; клиенты — продюсеры и потребители; контроллер управляет метаданными кластера и выборами лидеров партиций — с Kafka 3.3+ на KRaft…
Middle - 10Как Kafka producer выбирает партицию для сообщения?
С ключом — партиция = murmur2(key) % число партиций: одинаковый ключ — всегда одна партиция и порядок. Без ключа — sticky partitioner: пачка уходит в одну партицию, следующая — в…
Middle - 11Что означают acks=0, acks=1 и acks=all у Kafka producer?
acks=0 — не ждём подтверждения: максимум скорости, потери возможны. acks=1 — ждём запись лидером: потеря при падении лидера до репликации. acks=all — ждём все синхронные реплики…
Senior - 12Что даёт идемпотентный Kafka producer (enable.idempotence=true)?
Продюсер получает producer id, нумерует пакеты по партициям; брокер отбрасывает повтор с уже записанным номером и не допускает пропусков. Дубли из-за повторов и перестановки…
Senior - 13Чем commitSync() отличается от commitAsync() у Kafka consumer?
commitSync блокирует и повторяет до успеха или неустранимой ошибки — надёжно, но медленнее. commitAsync не ждёт и не повторяет — быстро, но ошибки нужно обрабатывать в callback.
Senior - 14Что делает настройка auto.offset.reset=earliest?
auto.offset.reset действует, только когда у группы нет сохранённого offset (новая группа или offset удалён по сроку). earliest — читать с самого раннего доступного, latest …
Middle - 15Что такое Kafka rebalance и почему он опасен для обработки сообщений?
Ребаланс — перераспределение партиций при входе или выходе участника группы. При eager-протоколе все отдают партиции и ждут нового назначения — обработка стоит; незакоммиченная…
Senior - 16Чем Kafka Streams отличается от обычного Kafka Consumer?
Consumer API — низкоуровневое чтение: опрос, коммит, обработка вручную. Kafka Streams — библиотека потоковой обработки поверх Kafka: преобразования, агрегации, соединения потоков…
Senior - 17Зачем нужна Schema Registry в Kafka-экосистеме?
Schema Registry хранит версии схем сообщений (Avro, Protobuf, JSON Schema) и проверяет совместимость новых версий. Сообщение несёт id схемы, а не саму схему.
Middle - 18Что вы выберете для очереди фоновых задач, а что для шины событий между сервисами — RabbitMQ или Kafka?
Очередь задач — RabbitMQ (или SQS): подтверждение каждого сообщения, повторы, DLX, приоритеты, отложенная доставка, медленная задача не блокирует остальные. Шина событий — Kafka…
Middle - 19Что такое ISR (in-sync replicas) в Kafka и какую роль он играет?
ISR — реплики партиции, которые не отстали от лидера дольше replica.lag.time.max.ms. Подтверждение acks=all ждёт ISR, а новым лидером может стать только реплика из ISR.
Middle - 20Как min.insync.replicas работает вместе с acks=all?
min.insync.replicas — минимум реплик в ISR, при котором брокер принимает запись с acks=all. Если синхронных реплик меньше — продюсер получает ошибку NotEnoughReplicas.
Senior - 21Что такое high watermark в Kafka и как он связан с видимостью сообщений для consumer-а?
High watermark — offset, до которого запись реплицирована на все реплики ISR. Потребители видят сообщения только до него: иначе прочитали бы данные, которые могут исчезнуть при…
Middle - 22Чем опасен unclean leader election (unclean.leader.election.enable=true) в Kafka?
Разрешает стать лидером отставшей реплике вне ISR, когда все реплики ISR недоступны. Партиция снова доступна, но подтверждённые сообщения теряются, а потребители могут увидеть…
Middle - 23Чем session.timeout.ms отличается от max.poll.interval.ms у Kafka consumer-а?
session.timeout.ms — сколько ждать heartbeat от фонового потока: ловит «мёртвый» процесс. max.poll.interval.ms — максимум времени между вызовами poll(): ловит «живой, но…
Senior - 24Producer настроен с retries и несколькими запросами в полёте одновременно. Чем это грозит порядку сообщений и как решается?
С несколькими запросами в полёте пакет 1 может упасть и уйти на повтор, а пакет 2 уже записан — порядок нарушен. Идемпотентный продюсер сохраняет порядок при max.in.flight ≤ 5 за…
Senior - 25Чем неблокирующий повтор через отдельные retry-топики лучше повтора прямо в обработчике?
Блокирующий повтор в обработчике держит партицию: одно проблемное сообщение задерживает все следующие. Retry-топики уносят сообщение на повтор с задержкой, а партиция продолжает…
Senior - 26Что делает log compaction в Kafka и для чего применяется?
Compaction удаляет старые записи по ключу, оставляя последнее значение каждого ключа. Топик становится снимком состояния, который можно перечитать и восстановить.
Middle - 27Зачем нужен Kafka Connect, если те же данные можно перекладывать своим сервисом?
Kafka Connect — платформа для типовых интеграций: source-коннекторы из баз и систем в Kafka, sink-коннекторы из Kafka в хранилища. Масштабирование, хранение позиций, перезапуск и…
Middle - 28Consumer lag стабильно растёт. Что это означает и с чего начать разбор?
Lag растёт — потребление медленнее производства. Разбор: всплеск входящего потока или замедление обработки; все партиции или одна (горячий ключ); ребалансы и повторы.
Middle - 29Что произойдёт с гарантией порядка при увеличении числа партиций в существующем топике?
Партиция для ключа — hash(key) % N. Сменили N — новые сообщения ключа идут в другую партицию, а старые ещё могут обрабатываться: порядок по ключу на переходе нарушается.
Senior - 30Что такое offset в Kafka?
Offset — порядковый номер записи в партиции. По нему потребитель знает, что уже прочитал: группа фиксирует offset в служебном топике __consumer_offsets.
Junior - 31Что делает producer в системе обмена сообщениями?
Продюсер отправляет записи в топик. Получателей он не знает и обработки не ждёт — только подтверждения записи брокером.
Junior - 32Зачем потребителей объединяют в consumer group?
Группа потребителей делит партиции топика между участниками: каждое сообщение обрабатывается одним участником группы.
Junior - 33Зачем партиции реплицируются между брокерами?
Копии партиции на других брокерах защищают от потери данных и недоступности при падении брокера: лидером становится реплика из ISR.
Junior - 34Для чего нужна Schema Registry?
Schema Registry — централизованное хранилище схем сообщений с проверкой совместимости: контракт между производителем и потребителями проверяется автоматически.
Junior - 35Что показывает метрика consumer lag?
Lag — разница между последним записанным offset и зафиксированным группой: сколько сообщений ещё не обработано. Главный показатель здоровья потребителя.
Junior - 36Что такое zero-copy и почему Kafka так быстро отдаёт данные?
Обычная отдача файла: диск → page cache → буфер приложения → буфер сокета → сеть: 4 копирования и 4 переключения режима. sendfile передаёт данные из page cache в сокет внутри ядра…
Senior - 37Что важно задавать при отправке через KafkaTemplate?
Задавать ключ (порядок и партиция по сущности), сериализатор и формат, обрабатывать результат отправки — она асинхронная; для надёжности — acks=all и идемпотентный продюсер (по…
Middle - 38Как @KafkaListener связан с listener container и offset commit?
@KafkaListener — метод, который вызывает listener container: контейнер крутит цикл poll() в своих потоках, вызывает метод для записей и коммитит offset по AckMode. По умолчанию…
Senior - 39Как в Spring Kafka обычно строят retry и dead letter topic?
Два способа: блокирующий — DefaultErrorHandler с BackOff и DeadLetterPublishingRecoverer (повторы на месте, партиция ждёт); неблокирующий — @RetryableTopic: запись уходит в…
Senior - 40Когда в Spring выбрать AMQP/RabbitMQ, а когда Kafka?
RabbitMQ (Spring AMQP) — очередь задач: подтверждение каждого сообщения, гибкая маршрутизация, приоритеты, отложенная доставка, задачи разной длительности. Kafka (Spring Kafka) …
Senior - 41У топика 6 партиций. Что даст параметр concurrency = 3 у @KafkaListener и что произойдёт при concurrency = 10?
concurrency = 3 — три потребителя в группе внутри экземпляра, по 2 партиции на каждого. При concurrency = 10 и 6 партициях 4 потребителя простаивают: партиция в группе читается…
Middle - 42Что делает аннотация @KafkaListener?
@KafkaListener(topics = "orders", groupId = "billing") объявляет обработчик: цикл poll(), десериализацию, вызов метода и коммит offset берёт на себя контейнер Spring Kafka.
Junior
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.