Junior — Middle
Comment la répartition de la charge entre les serveurs ou composants du système est-elle réalisée?
sobes.tech IA
Réponse de l'IA
L’équilibrage de charge (load balancing) est le processus de distribution uniforme des requêtes ou tâches entrantes entre plusieurs serveurs ou composants du système pour améliorer la performance et la tolérance aux pannes.
Principales méthodes de mise en œuvre :
- Round Robin — les requêtes sont envoyées successivement en cercle à chaque serveur.
- Least Connections — la requête est dirigée vers le serveur avec le moins de connexions actives.
- IP Hash — sélection du serveur basée sur un hash de l’IP du client, assurant une session avec un seul serveur.
En Go, il est possible d’implémenter un répartiteur simple, par exemple en utilisant un proxy inverse HTTP avec sélection du serveur par 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)
// Redirige la requête vers target
http.Redirect(w, r, target+r.RequestURI, http.StatusTemporaryRedirect)
}
Dans les systèmes réels, on utilise des équilibrages de charge spécialisés (nginx, HAProxy) ou des solutions cloud.