Sobes.tech
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.