Ответ
Балансировка Least Connection — это метод распределения нагрузки, при котором новые запросы направляются на сервер с наименьшим количеством активных соединений.
Преимущества:
- Эффективен при неравномерной нагрузке.
- Учитывает текущую загруженность серверов.
Пример на Go с использованием net/http/httputil:
director := func(req *http.Request) {
target := getLeastLoadedServer() // Выбираем сервер с min соединениями
req.URL.Scheme = target.Scheme
req.URL.Host = target.Host
}
proxy := &httputil.ReverseProxy{Director: director}
http.ListenAndServe(":8080", proxy)
Нюансы:
- Требует отслеживания состояния соединений.
- Может быть менее эффективен при очень коротких запросах.