Выбор ответа Middle Разборы систем обновлено

Дубли уведомлений

Вопрос

Сервис уведомлений читает события из Kafka и шлёт push. После ребалансировки консьюмеров часть пользователей получила одно уведомление дважды. Что исправит?

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

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

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

Коротко

Правильный ответ: Дедупликация: атомарно отмечать eventid (SET NX). После ребалансировки сообщения с незакоммиченным offset приходят повторно, это нормальное поведение at-least-once.

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

  1. Перейти на at-most-once и смириться с потерями
  2. Отправлять push синхронно из сервиса заказов
  3. Дедупликация: атомарно отмечать event_id (SET NX)правильный ответ
  4. Увеличить число партиций, чтобы не было ребалансировок

Разбор

После ребалансировки сообщения с незакоммиченным offset приходят повторно, это нормальное поведение at-least-once. Атомарная отметка ключа события отсекает повтор. At-most-once убирает дубли ценой потерянных уведомлений. Синхронная отправка из сервиса заказов связывает сервисы и не решает повторы при ретраях. Число партиций на дубли не влияет.

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

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