Выбор ответа Middle Батч и стриминг спрашивают часто обновлено

Как получить exactly-once на практике

Вопрос

Пайплайн читает из Kafka с гарантией at-least-once и пишет агрегаты в базу. Как добиться, чтобы результат был как при exactly-once?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Сделать запись идемпотентной: upsert по ключу окна или дедупликация по id события в приёмнике. At-least-once плюс идемпотентный приёмник даёт эффективно-однократный результат: повторная обработка перезапишет то же значение.

Варианты ответа

  1. Отключить ретраи у консьюмера, чтобы каждое сообщение обрабатывалось не больше одного раза
  2. Сделать запись идемпотентной: upsert по ключу окна или дедупликация по id события в приёмникеправильный ответ
  3. Коммитить оффсет до обработки сообщения, тогда после рестарта оно не будет прочитано повторно
  4. Увеличить число партиций, чтобы каждое событие гарантированно читал только один консьюмер группы

Разбор

At-least-once плюс идемпотентный приёмник даёт эффективно-однократный результат: повторная обработка перезапишет то же значение. Отключение ретраев и коммит до обработки превращают гарантию в at-most-once: события начнут теряться. Число партиций на гарантии не влияет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.