Как вам связка SockJS/Redis на Node.JS для личных сообщений на HighLoad проекте?

Суть:
Есть сайт с более чем 150 тыс. уников в сутки. До 10 тыс. человек в онлайне. На сайте есть система диалогов/личных сообщений. Под примитивным AJAX long-polling к PHP-обработчику с выборкой все, разумеется, легло. Необходимо было реализовать более оптимальный способ. Сообщения обязательно должны сохраняться в СУДБ (для истории и поиска). Купили отдельный сервер под node.js, придумали такую архитектуру:

При загрузке страницы с диалогом берутся сообщения через API на PHP из MySQL (как история).
Клиент подписывается через SockJS к серверу с NodeJS на поток из Redis этого канала (диалога).
При отправке сообщения оно дублируется как в Redis (для потока оппонента), так и в MySQL (для истории).
Оппонент получает сообщение из потока в Redis в real-time.

Был сделан бенчмарк на 1000 соединений с потоком 10 сообщений в секунду на каждое. Сервер спокойно выдержал, нода брала не более 50 мб оперативки вместе с ОС. Всего на сервере 64 гб.

Теперь, собственно, вопросы:
1) Насколько хорош этот велосипед?
2) Как идентифицировать собеседников на сервере ноды и делать канал только для них?
3) Насколько безопасно это в плане конфиденциальности переписки?
  • Вопрос задан
  • 1114 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы