Kafka связывает транзакционные записи и offsets потребителя, а read_committed скрывает незавершённые и отменённые транзакции. Это даёт exactly-once для согласованной обработки внутри Kafka.
Как Kafka реализует exactly-once и какие у этого подхода ограничения?
Kafka связывает транзакционные записи и offsets потребителя, а read_committed скрывает незавершённые и отменённые транзакции. Это даёт exactly-once для согласованной обработки внутри Kafka.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Kafka связывает транзакционные записи и offsets потребителя, а read_committed скрывает незавершённые и отменённые транзакции. Это даёт exactly-once для согласованной обработки внутри Kafka.
Идемпотентный producer подавляет определённые повторы отправки, но один этот режим недостаточен для всего pipeline. Consume–process–produce фиксирует результаты и offsets в общей Kafka-транзакции. Запись во внешнюю БД, отправка письма или HTTP-вызов автоматически в неё не входят: нужны собственная идемпотентность и согласование. Транзакции также добавляют задержки и требуют корректной обработки fencing и abort.
Источник: Документация Apache Kafka.