Junior — Middle
Meg tudná magyarázni a Legkisebb Kapcsolat terheléselosztási algoritmus működési elvét?
sobes.tech MI
Válasz az MI-től
A legkisebb kapcsolódási (Least Connection) terheléselosztási algoritmus az érkező kéréseket olyan szerverekhez irányítja, amelyek jelenleg a legkevesebb aktív kapcsolatot tartalmazzák.
Működési elv:
- A terheléselosztó nyomon követi minden szerver aktuális aktív kapcsolatainak számát.
- Új kérés érkezésekor kiválasztja a legkevesebb aktív kapcsolattal rendelkező szervert.
- A kérés ehhez a szerverhez kerül, és az aktív kapcsolatok számlálója növekszik.
- A kérés befejezése után a számláló csökken.
Ez lehetővé teszi a terhelés egyenletes elosztását, különösen akkor, amikor a kérés feldolgozási ideje változó, és megakadályozza az egyes szerverek túlterhelését.
Egyszerű Go példával:
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("Kiválasztott szerver: %s, aktív kapcsolatok száma: %d\n", server.Address, server.ActiveConnections)
}