Sobes.tech
Junior — Middle

Czy możesz wyjaśnić zasadę działania algorytmu równoważenia obciążenia Least Connection?

sobes.tech AI

Odpowiedź od AI

Algorytm równoważenia obciążenia Least Connection rozdziela przychodzące żądania do serwerów, wybierając ten serwer, który w danym momencie ma najmniejszą liczbę aktywnych połączeń.

Zasada działania:

  1. Równoważnik śledzi liczbę aktualnych aktywnych połączeń na każdym serwerze.
  2. Gdy pojawia się nowe żądanie, wybierany jest serwer z najmniejszą liczbą aktywnych połączeń.
  3. Żądanie jest kierowane do tego serwera, a licznik aktywnych połączeń jest zwiększany.
  4. Po zakończeniu obsługi żądania licznik jest zmniejszany.

Pozwala to na równomierne rozłożenie obciążenia, szczególnie gdy czasy obsługi żądań się różnią, i zapobiega przeciążeniu poszczególnych serwerów.

Przykład w Go (uproszczony):

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("Wybrany serwer: %s z %d aktywnymi połączeniami\n", server.Address, server.ActiveConnections)
}