Сервер сокетов tcp Node.js на нескольких машинах

У меня есть узел.js tcp-сервер, который используется как бэкэнд для клиента чата iPhone. Поскольку моя реализация включает в себя частные групповые чаты, я храню в памяти список пользователей и их чат-комнату, чтобы правильно маршрутизировать сообщения. Все это отлично работает, если мой чат-сервер всегда будет на одном компьютере, но когда / если мне нужно масштабировать по горизонтали, мне нужен хороший способ широковещательной рассылки сообщений клиентам, которые подключаются к разным серверам. Я не хочу начинать заниматься интер-процесс взаимодействия между серверами узлов и предпочел бы разделять состояние с redis.

У меня есть несколько идей, но мне интересно, есть ли у кого-нибудь хорошее решение для этого? Для ясности приведем пример:

Пользователь 1 подключается к серверу 1 в комнате X, пользователь 2 подключается к серверу 2 в комнате X. Пользователь 1 отправляет сообщение, мне нужно, чтобы оно было передано пользователю 2, но поскольку я Я использую структуру данных в памяти, которую серверы не разделяют. Я хочу, чтобы мои серверы узлов оставались как можно более тупыми, чтобы я мог просто добавлять / удалять в соответствии с потребностями моей системы.

Спасибо :)

5
задан brandizzi 26 September 2011 в 01:21
поделиться