Я не знаю, реализованы ли эти модули, но что я могу сказать, баланс нагрузки переоценен. Что я могу утверждать, так это то, что случайное размещение рабочих мест является лучшим выбором, если вы не знаете гораздо больше информации о том, как будет загружаться в будущем, а в большинстве случаев вы действительно не знаете. Что вы написали:
Когда клиент подключается, все узлы проверяются на предмет наименьшей нагрузки, а затем IP-адрес наименее загруженного сервера пересылается обратно клиенту.
Откуда вы знаете, что все эти наименее загруженные узлы не будут загружены с максимальной загрузкой только в следующие мс? Откуда вы знаете, что все эти высоконагруженные узлы, которые вы не включите в список, не сбросят нагрузку только в следующие мс? Вы действительно не можете знать это, если у вас нет очень редкого случая.
Просто измерьте (или вычислите) производительность вашего узла и установите вероятность выбора узла в зависимости от этого. Выберите узел случайно, независимо от текущей нагрузки. Используйте это в качестве начального подхода. Когда вы установите его, вы можете попытаться создать более сложный алгоритм. Могу поспорить, что это будет очень тяжелая работа, чтобы победить этот первоначальный подход. Поверь мне, очень тяжело.
Редактировать : Чтобы быть более понятным в одной тонкой детали, я настоятельно утверждаю, что вы не можете предсказать будущую нагрузку из текущей и исторической нагрузки, но вы должны использовать знания о вероятности длительности задач и текущей декомпозиции задач продолжительность жизни. Эту работу очень трудно достичь.