У меня вопрос, как балансировать нагрузку на веб-сокеты.
У меня есть сервер, поддерживающий веб-сокеты. Браузеры подключаются к моему сайту, и каждый открывает веб-сокет для www.mydomain.com
. Таким образом, мое приложение в социальной сети может отправлять сообщения клиентам.
Традиционно, используя только HTTP-запросы, я увеличивал масштаб, добавляя второй сервер и балансировщик нагрузки перед двумя веб-серверами.
С веб-сокетами соединение должно быть напрямую с веб-сервером, а не с балансировщиками нагрузки, потому что если машина имеет физический предел, скажем, 64 КБ открытых портов, и клиенты подключались к балансировщику нагрузки, то я не мог поддерживать более 64к одновременных пользователей.
Итак, как мне -
заставить клиента подключаться напрямую к веб-серверу (а не к балансировщику нагрузки) при загрузке страницы? Могу ли я просто загружать JavaScript из узла, а балансировщики нагрузки (или что-то еще) случайным образом изменяют URL-адрес сценария каждый раз, когда страница изначально запрашивается?
справиться с волнистым началом? Браузер заметит, что соединение закрывается, когда веб-сервер завершает работу. Я могу написать код JavaScript, чтобы попытаться повторно открыть соединение, но узел на какое-то время исчезнет. Итак, я думаю, мне придется вернуться к балансировщику нагрузки, чтобы запросить адрес следующего узла, который будет использоваться?
Мне было интересно узнать, как балансировщики нагрузки отправляют перенаправление при первоначальном запросе, так что браузер изначально запрашивает
www.mydomain.com
и перенаправляется наwww34.mydomain.com
. Это работает достаточно хорошо, пока узел не выйдет из строя - а сайты вроде Facebook этого не делают. Как они это делают?