Sobes.tech
Junior — Middle

Kas saaksite selgitada Least Connection koormuse tasakaalustamise algoritmi tööpõhimõtet?

sobes.tech AI

Vastus AI-lt

Least Connection load balancing algorithm distributes incoming requests to servers by selecting the server with the fewest active connections at the moment.

Working principle:

  1. The load balancer tracks the number of current active connections on each server.
  2. When a new request arrives, it selects the server with the least number of active connections.
  3. The request is sent to this server, and the active connection counter increases.
  4. After the request is processed, the counter decreases.

This allows for an even distribution of load, especially when request processing times vary, and prevents overloading individual servers.

Simple example in 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("Selected server: %s with %d active connections\n", server.Address, server.ActiveConnections)
}