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.