Гем "websocket-rails" и его масштабируемость

В настоящее время мы разрабатываем чат (например, Facebook, с сохраненными сообщениями). на данный момент существует не менее 500 онлайн-пользователей (это сайт знакомств), а на пике - максимум 3000 пользователей одновременно.

переключение на веб-сокеты - это "вещь" для нас, но при использовании самоцвета "веб-сокеты-рельсы" мы немного боимся производительности. читаем статьи вроде https://www.igvita.com/2008/11/13/concurrency-is-a-myth-in-ruby/ вызывает некоторые сомнения.

поэтому наш вопрос:

websocket-rails убивает наше приложение или нет? Другим вариантом будет запуск сервера jsnode и переключение на faye, что не должно быть проблемой в нашем скалярном сценарии. У кого-нибудь есть опыт масштабирования websocket-rails?

1 ответ

GIL все еще здесь, но не должен быть главной проблемой. Основная проблема заключается в том, что подход Rails плохо вписывается в массовый чат.

Мое предложение состоит в том, чтобы переключиться на машину событий для этой конкретной части, и при этом по-прежнему использовать websocket (или другой механизм push, например, pusher) и использовать этот тип клиента WebSocket EventMachine.

Тогда вы будете управляться событиями с одним потоком ruby, и вы все равно сможете использовать все остальные рельсы существующих библиотек (это модель node.js)

Другие вопросы по тегам