Sobes.tech
Junior — Middle

Sistem serverləri və ya komponentləri arasında yük paylaması necə həyata keçirilir?

sobes.tech Süni İntellekt

AI-dan cavab

Yük balansı (load balancing) — bu, daxil olan sorğuların və ya tapşırıqların sistemdəki bir neçə server və ya komponent arasında bərabər şəkildə paylanması prosesidir, bu da performansı artırmağa və nasazlıqlara davamlılığı təmin etməyə kömək edir.

Əsas tətbiq üsulları:

  • Round Robin — sorğular ardıcıl olaraq hər serverə yönəldilir.
  • Least Connections — sorğu ən az aktiv əlaqəyə malik serverə yönəldilir.
  • IP Hash — müştərinin IP ünvanının hash-ə əsaslanaraq server seçimi, bu da sessiyanın yalnız bir serverlə təmin olunmasını təmin edir.

Go dilində, sadə yük balanslayıcı, məsələn, HTTP reverse proxy istifadə edərək, Round Robin ilə server seçimi ilə həyata keçirilə bilər:

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)
    // Sorğunu hədəfə yönəldirik
    http.Redirect(w, r, target+r.RequestURI, http.StatusTemporaryRedirect)
}

Həqiqi sistemlərdə, ixtisaslaşmış yük balanslayıcılar (nginx, HAProxy) və ya bulud həlləri istifadə olunur.