В чем разница между стратегиями доставки сообщений At-least-once, At-most-once и Exactly-once в Kafka?

At-most-once допускает потерю без повторной доставки, at-least-once — повторную обработку без намеренной потери, exactly-once ограничивает повторные эффекты внутри заданного контура.

Короткий ответ

Что ответить на собеседовании

At-most-once допускает потерю без повторной доставки, at-least-once — повторную обработку без намеренной потери, exactly-once ограничивает повторные эффекты внутри заданного контура.

Подробный разбор

Ответ с пояснениями

At-most-once допускает потерю без повторной доставки, at-least-once — повторную обработку без намеренной потери, exactly-once ограничивает повторные эффекты внутри заданного контура.

Если consumer фиксирует offset до обработки, сбой может потерять результат. Если после — сбой между действием и фиксацией приводит к повтору, поэтому обработчик делают идемпотентным.

В Kafka транзакционная обработка может атомарно связать выходные записи и offsets; получатели должны учитывать только подтверждённые транзакции. Идемпотентный producer решает повторы записи от повторной отправки, но не произвольную бизнес-дедупликацию. Для внешней БД или HTTP-вызова нужны дополнительные гарантии: уникальный ключ операции, outbox или согласованный протокол. «Exactly-once везде» без обозначения границ — некорректное обещание.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее