Алерт в 3 ночи: растёт очередь
Вопрос
Интервьюер: «Ночью алерт: лаг консьюмеров Kafka в сервисе уведомлений растёт, уже 2 миллиона сообщений, пользователи получают SMS с опозданием на час. Ваши действия?»
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Оценить влияние и тренд: растёт ли лаг, какие топики и партиции
Проверить консьюмеров: живы ли, нет ли перезапусков и ошибок обработки
Найти узкое место: внешний SMS-провайдер, база, ядовитое сообщение
Смягчить: масштабировать консьюмеров в пределах числа партиций, пропустить ядовитое сообщение в DLQ, включить резервного провайдера
Решить, что делать с устаревшими сообщениями (одноразовые коды уже бессмысленны)
Постмортем: алерт на лаг во времени, а не в штуках, лимиты и ретраи
Что могут спросить следом
- Почему добавление консьюмеров может не помочь?
- Что делать с сообщениями, которые обрабатываются бесконечно?
Разбор
Образцовый ответ: «Сначала влияние: лаг растёт на всех партициях топика sms, задержка доставки около часа, это бьёт по входу через одноразовые коды, значит SEV2. Смотрю консьюмеров: живы, но обработка одного сообщения выросла с 50 мс до 3 секунд, трейсы показывают ожидание ответа SMS-провайдера. То есть узкое место внешний API. Включаю резервного провайдера, если он есть, и проверяю, что обработка ускорилась. Добавлять консьюмеров имеет смысл только до числа партиций и только если упираемся в нас, а не в провайдера, иначе мы его ещё и задавим. Одноразовые коды старше 10 минут бессмысленны, их логичнее пропустить, это решение согласую. Если бы одна партиция стояла, искал бы ядовитое сообщение и отправлял бы его в DLQ. В постмортем: алерт на лаг в секундах, таймауты и автоматическое переключение провайдера».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.