Автоматический выключатель (Circuit breaker)
Паттерн отказоустойчивости, «размыкающий цепь» к начавшей сбоить зависимости: вызовы прекращаются, и система отказывает быстро, а не зависает на таймаутах. Защищает от каскадных сбоев, когда сломанная зависимость тянет за собой всех вызывающих. Назван по электрическому предохранителю.
Механика: у выключателя три состояния. Closed (норма — вызовы проходят, сбои считаются); если доля сбоев превышает порог, он переходит в Open (все вызовы отклоняются сразу, «fail fast», даже без попытки — зависимость получает передышку, а вызывающий не висит на таймаутах). Через некоторое время наступает Half-open (пропускается несколько пробных вызовов): успех — возврат в Closed, сбой — снова Open. Проблема, которую это решает: без выключателя все вызывающие продолжают долбить умирающий сервис и блокируются на таймаутах → потоки и ресурсы заканчиваются → сбой растёт вверх по цепочке. Реализуется в коде (Resilience4j, Polly) или сервисной сеткой. Тесно связан с повторами, таймаутами и bulkhead — один из краеугольных камней устойчивости микросервисов.