Sobes.tech
Junior — Middle

Можете ли објаснити механизам функционисања патерна Circuit Breaker и његову улогу у обезбеђивању поузданости система?

sobes.tech АИ

Одговор од АИ

Модел Circuit Breaker се користи за повећање поузданости распоређених система, спречавајући поновне позиве ка нерадном или споро одговарајућем сервису.

Како ради:

  1. Затворено (затворено стање): Сви захтеви пролазе као и обично.
  2. Отворено (отворено стање): Ако број грешака прелази праг, Circuit Breaker се «отвара» — нови захтеви одмах добијају грешку без покушаја да се позове сервис.
  3. Полуотворено (полуотворено стање): После одређеног времена, Circuit Breaker дозвољава ограничен број захтева да провери да ли је сервис обновљен.

Ако су захтеви успешни — стање се враћа у Затворено, у супротном поново у Отворено.

Ово спречава претерано оптерећење нерадног сервиса и омогућава систему да се брже опорави.

Пример употребе у Go (поједностављено):

// Псеудо-код
cb := NewCircuitBreaker()

if cb.AllowRequest() {
    err := callRemoteService()
    if err != nil {
        cb.RecordFailure()
    } else {
        cb.RecordSuccess()
    }
} else {
    // Одмах враћамо грешку, без позива сервиса
}

Овим начином, Circuit Breaker помаже да систем буде отпорнији на кварове.