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:
- Yuki balanslovchi har bir serverdagi hozirgi faol bog‘lanishlar sonini kuzatadi.
- Yangi so‘rov kelganda, eng kam faol bog‘lanishlarga ega bo‘lgan server tanlanadi.
- So‘rov shu serverga yuboriladi va faol bog‘lanishlar hisoblagichi oshiriladi.
- 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)
}