Deadline propagation

Бывали ли в вашей практике каскадные сбои? У меня — да 🥲 Такое может происходить, когда, например, таймаут запроса уже истёк, а внутренние сервисы продолжают его обрабатывать. Система начинает деградировать: ответы замедляются, клиенты усиливают нагрузку за счёт ретраев, а перезапуск инстансов только усугубляет ситуацию — поток запросов устремляется в ещё живые экземпляры. В итоге — коллапс, который часто лечится полной остановкой трафика и перезапуском всей системы 🔪

Одно из простых и очень эффективных решений — deadline propagation. Задали таймаут один раз — и он идёт по всей цепочке вызовов. Всё, что не укладывается во время — просто не выполняется. Меньше лишней нагрузки, больше стабильности и спокойствия.

Если вы ещё не используете этот паттерн — рекомендую посмотреть, как он реализован в userver от Яндекса: https://userver.tech/d6/d64/md_en_2userver_2deadline__propagation.html

Deadline propagation | Сетка — социальная сеть от hh.ru