Sobes.tech
Junior — Middle

Least Connection yuki yuklamoqchi bo'lgan algoritmining ishlash prinsipi haqida tushuntirib beringmi?

sobes.tech AI

AIdan javob

Yengil bog‘lanishlar bilan taqsimlash algoritmi kiruvchi so‘rovlarni hozirda eng kam faol bog‘lanishlarga ega bo‘lgan serverga yo‘naltiradi.

Ishlash prinsipi:

  1. Yuki balanslovchi har bir serverdagi hozirgi faol bog‘lanishlar sonini kuzatadi.
  2. Yangi so‘rov kelganda, eng kam faol bog‘lanishlarga ega bo‘lgan server tanlanadi.
  3. So‘rov shu serverga yuboriladi va faol bog‘lanishlar hisoblagichi oshiriladi.
  4. So‘rov bajarilgach, hisoblagich kamaytiriladi.

Bu yuki teng ravishda taqsimlashga imkon beradi, ayniqsa so‘rovlarni ishlash vaqti o‘zgaruvchan bo‘lsa, va alohida serverlarning ortiqcha yuklanishini oldini oladi.

Go tilida misol (soddalashtirilgan):

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("Tanlangan server: %s bilan %d faol bog‘lanish\n", server.Address, server.ActiveConnections)
}