Sobes.tech
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:

  1. A terheléselosztó nyomon követi minden szerver aktuális aktív kapcsolatainak számát.
  2. Új kérés érkezésekor kiválasztja a legkevesebb aktív kapcsolattal rendelkező szervert.
  3. A kérés ehhez a szerverhez kerül, és az aktív kapcsolatok számlálója növekszik.
  4. 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)
}