Балансировка нагрузки с учетом ресурсов серверов для веб-узлов - PullRequest
0 голосов
/ 21 июня 2020

Протокол WebSocket, очевидно, имеет преимущество в получении довольно низкой задержки при использовании длительных соединений и фрагментированной передачи по сравнению с протоколом Http. Обычно клиент открывает пул соединений Websocket и использует один и тот же сервер на протяжении всего срока действия соединения (разные серверы для разных соединений в пуле, но фиксируются на протяжении всего срока действия соединения). Одним из недостатков этого подхода является то, что он не может эффективно использовать сервер, поскольку он подключается к тому же серверу, хотя в данный момент может быть менее загруженный сервер.

В некоторых крайних случаях Http может быть хорошим выбором, но подумайте есть ли какие-либо рекомендации, где можно использовать оба протокола. Он может запускаться с пулами соединений типа Websocket и один за другим убивать и асинхронно создавать новое соединение с менее загруженным сервером.

Период и определение занятости может быть определено на основе приложения. Например, если запросы приложения занимают от нескольких миллисекунд (1–100) до нескольких секунд (1–10 с), то я могу обновлять sh соединение каждую минуту. И он специально создает соединение с менее загруженным сервером в этот момент (путем использования процессора, доступной памяти и размера доступных соединений на сервере). Очевидно, что это реактивный подход, потому что к тому времени, когда он воссоздает соединение, состояние сервера может измениться и, возможно, не будет давать хороших преимуществ, но в большинстве случаев это будет лучшая модель.

есть лучшие альтернативы для решения этой проблемы, и любое существующее решение соответствует этой проблеме.

...