Что даёт идемпотентный Kafka producer (enable.idempotence=true)?
- Как Kafka защищается от дублей при повторах продюсера?
Продюсер получает producer id, нумерует пакеты по партициям; брокер отбрасывает повтор с уже записанным номером и не допускает пропусков. Дубли из-за повторов и перестановки исчезают.
- Включён по умолчанию с Kafka 3.0 (вместе с acks=all)
- Работает в пределах сессии продюсера и партиции
- Не защищает от повторной отправки самим приложением после перезапуска — для этого транзакции или идемпотентный потребитель
А ещё Порядок сохраняется при max.in.flight.requests.per.connection ≤ 5
Подробно
Это полезно, когда отправка была успешна, но подтверждение потерялось. Broker видит повтор по producer id (PID) и sequence number и не пишет duplicate record. Ключевая граница: гарантия действует только в пределах одной producer-сессии — после рестарта продюсера брокер выдаёт новый PID, и старые дубли он уже не распознает (от этого защищает только transactional producer с заданным transactional.id или идемпотентность на стороне потребителя).
Что хотят услышать
- Механизм producer id и номеров последовательности.
- Что защищает и что нет.
- Связь с порядком сообщений.
Частые ошибки
- Считать producer idempotence полной exactly-once гарантией всего приложения.
- Думать, что защита от дублей переживает рестарт продюсера (PID меняется).
- Отключать retries и терять сообщения вместо борьбы с дублями.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✓Брокер по PID и sequence number отбрасывает дубли ретраев в рамках партиции
- ✗Сквозной exactly-once между producer и consumer без каких-либо дополнительных мер
- ✗Возможность редактировать уже отправленные сообщения
- ✗Автоматическое шифрование payload
Что спросят дальше
- Что дают Kafka transactions?
- Почему consumer всё равно должен быть идемпотентным?
Разбор темы
- Kafka Producer
Запись и сериализация, выбор партиции, батчинг и сжатие, acks и долговечность, идемпотентный producer и транзакции.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.