Sobes.tech
Junior — Middle

Projelerde Circuit Breaker desen pattern kullanımı deneyiminiz var mı?

sobes.tech yapay zeka

AI'dan gelen yanıt

Circuit Breaker deseni, sistemin dış hizmetler veya bileşenlerle etkileşimde bulunurken dayanıklılığını artırmak için kullanılır; bu hizmetler erişilemez veya hatalarla çalışıyor olabilir. Go projelerinde, uzak API'lere tekrarlanan başarısız çağrıları önlemek için bu deseni kullandım, bu da sistemin daha hızlı toparlanmasını ve hizmeti aşırı yüklememesini sağladı.

Çalışma prensibi: hata sayısı eşik değerini aşarsa, Circuit Breaker «kapanır» ve sonraki çağrılar doğrudan hata döner, hizmete erişmeye çalışmadan. Bir süre sonra, «kapatmayı» denemek ve hizmetin yeniden çalışıp çalışmadığını kontrol etmek için bir girişim yapılır.

github.com/sony/gobreaker kütüphanesi ile kullanım örneği:

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

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

    result, err := cb.Execute(func() (interface{}, error) {
        // dış hizmet çağrısı
        return "yanıt", nil
    })

    if err != nil {
        fmt.Println("Circuit breaker açık veya hata:", err)
    } else {
        fmt.Println("Başarı:", result)
    }
}