Sobes.tech
Junior — Middle

Hogyan valósul meg a terheléselosztás a szerverek vagy rendszerkomponensek között?

sobes.tech MI

Válasz az MI-től

A terheléselosztás (load balancing) az a folyamat, amikor a bejövő kéréseket vagy feladatokat egyenletesen osztják szét több szerver vagy rendszerkomponens között a teljesítmény növelése és a hibákkal szembeni ellenállás érdekében.

Fő megvalósítási módok:

  • Round Robin — a kérések egymás után, körkörösen kerülnek minden szerverhez.
  • Least Connections — a kérés a legkevesebb aktív kapcsolattal rendelkező szerverhez kerül.
  • IP Hash — a szerver kiválasztása az ügyfél IP-címének hash-én alapul, így biztosítva, hogy egy munkamenet egyetlen szerverhez tartozzon.

Go nyelven egyszerű load balancert lehet megvalósítani, például HTTP reverse proxy használatával, Round Robin kiválasztással:

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)
    // Kérés átirányítása a célra
    http.Redirect(w, r, target+r.RequestURI, http.StatusTemporaryRedirect)
}

Valós rendszerekben specializált load balancerek (nginx, HAProxy) vagy felhőalapú megoldások használatosak.