Sobes.tech
Junior — Middle

Pouvez-vous expliquer le principe de fonctionnement de l'algorithme de répartition de charge Least Connection?

sobes.tech IA

Réponse de l'IA

L’algorithme d’équilibrage de charge Least Connection répartit les requêtes entrantes vers les serveurs en choisissant celui qui a actuellement le moins de connexions actives.

Principe de fonctionnement :

  1. Le répartiteur suit le nombre de connexions actives sur chaque serveur.
  2. Lorsqu’une nouvelle requête arrive, il choisit le serveur avec le moins de connexions actives.
  3. La requête est envoyée à ce serveur, et le compteur de connexions actives augmente.
  4. Après traitement de la requête, le compteur diminue.

Cela permet une répartition uniforme de la charge, surtout lorsque les temps de traitement varient, et évite la surcharge de certains serveurs.

Exemple en Go (simplifié) :

package main

import "fmt"

type Server struct {
    Address          string
    ActiveConnections int
}

func leastConnection(servers []Server) *Server {
    var selected *Server
    for i := range servers {
        if selected == nil || servers[i].ActiveConnections < selected.ActiveConnections {
            selected = &servers[i]
        }
    }
    return selected
}

func main() {
    servers := []Server{
        {Address: "server1", ActiveConnections: 5},
        {Address: "server2", ActiveConnections: 2},
        {Address: "server3", ActiveConnections: 3},
    }

    server := leastConnection(servers)
    fmt.Printf("Serveur sélectionné : %s avec %d connexions actives\n", server.Address, server.ActiveConnections)
}