Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Масштабирование web-сокетов (node.js) (https://javascript.ru/forum/server/47098-masshtabirovanie-web-soketov-node-js.html)

Tim 08.05.2014 14:37

Масштабирование web-сокетов (node.js)
 
Имеется ввиду дублирование на нескольких физических серверах. Как организовать распределение клиентов, динамическое подключение/отключение серверов и т.п.?


Есть идеи как всё придумать и запилить самому, но мб есть готовые решения или схемы?

monolithed 08.05.2014 15:15

Шардинг?

kobezzza 08.05.2014 15:25

Я пользуюсь облаком, там всё из коробки :) Добавление новых машинок делается из админки, синхронизация машинок делается через интегированный в облако сервис уведомлений. Всё очень просто и удобно.

nerv_ 08.05.2014 15:41

Цитата:

Сообщение от kobezzza
Я пользуюсь облаком

Облака - Белогривые Лошадки :)
<iframe width="640" height="480" src="//www.youtube.com/embed/bRkF1reGv7k" frameborder="0" allowfullscreen></iframe>

Tim 08.05.2014 17:31

Цитата:

Сообщение от monolithed
Шардинг?

Цитата:

Шардинг - разделение данных на уровне ресурсов. Концепция шардинга заключается в логическом разделении данных по различным ресурсам исходя из требований к нагрузке.
Скорее всего это немного не то. Попробую описать подробнее:

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 но пока не юзал


Цитата:

Сообщение от kobezzza
Я пользуюсь облаком, там всё из коробки Добавление новых машинок делается из админки

я смогу там масштабировать веб-сокеты?

kobezzza 08.05.2014 22:39

Цитата:

я смогу там масштабировать веб-сокеты?
Да, там предусмотрен специальный сервис, сам юзаю. Твоя задача решена в то же Azure, не придумывай велосипеды :)

Tim 12.05.2014 10:54

Цитата:

Сообщение от kobezzza
Да, там предусмотрен специальный сервис, сам юзаю. Твоя задача решена в то же Azure, не придумывай велосипеды

Не убедил. Платить 5 рублей в месяц за то что по быстрому можно собрать на коленке как то мало интересно.


Часовой пояс GMT +3, время: 01:37.