Ответ
Round Robin — простейший алгоритм, распределяющий запросы по серверам циклически. Подходит для однородных серверов.
servers := []string{"srv1", "srv2", "srv3"}
index := 0
func nextServer() string {
server := servers[index]
index = (index + 1) % len(servers)
return server
}
Least Connections — направляет запрос на сервер с наименьшим количеством активных соединений. Эффективен при неравномерной нагрузке.
IP Hash — клиентский IP хешируется для постоянного назначения сервера, обеспечивая sticky sessions.
Weighted Round Robin/Least Connections — учитывает мощность серверов через веса (например, srv1 x2 мощнее → получает в 2 раза больше запросов).
Пример Weighted Round Robin:
servers := map[string]int{"srv1": 3, "srv2": 1} // веса
totalWeight := 4
// Логика выбора с учётом весов...