Sobes.tech
Junior — Middle

Da li imate iskustva sa korišćenjem obrasca Circuit Breaker u projektima?

sobes.tech АИ

Одговор од АИ

Модел Circuit Breaker се користи за повећање отпорности система током интеракције са спољашњим сервисима или компонентама које могу бити недоступне или радити са грешкама. У пројектима у Go-у, применио сам овај модел како бих спречио понављајуће неуспешне позиве на удаљене API-је, што је омогућило брже опоравак система и избегавање преоптерећења сервиса.

Принцип рада: ако број грешака пређе праг, Circuit Breaker се «отвара» и даље позиве одмах враћају грешку без покушаја приступа сервиса. После одређеног времена, покушава се «затворити» ланац и проверити да ли се сервис опоравио.

Пример коришћења са библиотеком github.com/sony/gobreaker:

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

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

    result, err := cb.Execute(func() (interface{}, error) {
        // позив спољашњег сервиса
        return "одговор", nil
    })

    if err != nil {
        fmt.Println("Отворен или грешка Circuit Breaker-а:", err)
    } else {
        fmt.Println("Успех:", result)
    }
}