Масштабирование web-сокетов (node.js)
Имеется ввиду дублирование на нескольких физических серверах. Как организовать распределение клиентов, динамическое подключение/отключение серверов и т.п.?
Есть идеи как всё придумать и запилить самому, но мб есть готовые решения или схемы? |
Шардинг?
|
Я пользуюсь облаком, там всё из коробки :) Добавление новых машинок делается из админки, синхронизация машинок делается через интегированный в облако сервис уведомлений. Всё очень просто и удобно.
|
Цитата:
<iframe width="640" height="480" src="//www.youtube.com/embed/bRkF1reGv7k" frameborder="0" allowfullscreen></iframe> |
Цитата:
Цитата:
1) Есть некое приложение вход в которое осуществляется строго по логину и паролю. 2) Всё общение между клиентами и сервером осуществляется по WebSocket 3) Учётные записи юзеров хранятся на отдельном сервере. 4) Есть ещё один сервер который периодически шлёт мне уведомления, которые нужно в реальном времени отображать пользователям. Особенность этого сервера в том что он шлёт запросы только по одному конкретному IP (далее server № 1), его настраивать я не могу. Т.е. если я просто размножу приложение по нескольким серверам то server № 1 должен будет рассылать его всем своим клонам. Та же проблема и с логином. Например зашёл человек 1 раз, и балансировщик перекинул его на СЕРВЕР-2, он залогинился. Потом открыл вторую вкладку, защёл на сайт, балансировщик кинул его на СЕРВЕР-3 и он залогинился ещё раз. Т.е. перед логином нужно проверять нет ли такого юзера на других серверах. 5) Пользователи друг с другом не взаимодействуют. Сейчас по моим прикидкам сервер со всеми доделками и оптимизациями выдержит 5-10 кило одновременных подключений. Мне нужно 20 - 30 тысяч. Похоже что всё упирается в пропускную способность соединения с интернетом. Короче эту темя я ещё только начинаю исследовать. Я понимаю что сначала нужно найти причину а потом только думать что и как масштабировать. Сейчас предположим что дело в интернете, причём варианта расширить канал нет, есть только возможность добавить серваков со своими,отдельными интернет каналами. Сервер это просто комп в офисе, облаков и прочего пока нет и не нужно, ибо большой посещаемости не планируется. Нужно просто предусмотреть возможность масштабирования и если понадобится добавим пару компов в другие офисы. Получается у меня 2 вопроса: 1 - чем проксировать или балансировать (хз как правильнее) веб-сокеты? 2 - как по умному решить проблему с логином и сервером который шлёт уведомления оп фиксированному IP? Нагуглил такую тему: Hipache: a distributed HTTP and websocket proxy но пока не юзал Цитата:
|
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 01:37. |