At-least-once допускает повторы и требует идемпотентной обработки. Exactly-once ограничено определённым контуром: транзакция Kafka не делает произвольную запись во внешнюю БД однократной.
Опишите разницу между стратегиями доставки сообщений at-least-once и exactly-once в брокерах, например Kafka. Какие требования это накладывает на ваш Python-бэкенд?
At-least-once допускает повторы и требует идемпотентной обработки. Exactly-once ограничено определённым контуром: транзакция Kafka не делает произвольную запись во внешнюю БД однократной.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
At-least-once допускает повторы и требует идемпотентной обработки. Exactly-once ограничено определённым контуром: транзакция Kafka не делает произвольную запись во внешнюю БД однократной.
Для Kafka-процесса read-process-write можно согласовать offsets и записи в Kafka-транзакции при правильной конфигурации читателей. Для внешнего эффекта нужны дедупликация и транзакционная связь отметки с изменением либо поддержка идемпотентного ключа у получателя. В Python учитывают crash между эффектом и commit/ack, порядок и повтор после rebalance. Обещание «брокер исключит все дубли» без границ контракта некорректно.