ÖZET VE TEKNİK CEVAP
Bulkhead deseni, uygulama kaynaklarını (iş parçacığı havuzları, bağlantı havuzları, CPU kotaları) izole kompartımanlara ayırarak yavaşlayan bir alt servisin tüm paylaşılan kaynakları tüketmesini ve kritik işlevleri çökertmesini engeller.
Mühendislik El Kitabı & Mekanizma
1. Temel Çalışma Mekanizması
Adını gemilerin su geçirmez bölmelerinden (bulkhead) alan bu desen, bir yerdeki sızıntının tüm gemiyi batırmasını önler. Öneri veya analitik gibi kritik olmayan bir servis 20 ms'den 10 saniyeye yavaşladığında, paylaşılan bir havuzda tüm iş parçacıkları bloke olur ve kullanıcılar ödeme yapamaz hale gelir. Bulkhead deseni her entegrasyona katı kaynak tavanı koyar.
2. Doğru Kullanım Senaryosu
Bulkhead deseni, hata izolasyonu sağlamak amacıyla kritik ve kritik olmayan iş yüklerini birbirinden bağımsız kaynak havuzlarına (ayrı iş parçacığı havuzları veya semaforlar) ayıran bir dayanıklılık tasarım desenidir.
3. Prodüksiyon Arıza Modları
Tüm dış REST ve veritabanı çağrılarını tek bir ortak varsayılan havuzda (global `ForkJoinPool.commonPool()`) çalıştırmak. Sonsuz kapasiteli iş parçacığı kuyrukları tanımlayarak bellek tükenene kadar gecikme krizini gizlemek. Üçüncü parti analitik kodlarının ana HTTP istek iş parçacığında senkron olarak çalışmasına izin vermek.
4. Teşhis ve Telemetri Sinyalleri
yavaş çalışan öneri servisi tüm Tomcat iş parçacıklarını tüketerek ödeme API'sini çökertir, tek bir yavaş SQL sorgusunun global asenkron havuzu tüketmesi, mikroservisler arası kaskat pod çöküşleri
5. Önleme ve Mimari Bariyerler
Her harici üçüncü parti entegrasyona ve veritabanı replikasına özel havuz veya semafor sınırı tahsis edin. İzole havuz doyuma ulaştığında istek göndermeyi tamamen kesmek için Bulkhead'i Devre Kesici (Circuit Breaker) ile birleştirin. Alt servis tıkandığında geri basıncın (backpressure) anında devreye girmesi için havuz kuyruk boyutlarını sınırlı (örn. 10) tutun.
6. Mimari Ödünleşimler (Trade-offs)
Bulkhead izolasyonu olmadığında sisteminizin erişilebilirliği en zayıf ve en güvenilmez bağımlılığınızın insafına kalır; önemsiz bir eklenti arızası ana gelir akışınızı felç eder.
Vaka İncelemesi (TinyCTO Örneği)
Modern yazılım mühendisliğinde iki temel Bulkhead uygulaması vardır: 1. **İş Parçacığı Havuzu Bulkhead (Asenkron İzolasyon):** Her dış servise özel bir havuz atanır (`OdemeHavuzu: 20 thread`, `AramaHavuzu: 10 thread`). Arama servisi yavaşlarsa yalnızca kendi 10 thread'i bloke olur; yeni arama istekleri anında reddedilirken Ödeme servisi tam hızda çalışmaya devam eder. 2. **Semafor Tabanlı Bulkhead (Senkron / Sanal Thread İzolasyonu):** Bir servise giden eşzamanlı istek sayısını atomik bir sayaç ile sınırlar. Ekstra bağlam değiştirme (context switch) maliyeti yaratmadığı için bloklamasız I/O ve Sanal Thread'ler için idealdir. *Ret Politikaları:* Havuz dolduğunda sistemler temiz politikalar (Hızlı Hata, Önbellek Geri Dönüşü) uygulamalıdır.
İnteraktif Konsept Alıştırmaları
2 AlıştırmaBulkhead deseninin temel mimari amacı nedir?
Bulkhead havuzları OLMAYAN bir sistemde harici bir servis zaman aşımına uğradığında ne olur?
Bulkhead Deseni ve İş Parçacığı Havuzu İzolasyonu — Sıkça Sorulan Sorular
Bir e-ticaret platformunun ürün öneri bileşeni AI modeli arızası sebebiyle çağrı başına 15 saniye sürmeye başlıyor. Öneri havuzunda Bulkhead izolasyonu (azami 10 thread) devrede olduğu için ödeme (checkout) akışına ne olur?
Ödeme akışı sıfır kesintiyle çalışmaya devam eder çünkü tahsisli iş parçacığı havuzu öneri havuzundan tamamen izoledir. Bulkhead deseni, çöken öneri servisinin patlama yarıçapını kendisine ayrılan 10 thread ile sınırlar ve kritik ödeme iş parçacıklarını korur.
Bir iş parçacığı havuzu bulkhead'i ile sonsuz kuyruk kapasitesi (`queue_capacity = infinity`) kullanmak neden tehlikelidir?
Çünkü bekleyen istekler süresiz olarak kuyrukta birikir, gigabaytlarca bellek tüketir ve sunucu OutOfMemoryError ile çökene kadar hatayı reddetmeyi geciktirir. Alt servis yavaşladığında hızlı hata vermek ve geri basınç (backpressure) tetiklemek için kuyruğun mutlaka sınırlı boyutta olması gerekir.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸Bulkhead deseni, uygulama kaynaklarını (iş parçacığı havuzları, bağlantı havuzları, CPU kotaları) izole kompartımanlara ayırarak yavaşlayan bir alt servisin tüm paylaşılan kaynakları tüketmesini ve kritik işlevleri çökertmesini engeller.
- ▸Bulkhead deseni, hata izolasyonu sağlamak amacıyla kritik ve kritik olmayan iş yüklerini birbirinden bağımsız kaynak havuzlarına (ayrı iş parçacığı havuzları veya semaforlar) ayıran bir dayanıklılık tasarım desenidir.
Yaygın Yanılgılar
- ✗Tüm dış REST ve veritabanı çağrılarını tek bir ortak varsayılan havuzda (global `ForkJoinPool.commonPool()`) çalıştırmak.
Karar Kılavuzu & Önceliklendirme
Bulkhead izolasyonu olmadığında sisteminizin erişilebilirliği en zayıf ve en güvenilmez bağımlılığınızın insafına kalır; önemsiz bir eklenti arızası ana gelir akışınızı felç eder.
Doğrulanmış Kaynaklar & Referanslar
- [OFFICIAL-DOC]Bulkhead Pattern & Thread Pool Isolation Specification— TinyCTO Architectural Standards
