Выбор ответа Middle Батч и стриминг спрашивают часто обновлено
Как получить exactly-once на практике
Вопрос
Пайплайн читает из Kafka с гарантией at-least-once и пишет агрегаты в базу. Как добиться, чтобы результат был как при exactly-once?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Сделать запись идемпотентной: upsert по ключу окна или дедупликация по id события в приёмнике. At-least-once плюс идемпотентный приёмник даёт эффективно-однократный результат: повторная обработка перезапишет то же значение.
Варианты ответа
- Отключить ретраи у консьюмера, чтобы каждое сообщение обрабатывалось не больше одного раза
- Сделать запись идемпотентной: upsert по ключу окна или дедупликация по id события в приёмникеправильный ответ
- Коммитить оффсет до обработки сообщения, тогда после рестарта оно не будет прочитано повторно
- Увеличить число партиций, чтобы каждое событие гарантированно читал только один консьюмер группы
Разбор
At-least-once плюс идемпотентный приёмник даёт эффективно-однократный результат: повторная обработка перезапишет то же значение. Отключение ретраев и коммит до обработки превращают гарантию в at-most-once: события начнут теряться. Число партиций на гарантии не влияет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.