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)
}
}