Sobes.tech
Junior — Middle

Heeft u ervaring met het gebruik van het Circuit Breaker-patroon in projecten?

sobes.tech AI

Antwoord van AI

Het Circuit Breaker-patroon wordt gebruikt om de veerkracht van het systeem te vergroten bij interactie met externe services of componenten die mogelijk niet beschikbaar zijn of met fouten werken. In Go-projecten heb ik dit patroon toegepast om herhaalde mislukte oproepen naar externe API's te voorkomen, waardoor het systeem sneller kon herstellen en de service niet overbelast werd.

Werking: als het aantal fouten een drempel overschrijdt, «maakt» de Circuit Breaker «open» en geven verdere oproepen onmiddellijk een fout terug zonder te proberen de service te benaderen. Na enige tijd wordt geprobeerd de verbinding te «herstellen» en te controleren of de service weer is hersteld.

Voorbeeld van gebruik met de bibliotheek github.com/sony/gobreaker:

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

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

    result, err := cb.Execute(func() (interface{}, error) {
        // externe service-aanroep
        return "antwoord", nil
    })

    if err != nil {
        fmt.Println("Circuit breaker open of fout:", err)
    } else {
        fmt.Println("Succes:", result)
    }
}