Back to questions
СБЕР дейвайсы
Junior — Middle
73
Можете объяснить принцип работы алгоритма балансировки нагрузки Least Connection?
Companies where asked
Answer from AI
sobes.tech AI
Алгоритм балансировки нагрузки Least Connection распределяет входящие запросы на серверы, выбирая тот сервер, у которого в данный момент наименьшее количество активных соединений.
Принцип работы:
- Балансировщик отслеживает количество текущих активных соединений у каждого сервера.
- При поступлении нового запроса выбирается сервер с минимальным числом активных соединений.
- Запрос направляется на этот сервер, и счётчик активных соединений увеличивается.
- После завершения обработки запроса счётчик уменьшается.
Это позволяет равномерно распределять нагрузку, особенно когда время обработки запросов варьируется, и предотвращает перегрузку отдельных серверов.
Пример на 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)
}