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