Перейти к содержимому
3 / 15

Идемпотентный продюсер и транзакции Kafka: как получается exactly-once?

«Exactly-once» в Kafka — это не магия доставки, а комбинация трёх механизмов. Идемпотентный продюсер присваивает каждому сообщению идентификатор продюсера и порядковый номер, и брокер отбрасывает повтор — так исчезают дубли от повторных отправок при сетевых сбоях, но только в пределах одной сессии продюсера и одной партиции. Транзакции позволяют атомарно записать сообщения в несколько партиций и одновременно зафиксировать оффсеты потребителя, что даёт корректный шаблон «прочитал — обработал — записал» внутри Kafka. Уровень изоляции читателя read_committed скрывает от потребителя сообщения незавершённых транзакций. Важная граница: гарантия действует внутри Kafka. Как только обработчик пишет во внешнюю систему — базу, платёжный шлюз, почту, — exactly-once снова становится задачей приложения и решается идемпотентностью операции и ключом дедупликации.

Идемпотентный продюсер и транзакции Kafka: как получается exactly-once? | JScriptiser