Ретраи на каждом уровне
Вопрос
Клиент вызывает сервис A, A вызывает B, B вызывает C. Клиент, A и B при ошибке делают до 3 попыток каждый (всего 3 вызова, включая первый). C всегда отвечает ошибкой. Сколько вызовов получит C на одно действие пользователя?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- 3
- 9
- 81
- 27правильный ответ
Разбор
Клиент делает 3 вызова A, каждый вызов A делает 3 вызова B, каждый вызов B делает 3 вызова C: 3 × 3 × 3 = 27. Ответ 3 учитывает только ретраи B, 9 забывает про клиента, 81 добавляет лишний уровень ретраев, которого у C нет. Это retry storm: ретраи многократно умножают нагрузку на уже больной сервис. Лечится ретраями только на одном уровне, бюджетом ретраев и circuit breaker.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.