Sobes.tech
Junior — Middle

Můžete vysvětlit princip fungování algoritmu vyvažování zátěže Least Connection?

sobes.tech AI

Odpověď od AI

Algoritmus vyvažování zátěže Least Connection rozděluje příchozí požadavky na servery tím, že vybírá ten server, který má v danou chvíli nejmenší počet aktivních spojení.

Princip fungování:

  1. Vyvažovač sleduje počet aktuálních aktivních spojení na každém serveru.
  2. Při příchodu nového požadavku je vybrán server s nejmenším počtem aktivních spojení.
  3. Požadavek je směrován na tento server a počet aktivních spojení se zvýší.
  4. Po dokončení požadavku se počet aktivních spojení sníží.

Toto umožňuje rovnoměrné rozložení zátěže, zejména když se doba zpracování požadavků liší, a zabraňuje přetížení jednotlivých serverů.

Pří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 aktivními spojeními\n", server.Address, server.ActiveConnections)
}