Sobes.tech
Middle — Middle+

Wyjaśnij zasadę działania i cel komponentu Circuit Breaker w systemach niezawodności.

sobes.tech AI

Odpowiedź od AI

Komponent Circuit Breaker jest używany do zwiększenia niezawodności systemów rozproszonych, zapobiegając powtarzającym się próbom wywołania nie działającej usługi i zmniejszając obciążenie systemu.

Zasada działania:

  1. Stan zamknięty: Wszystkie żądania przechodzą jak zwykle.
  2. Stan otwarty: Jeśli liczba błędów przekracza próg, Circuit Breaker się «otwiera» i blokuje dalsze żądania, natychmiast zwracając błąd lub alternatywną odpowiedź.
  3. Stan półotwarty: Po pewnym czasie od otwarcia, pozwala na ograniczoną liczbę żądań, aby sprawdzić, czy usługa się przywróciła.

Jeśli żądania zakończą się sukcesem, wraca do stanu zamkniętego, w przeciwnym razie ponownie się otwiera.

Zapobiega to nadmiernemu obciążeniu awaryjnej usługi i daje czas na jej odzyskanie, poprawiając ogólną stabilność systemu.

Przykład w Go (uproszczony):

// Pseudokod
cb := NewCircuitBreaker(3, time.Minute) // 3 błędy - otwiera na 1 minutę

if cb.AllowRequest() {
    err := callRemoteService()
    if err != nil {
        cb.RecordFailure()
    } else {
        cb.RecordSuccess()
    }
} else {
    // Od razu zwróć błąd, usługa niedostępna
}