Junior — Middle
Puoi spiegare il principio di funzionamento dell'algoritmo di bilanciamento del carico Least Connection?
sobes.tech AI
Risposta dell'AI
L'algoritmo di bilanciamento del carico Least Connection distribuisce le richieste in ingresso ai server, scegliendo quello che attualmente ha il minor numero di connessioni attive.
Principio di funzionamento:
- Il bilanciatore monitora il numero di connessioni attive correnti su ogni server.
- Quando arriva una nuova richiesta, viene scelto il server con il minor numero di connessioni attive.
- La richiesta viene inviata a questo server, e il contatore delle connessioni attive aumenta.
- Dopo aver completato la richiesta, il contatore diminuisce.
Questo permette di distribuire il carico in modo uniforme, specialmente quando i tempi di elaborazione delle richieste variano, e previene il sovraccarico di server singoli.
Esempio in Go (semplificato):
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("Server selezionato: %s con %d connessioni attive\n", server.Address, server.ActiveConnections)
}