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

  1. Vyvažovač sleduje počet aktuálnych aktívnych spojení na každom serveri.
  2. Pri príchode novej požiadavky sa vyberie server s najnižším počtom aktívnych spojení.
  3. Požiadavka je smerovaná na tento server a počet aktívnych spojení sa zvýši.
  4. 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)
}