Junior — Middle
Môžete vysvetliť princíp fungovania algoritmu vyvažovania záťaže Least Connection?
sobes.tech AI
Odpoveď od AI
Algoritmus vyvažovania záťaže Least Connection rozdeľuje prichádzajúce požiadavky na servery tak, že vyberá ten server, ktorý má momentálne najmenší počet aktívnych spojení.
Princíp fungovania:
- Vyvažovač sleduje počet aktuálnych aktívnych spojení na každom serveri.
- Pri príchode novej požiadavky sa vyberie server s najnižším počtom aktívnych spojení.
- Požiadavka je smerovaná na tento server a počet aktívnych spojení sa zvýši.
- Po dokončení požiadavky sa počet aktívnych spojení zníži.
Toto umožňuje rovnomerné rozloženie záťaže, najmä keď sa doby spracovania požiadaviek líšia, a zabraňuje preťaženiu jednotlivých serverov.
Príklad v Go (zjednodušený):
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("Vybraný server: %s s %d aktívnymi spojeniami\n", server.Address, server.ActiveConnections)
}