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