Sobes.tech
Junior — Middle

Czy może Pan/Pani wyjaśnić mechanizm działania wzorca Circuit Breaker i jego rolę w zapewnieniu niezawodności systemu?

sobes.tech AI

Odpowiedź od AI

Wzorzec Circuit Breaker jest używany do zwiększenia niezawodności systemów rozproszonych, zapobiegając wielokrotnym wywołaniom do nie działającej lub wolno odpowiadającej usługi.

Jak to działa:

  1. Zamknięty (stan zamknięty): Wszystkie żądania przechodzą jak zwykle.
  2. Otwarte (stan otwarty): Jeśli liczba błędów przekracza próg, Circuit Breaker się «otwiera» — nowe żądania od razu otrzymują błąd bez próby wywołania usługi.
  3. Półotwarte (stan półotwarty): Po pewnym czasie Circuit Breaker pozwala na ograniczoną liczbę żądań, aby sprawdzić, czy usługa się przywróciła.

Jeśli żądania zakończą się sukcesem — stan wraca do Zamkniętego, w przeciwnym razie z powrotem do Otwartego.

Zapobiega to nadmiernemu obciążeniu nie działającej usługi i pozwala systemowi szybciej się odzyskać.

Przykład użycia w Go (uproszczony):

// Pseudo-kod
cb := NewCircuitBreaker()

if cb.AllowRequest() {
    err := callRemoteService()
    if err != nil {
        cb.RecordFailure()
    } else {
        cb.RecordSuccess()
    }
} else {
    // Zwracamy błąd od razu, bez wywoływania usługi
}

W ten sposób Circuit Breaker pomaga uczynić system bardziej odpornym na awarie.