advanced
Timeouts
Ставьте explicit deadlines per hop, чтобы callers переставали ждать до resource pile-up и exhaustion upstream latency budgets.
Таймауты останавливают callers от бесконечного ожидания при зависании dependency, освобождая threads, connections и терпение пользователя. В microservices распространяйте deadlines contextually — каждый hop получает уменьшающийся budget, а не новый полный timeout.
Компромисс: слишком короткие timeouts — ложные сбои; слишком длинные — очереди работы и усиление outage.
На интервью: посчитайте latency budget для API p99 300ms с тремя downstream calls; объясните deadline propagation в gRPC или HTTP headers.
Типовые ошибки: default client timeouts везде; timeout только на одном hop; нет мониторинга timeout rate vs error rate.
Чеклист:
- Per-hop timeouts из end-to-end SLO.
- Распространяйте deadline context между вызовами.
- Логируйте и метрикайте timeout cancellations.
- Согласуйте timeouts load balancer и client.