Sobes.tech
Назад к вопросам
Senior
4

Что такое Circuit Breaker?

Компании, где спрашивали
GPTunnel

Ответ от нейросети

sobes.tech AI

Circuit Breaker — это паттерн проектирования, используемый для повышения устойчивости распределённых систем. Он предотвращает постоянные попытки обращения к неработающему сервису, что помогает избежать каскадных сбоев и излишней нагрузки.

Принцип работы:

  • При превышении определённого количества ошибок Circuit Breaker «размыкается» и блокирует дальнейшие вызовы к проблемному сервису.
  • После некоторого времени происходит попытка «замкнуть» цепь и проверить, восстановился ли сервис.
  • Если сервис отвечает успешно, Circuit Breaker возвращается в нормальное состояние.

В Node.js это часто реализуется с помощью библиотек, например opossum.

Пример использования с библиотекой opossum:

const CircuitBreaker = require('opossum');

function asyncServiceCall() {
  return new Promise((resolve, reject) => {
    // эмуляция вызова внешнего сервиса
    if (Math.random() > 0.7) resolve('Success');
    else reject('Failure');
  });
}

const breaker = new CircuitBreaker(asyncServiceCall, {
  timeout: 3000, // время ожидания ответа
  errorThresholdPercentage: 50, // порог ошибок для срабатывания
  resetTimeout: 5000 // время до попытки восстановления
});

breaker.fire()
  .then(console.log)
  .catch(console.error);