@Oleg_Bar

Масштабирование node.js?

Многопользовательская игра.
Авторизованный пользователь инициирует какое-то действие и жмет "Старт".
Идет поиск игры - проверяется несколько параметров, если все совпало - пользователь переходит в уже созданную комнату, где вместе с остальными ожидает начало игры.
Если поиск ничего не дал, то создается новая комната и пользователь ждет подключения остальных.

БД(postgresql) используется для журналирования действий.
Процесс поиска, сравнения параметров, добавление новых пользователей в комнаты, создание/удаление комнат - происходит через переменную в node.js
Сейчас все работает отлично, в рамках одного процесса node.js.

Но при добавлении модуля cluster вся логика рушится, ибо даже в рамках одной машины переменная игры у каждого своя. Тем более невозможно поднять новые сервера(инстансы) по той же причине.
Что посоветуете ?
UPD
Для комнат игры существует два состояния - ожидание и активная игра(переменная принимает одно из значений). Комнаты для игры создаются самими пользователями и удаляются автоматически при отсутствии пользователей в них.
Redis хорош, когда знаешь что надо вытаскивать из хранилища, но не для выборки(хотя я могу и ошибаться).
  • Вопрос задан
  • 500 просмотров
Пригласить эксперта
Ответы на вопрос 1
Staltec
@Staltec
Node.js разработчик
Храните состояние в Redis или закрепляйте определённые комнаты за определёнными воркерами в кластере.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы