Вопрос проверяет понимание гарантий доставки сообщений и надёжности Kafka-продюсера.
Идемпотентный продюсер гарантирует отсутствие дубликатов сообщений.
Даже при ретраях сообщение будет записано только один раз.
Это достигается за счёт специальных идентификаторов.
Функциональность встроена в Kafka.
Она повышает надёжность доставки.
В распределённых системах повторная отправка сообщений — обычная ситуация.
Идемпотентный продюсер Kafka — это продюсер, гарантирующий, что каждое сообщение будет записано в партицию не более одного раза.
Без идемпотентности:
при сетевых сбоях продюсер делает retry
брокер может принять одно и то же сообщение несколько раз
Результат:
дубликаты
нарушение бизнес-логики
Kafka использует:
producerId
sequence number для каждой партиции
Брокер:
отслеживает порядок сообщений
отбрасывает дубликаты
enable.idempotence=true
Дополнительно:
acks=all
ограничение на количество in-flight запросов
работает только в пределах одной партиции
не заменяет exactly-once semantics целиком
Идемпотентный продюсер — базовый механизм защиты от дубликатов сообщений в Kafka.