Sobes.tech
Middle — Middle+

Czy może Pan wyjaśnić zasadę działania Circuit Breaker i dlaczego jest on potrzebny w systemach o dużym obciążeniu?

sobes.tech AI

Odpowiedź od AI

Circuit Breaker — to wzorzec, który pomaga chronić system przed kaskadowymi awariami podczas pracy z usługami lub komponentami zewnętrznymi.

Zasada działania:

  • W stanie normalnym Circuit Breaker przepuszcza żądania do zewnętrznego serwisu.
  • Jeśli liczba błędów przekracza ustalony próg, Circuit Breaker się «zamyka» i blokuje dalsze żądania na pewien czas.
  • Po przerwie następuje próba przywrócenia połączenia (stan półotwarty).
  • Jeśli żądania zakończą się sukcesem, Circuit Breaker wraca do stanu normalnego.

Po co to jest:

  • Zapobiega nadmiernemu obciążeniu upadłego serwisu.
  • Skraca czas oczekiwania na odpowiedź, szybko zwracając błąd.
  • Zwiększa stabilność i odporność systemu.

Przykład w Go z użyciem biblioteki github.com/sony/gobreaker:

import (
    "fmt"
    "github.com/sony/gobreaker"
)

func main() {
    cb := gobreaker.NewCircuitBreaker(gobreaker.Settings{})

    result, err := cb.Execute(func() (interface{}, error) {
        // wywołanie zewnętrznego serwisu
        return "odpowiedź", nil
    })

    if err != nil {
        fmt.Println("Błąd lub Circuit Breaker otwarty:", err)
    } else {
        fmt.Println("Udana odpowiedź:", result)
    }
}