Вступить в клуб →
средняявопросХранилища и распределённая обработка

После сбоя консьюмера часть событий Kafka учтена дважды

Сервис читает события из Kafka и пишет их в ClickHouse. После сетевого сбоя и перебалансировки группы консьюмеров в витрине обнаружились дубли: часть событий за минуту до сбоя посчиталась дважды, суммы в отчёте разъехались с источником.

Как правильно смотреть на эту ситуацию?

  • Дубли означают ошибку продюсера: при включённой идемпотентности Kafka доставляет каждое сообщение ровно один раз, поэтому искать надо повторную отправку на стороне отправителя.
  • Достаточно переключить auto.offset.reset на earliest: этот параметр задаёт, с какого места консьюмер продолжает после перебалансировки, и с ним он перестанет перечитывать обработанное.
  • При типовой настройке доставка идёт «как минимум один раз»: сбой между записью данных и фиксацией смещения даёт повторное чтение. Приёмник должен быть готов к дублям: идентификатор события и дедупликация.
  • Нужно отключить ретраи в консьюмере и увеличить таймаут сессии: без повторных попыток и лишних перебалансировок дубли не появятся вовсе.

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела