У меня есть tcp-сервер node.js, который используется в качестве бэкенда для клиента чата на iPhone. Поскольку моя реализация включает приватные групповые чаты, я храню список пользователей и то, к какой комнате чата они принадлежат, в памяти, чтобы правильно направлять сообщения. Это хорошо работает, если предположить, что мой чат-сервер всегда будет на одной машине, но когда / если мне нужно масштабировать по горизонтали, мне нужен хороший способ передачи сообщений клиентам, которые подключаются к разным серверам. Я не хочу начинать межпроцессное взаимодействие между серверами узлов и предпочел бы делиться состоянием с redis.
У меня есть несколько идей, но мне интересно, есть ли у кого-нибудь хорошее решение для этого? Для ясности вот пример:
Пользователь 1 подключается к серверу 1 в комнате X, пользователь 2 подключается к серверу 2 в комнате X. Пользователь 1 отправляет сообщение, мне нужно передать его пользователю 2, но, поскольку я использую структуру данных в памяти, серверы не разделяют состояние. Я хочу, чтобы мои серверы узлов оставались настолько тупыми, насколько это возможно, поэтому я могу просто добавлять / удалять их для нужд моей системы.
Спасибо:)