Junior — Middle
Sistem sunucuları veya bileşenleri arasında yük dağılımı nasıl gerçekleştirilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Yük dengeleme (load balancing), gelen isteklerin veya görevlerin sistemdeki birkaç sunucu veya bileşen arasında eşit şekilde dağıtılmasıdır; bu, performansı artırmak ve arızalara karşı dayanıklılığı sağlamak içindir.
Temel uygulama yöntemleri:
- Round Robin — istekler sırayla her sunucuya yönlendirilir.
- Least Connections — istek, en az aktif bağlantıya sahip sunucuya yönlendirilir.
- IP Hash — müşteri IP'sinin hash'ine göre sunucu seçimi, böylece oturum tek bir sunucuda kalır.
Go dilinde, basit bir yük dengeleyici, örneğin, HTTP ters proxy kullanarak ve sunucu seçiminde Round Robin yöntemiyle uygulanabilir:
var servers = []string{"http://server1", "http://server2"}
var current int
func loadBalancer(w http.ResponseWriter, r *http.Request) {
target := servers[current]
current = (current + 1) % len(servers)
// İsteği hedefe yönlendir
http.Redirect(w, r, target+r.RequestURI, http.StatusTemporaryRedirect)
}
Gerçek sistemlerde, uzmanlaşmış yük dengeleme çözümleri (nginx, HAProxy) veya bulut tabanlı çözümler kullanılır.