Выбор ответа Senior gRPC, SOAP и другие протоколы обновлено
Дедлайны в цепочке gRPC
Вопрос
Запрос пользователя проходит A → B → C по gRPC. У A общий бюджет 1 секунда. Как правильно задавать таймауты?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Передавать дедлайн по цепочке, каждому остаток бюджета. gRPC поддерживает распространение дедлайна: B и C знают, сколько осталось, и не тратят ресурсы на ответ, который уже никому не нужен.
Варианты ответа
- Ставить каждому сервису цепочки свой таймаут 1 секунда
- Не ставить таймауты во внутренних вызовах между сервисами
- Ставить вниз по цепочке всё большие таймауты, с запасом
- Передавать дедлайн по цепочке, каждому остаток бюджетаправильный ответ
Разбор
gRPC поддерживает распространение дедлайна: B и C знают, сколько осталось, и не тратят ресурсы на ответ, который уже никому не нужен. Одинаковые таймауты по 1 секунде дадут суммарное ожидание больше бюджета. Без таймаутов зависший сервис держит всю цепочку. Растущие вниз таймауты противоречат смыслу бюджета.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.