Middle — Middle+
Circuit Breaker'ın çalışma prensibini ve yüksek yük altındaki sistemlerde neden gerekli olduğunu açıklayabilir misiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Circuit Breaker — dış hizmetler veya bileşenlerle çalışırken sistemin kaskad arızalarından korunmasına yardımcı olan bir desen.
Çalışma prensibi:
- Normal durumda, Circuit Breaker dış hizmete gelen istekleri geçirir.
- Hata sayısı belirli bir eşiği aşarsa, Circuit Breaker «kapanır» ve belirli bir süre için sonraki istekleri engeller.
- Bir duraklamadan sonra bağlantıyı yeniden kurmaya çalışır (yarı açık durumda).
- İstekler başarılı olursa, Circuit Breaker normal durumuna döner.
Neden kullanılır:
- Çöken hizmet üzerindeki aşırı yükü önler.
- Yanıt süresini azaltır, hatayı hızlıca geri döner.
- Sistemin dayanıklılığını ve hata toleransını artırır.
Go dilinde github.com/sony/gobreaker kütüphanesi kullanılarak örnek:
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("Hata veya Circuit Breaker açık:", err)
} else {
fmt.Println("Başarılı yanıt:", result)
}
}