Skip to content
9 / 15

Как строить устойчивость к отказам: таймауты, повторы, предохранитель, изоляция?

Базовый набор приёмов: таймауты на каждый внешний вызов (без них поток ждёт бесконечно и исчерпывает ресурсы), повторы с экспоненциальной задержкой и джиттером только для временных ошибок и только для идемпотентных операций, предохранитель (circuit breaker), который после серии отказов перестаёт ходить в неисправную зависимость и даёт ей восстановиться, ограничение параллельности и очереди вместо неограниченного роста нагрузки, а также запасной путь — кешированный или урезанный ответ вместо ошибки. Главная опасность — усиление аварии повторами: каждый ретрай умножает нагрузку на уже упавший сервис, поэтому их ограничивают бюджетом.

Как строить устойчивость к отказам: таймауты, повторы, предохранитель, изоляция? | JScriptiser