Sobes.tech
Junior — Middle

Կարող եք բացատրել Least Connection բեռի հավասարակշռության ալգորիթմի աշխատանքային սկզբունքը?

sobes.tech AI

Պատասխան AI-ից

Բեռի հավասարակշռության Least Connection ալգորիթմը բաշխում է մուտքային հարցումները սերվերների միջև՝ ընտրելով այն սերվերը, որի ներկայումս ամենափոքր ակտիվ կապերի քանակն է:

Աշխատանքի սկզբունքը՝

  1. Բեռի հավասարակշռիչը հետևում է յուրաքանչյուր սերվերի ներկայիս ակտիվ կապերի քանակին:
  2. Երբ նոր հարցում է գալիս, ընտրվում է այն սերվերը, որի ակտիվ կապերի թիվը ամենափոքրն է:
  3. Հարցումը ուղարկվում է այդ սերվերին, և ակտիվ կապերի հաշվիչը մեծանում է:
  4. Հարցման ավարտից հետո հաշվիչը նվազում է:

Այս կերպ հնարավոր է հավասարաչափ բաշխել բեռը, հատկապես երբ հարցումների մշակման ժամանակները տարբեր են, և կանխել որոշակի սերվերների ծանրաբեռնվածությունը:

Go լեզվով պարզեցված օրինակ՝

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("Ընտրված սերվեր՝ %s, ակտիվ կապեր՝ %d\n", server.Address, server.ActiveConnections)
}