Sobes.tech
Junior — Middle

Cum se realizează distribuirea sarcinii între servere sau componentele sistemului?

sobes.tech AI

Răspuns de la AI

Echilibrarea încărcăturii (load balancing) este procesul de distribuire uniformă a solicitărilor sau sarcinilor de intrare între mai mulți serveri sau componente ale sistemului pentru a crește performanța și rezistența la defecte.

Principalele metode de implementare:

  • Round Robin — solicitările sunt trimise secvențial în cerc fiecărui server.
  • Least Connections — solicitarea este direcționată către serverul cu cel mai mic număr de conexiuni active.
  • IP Hash — alegerea serverului bazată pe un hash al IP-ului clientului, asigurând o sesiune cu un singur server.

În Go, se poate implementa un echilibrator de sarcină simplu, de exemplu, folosind un proxy invers HTTP cu selecție de server după Round Robin:

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)
    // Redirecționează solicitarea către target
    http.Redirect(w, r, target+r.RequestURI, http.StatusTemporaryRedirect)
}

În sistemele reale, se folosesc echilibratoare de sarcină specializate (nginx, HAProxy) sau soluții cloud.