Load balancer nedir? Yük dağıtım algoritmaları nelerdir?
Cevap
Load balancer, gelen trafiği birden çok sunucuya dağıtarak yatay ölçeklemeyi ve yüksek erişilebilirliği sağlar. Sağlıksız sunucuları health check ile tespit edip trafiği onlardan çeker.
Katmanlar
- L4 (transport): IP ve port seviyesinde, içeriğe bakmadan dağıtır. Çok hızlıdır (AWS NLB).
- L7 (application): HTTP seviyesinde; URL, header, cookie'ye göre yönlendirebilir, TLS sonlandırma yapabilir (Nginx, HAProxy, AWS ALB).
Algoritmalar
| Algoritma | Nasıl çalışır | Uygun durum |
|---|---|---|
| Round robin | Sunuculara sırayla dağıtır | Eş güçte sunucular, benzer istekler |
| Weighted round robin | Güçlü sunucuya daha çok istek | Farklı kapasitede sunucular, canary |
| Least connections | En az aktif bağlantısı olana | Süresi değişken istekler, WebSocket |
| Least response time | En hızlı yanıt verene | Gecikmeye duyarlı servisler |
| IP hash | İstemci IP'sinin hash'ine göre | Basit oturum yapışkanlığı |
| Consistent hashing | Anahtar halka üzerinde sunucuya eşlenir | Cache sunucuları; sunucu eklenince az anahtar yer değiştirir |
| Random / power of two choices | Rastgele iki sunucu seçip daha az yüklüsü | Büyük, dağıtık sistemler |
Sticky session
Aynı kullanıcıyı hep aynı sunucuya göndermektir (cookie veya IP hash). Sunucu belleğinde oturum tutuluyorsa gerekir; ama dengesiz yük oluşturur ve sunucu düşünce oturumlar kaybolur. Daha iyi çözüm, sunucuları stateless yapıp oturumu Redis'te veya JWT'de tutmaktır.
Load balancer'ın kendisi tek hata noktası mı?
Evet olabilir; bu yüzden aktif-pasif çift kurulum (keepalived ile sanal IP), DNS seviyesinde birden çok LB veya bulutun yönetilen, kendinden yedekli load balancer'ları kullanılır.
İlgili Sistem Tasarımı soruları
- Mesaj kuyruğu (RabbitMQ, Kafka) ne zaman kullanılır?
- Monolith ile mikroservis mimarisi arasındaki fark nedir? Mikroservislere ne zaman geçilmeli?
- CAP teoremi nedir? Gerçek sistemlerde nasıl yorumlanır?
- Dikey ve yatay ölçekleme arasındaki fark nedir?
- Hangi cache stratejilerini biliyorsunuz?
- REST ile GraphQL arasındaki farklar nelerdir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.