Вступить в клуб →
сложнаявопросKafka и надёжность интеграций

После деплоя часть сообщений теряется на завершении подов

Kafka-консьюмер живёт в Kubernetes. При каждом релизе часть событий не доезжает до базы, а в DLQ ничего нет. В коде есть обработчик сигнала:

sig := <-signals // SIGTERM
log.Info("shutting down")
os.Exit(0)

Какой порядок завершения правильный?

  • По SIGTERM снять readiness, перестать забирать новые сообщения, дообработать взятые, зафиксировать offset и закрыть консьюмер и продюсер
  • Оставить `os.Exit(0)`: незафиксированные сообщения Kafka переотправит после ребаланса, а дубли снимет идемпотентность
  • Полагаться на liveness probe: она снимет трафик и дождётся конца обработки, поэтому завершение можно оставить мгновенным
  • Увеличить число реплик перед релизом: оставшиеся поды подхватят партиции при ребалансе и доберут потерянные сообщения

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

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

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

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