Назад к вопросам
Junior — Middle
75
Каким образом реализуется распределение нагрузки между серверами или компонентами системы?
Ответ от нейросети
sobes.tech AI
Распределение нагрузки (load balancing) — это процесс равномерного распределения входящих запросов или задач между несколькими серверами или компонентами системы для повышения производительности и отказоустойчивости.
Основные способы реализации:
- Round Robin — запросы последовательно направляются по кругу на каждый сервер.
- Least Connections — запрос направляется на сервер с наименьшим количеством активных соединений.
- IP Hash — выбор сервера на основе хеша IP клиента, что обеспечивает сессию с одним сервером.
В Go можно реализовать простой балансировщик, например, используя HTTP reverse proxy с выбором сервера по Round Robin:
var servers = []string{"http://server1", "http://server2"}
var current int
func loadBalancer(w http.ResponseWriter, r *http.Request) {
target := servers[current]
current = (current + 1) % len(servers)
// Перенаправляем запрос на target
http.Redirect(w, r, target+r.RequestURI, http.StatusTemporaryRedirect)
}
В реальных системах используют специализированные балансировщики (nginx, HAProxy) или облачные решения.