Выбор ответа Senior gRPC, SOAP и другие протоколы обновлено

Дедлайны в цепочке gRPC

Вопрос

Запрос пользователя проходит A → B → C по gRPC. У A общий бюджет 1 секунда. Как правильно задавать таймауты?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Передавать дедлайн по цепочке, каждому остаток бюджета. gRPC поддерживает распространение дедлайна: B и C знают, сколько осталось, и не тратят ресурсы на ответ, который уже никому не нужен.

Варианты ответа

  1. Ставить каждому сервису цепочки свой таймаут 1 секунда
  2. Не ставить таймауты во внутренних вызовах между сервисами
  3. Ставить вниз по цепочке всё большие таймауты, с запасом
  4. Передавать дедлайн по цепочке, каждому остаток бюджетаправильный ответ

Разбор

gRPC поддерживает распространение дедлайна: B и C знают, сколько осталось, и не тратят ресурсы на ответ, который уже никому не нужен. Одинаковые таймауты по 1 секунде дадут суммарное ожидание больше бюджета. Без таймаутов зависший сервис держит всю цепочку. Растущие вниз таймауты противоречат смыслу бюджета.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.