Skip to content

SFS-012 Circuit Breaker

Защита от перегрузки (circuit breaker)

Технику защиты от перегрузки необходимо использовать, чтобы избежать каскадной перегрузки сервисов в цепочке вызовов.

На стороне провайдера сервиса производится подсчет количества неуспешных попыток ответа на запрос от потребителя. Когда число неуспешных попыток превышает заданное пороговое значение на заданном временном интервале, предохранитель включается и возвращает потребителю ошибку, что сервис перегружен, и операции в сервисе не вызываются. Через некоторое время производится пробное отключение предохранителя и продолжается мониторинг попыток ответа на запрос от потребителя. Когда количество неуспешных попыток становится ниже порогового значения, предохранитель отключается, и начинают вызываться операции в сервисе.

Ссылка на паттерн: * https://microservices.io/patterns/reliability/circuit-breaker.html * https://martinfowler.com/bliki/CircuitBreaker.html

Следует предусмотреть следующие конфигурируемые параметры: * размер скользящего окна (количество вызовов, для которых производится подсчет процента ошибочных вызовов) * порог срабатывания (процентное отношение вызовов, приводящих к ошибке, к общему количеству вызовов в скользящем окне, приводящее к активации защиты от перегрузки) * период времени, после которого предохранитель переходит в состояние half-open

Для параметров следует предусмотреть значения по умолчанию.

Защиту от перегрузки рекомендуется реализовывать в гейтвеях продуктов, поскольку они являются входными точками в тот или иной продукт для операций чтения. Для операций записи защиту от перегрузки можно использовать после тщательного анализа возможных побочных эффектов (в т.ч. на стороне потребителя сервиса).