ÖZET VE TEKNİK CEVAP
Devre Kesiciler hata eşiği aşıldığında 'Açık' duruma geçerek bozuk alt servisi hiç çağırmadan hızlıca hata döner ve çağıran servislerin iş parçacığı havuzunu korur; DLQ'lar ise maksimum tekrar denemesinden sonra işlenemeyen zehirli mesajları ana kuyruğu tıkamadan karantinaya alır.
Mühendislik El Kitabı & Mekanizma
1. Temel Çalışma Mekanizması
Dağıtık sistemlerde yavaşlayan bir alt servis (örn. 30 saniye süren ödeme kapısı), üst servisin iş parçacıklarını esir alarak tüm sistemi zincirleme çökertir. Devre Kesici (Circuit Breaker) bu çağrıyı 3 durumlu bir makineyle yönetir: 1) Kapalı (Closed): Normal çalışma modu, kayan pencerede hata oranını sayar; 2) Açık (Open): Hata oranı eşiği aşarsa (örn. son 20 çağrıda >%50 hata) devre AÇILIR—sonraki tüm çağrılar ağa hiç çıkmadan anında hata döner (fail-fast) veya yedek önbellek yanıtı verir; 3) Yarı-Açık (Half-Open): Bekleme süresi bitince deneme amaçlı birkaç isteğe izin verilir. Başarılı olursa devre KAPANIR, çökerse tekrar AÇILIR. Asenkron kuyruklarda ise N denemeden sonra işlenemeyen mesajlar ana kuyruk ofsetlerini tıkamamak için Ölü Mektup Kuyruğuna (DLQ) ayrılır.
2. Doğru Kullanım Senaryosu
Üçüncü taraf API'lere veya dahili mikroservislere yapılan tüm senkron HTTP/gRPC çağrılarında ve tüm asenkron mesaj tüketicilerinde (Kafka, RabbitMQ, SQS) zorunludur.
3. Prodüksiyon Arıza Modları
1) Devre Kesici Yokluğu Nedeniyle Zincirleme Çöküş: Tek bir alt servisin yavaşlaması sonucu 50 üst servisin aynı anda bağlantı havuzunu tüketip ölmesi; 2) Sessiz DLQ Kara Deliği: Alarm kurulmadığı için DLQ'da biriken 5 milyon hatalı ödeme mesajının sessizce unutulması ve gelir kaybı; 3) Dalgalı Devre (Flapping): Bekleme süresinin çok kısa (500 ms) ayarlanması sonucu devrenin sürekli Açık ve Yarı-Açık arasında gidip gelmesi.
4. Teşhis ve Telemetri Sinyalleri
Devre Kesici durum geçişleri (`CLOSED -> OPEN`), fallback yanıt oranları, DLQ mesaj birikme derinliği ve çağıran servisin iş parçacığı havuzu bekleme süreleri.
5. Önleme ve Mimari Bariyerler
Resilience4j veya Envoy ile devre kesici standartları getirin; kullanıcıya kibar hata dönen yedek (fallback) metotları tanımlayın; DLQ boyutu > 0 olduğunda PagerDuty alarmı tetikleyin ve hata düzeltildikten sonra güvenle yeniden oynatan otomatik DLQ redrive araçları kurun.
6. Mimari Ödünleşimler (Trade-offs)
Hata etki alanını izole eder, iş parçacığı açlığını önler ve sistem kararlılığını korur; buna karşılık bağımlılık kesintisi anında kullanıcılara kısıtlı/yedek deneyim sunmayı kabullenmeyi gerektirir.
Vaka İncelemesi (TinyCTO Örneği)
TinyCTO Vaka 031: Üçüncü taraf vergi hesaplama API'si bulut kesintisinde 20 ms'den 45 saniyeye yavaşladı. Devre kesici olmadığı için ödeme sunucusunun tüm iş parçacıkları vergi yanıtını beklerken kilitlendi ve ana mağaza 90 saniyede tamamen çöktü. 500 ms zaman aşımlı ve tahmini vergi fallback'li Devre Kesici kurulumu, sonraki kesintilerde mağazanın %100 ayakta kalmasını sağladı.
İnteraktif Konsept Alıştırmaları
3 AlıştırmaBir Devre Kesicinin (Circuit Breaker) üç durumu nedir ve nasıl geçiş yaparlar?
Ölü Mektup Kuyruğunun (DLQ) temel amacı nedir?
Devre Kesiciler bağlamında 'Fallback' (Yedek Yanıt) nedir?
Devre Kesici (Circuit Breaker) ve Ölü Mektup Kuyruğu (DLQ) — Sıkça Sorulan Sorular
Bir yazılım hatası düzeltildikten sonra Ölü Mektup Kuyruğundaki (DLQ) mesajlar nasıl yeniden işlenir?
DLQ'daki mesajları okuyan, yapılarını doğrulayan ve ana kuyruğa kontrollü bir hızla (throttled) yeniden yayımlayan otomatik bir redrive scripti veya CLI aracı kullanarak.
Devre kesiciler sunucu örneği başına mı (lokal) yoksa küme genelinde global mi yapılandırılmalıdır?
Pod başına çalışan yerel bellek içi devre kesiciler endüstri standardıdır ve en güveniliridir. Redis tabanlı global dağıtık devre kesiciler gecikme ekler ve tek arıza noktası yaratır.
Devre kesici eşiği aşırı agresif (örn. %5 hata oranı) ayarlanırsa ne olur?
Önemsiz anlık ağ hıçkırıkları devreyi gereksiz yere AÇIK duruma getirecek, sağlıklı trafiği kesecek ve sahte kesintilere yol açacaktır.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸Michael Nygard, Devre Kesici (Circuit Breaker) yazılım kalıbını 2007 yılında yayınlanan çığır açıcı 'Release It!' kitabında tanıtmıştır.
- ▸2 milisaniyede anında hata dönmek (fail-fast), 30 saniye boyunca zaman aşımı beklemekten sistem sağlığı açısından sonsuz kat daha iyidir.
Yaygın Yanılgılar
- ✗Yalnızca retry yapmanın sistemi dayanıklı kılacağını sanmak; aşırı yüklenmiş bir servise devre kesici olmadan tekrar istek atmak yıkıcı retry fırtınaları yaratarak servisin toparlanmasını imkansız kılar.
Karar Kılavuzu & Önceliklendirme
Dışa giden her senkron uzak çağrıyı katı zaman aşımlı bir Devre Kesici ile sarmalayın; her asenkron mesaj hattına alarmlı bir Ölü Mektup Kuyruğu (DLQ) bağlayın.
Doğrulanmış Kaynaklar & Referanslar
- [BOOK]Release It!: Design and Deploy Production-Ready Software— Pragmatic Bookshelf (2007)
- [OFFICIAL-DOC]CircuitBreaker— Martin Fowler
