Выбор ответа Middle Разборы систем обновлено
Дубли уведомлений
Вопрос
Сервис уведомлений читает события из Kafka и шлёт push. После ребалансировки консьюмеров часть пользователей получила одно уведомление дважды. Что исправит?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Дедупликация: атомарно отмечать eventid (SET NX). После ребалансировки сообщения с незакоммиченным offset приходят повторно, это нормальное поведение at-least-once.
Варианты ответа
- Перейти на at-most-once и смириться с потерями
- Отправлять push синхронно из сервиса заказов
- Дедупликация: атомарно отмечать event_id (SET NX)правильный ответ
- Увеличить число партиций, чтобы не было ребалансировок
Разбор
После ребалансировки сообщения с незакоммиченным offset приходят повторно, это нормальное поведение at-least-once. Атомарная отметка ключа события отсекает повтор. At-most-once убирает дубли ценой потерянных уведомлений. Синхронная отправка из сервиса заказов связывает сервисы и не решает повторы при ретраях. Число партиций на дубли не влияет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.