Грамотная реализация системы диалогов на сайте (Архитектура)?
Имеется веб-сайт с высокой посещаемостью (около 120к уников в день, до 10к в онлайне).
Необходимо реализовать на сайте систему диалогов (как ВКонтакте) под HighLoad.
Текущая архитектура: Apache PHP-FPM (ver. 7), статика на NGINX, БД MySQL 0.2ТБ.
Как грамотно реализовать прослойку с node.js, и где хранить лучше сами сообщения?
Стоит ли использовать Redis и как сделать сохранение сообщений даже после ребута?
Какие есть ещё актуальные варианты реализации?
С Redis Вам будет сложно масштабироваться. Придется делать N серверов redis на бекенде. И придумать свою механику распределения нагрузок между ними. По типу "Вася и Дима" общаются на базе Redis1, а "Вася и Коля" на Redis2. И предусмотреть в случае нагрузок возможность подключать новые Redis3 в обойму на лету в случае переполнения серверов. Ну и конечно это для свежих чатов. Более старые нужно выгружать из Redis и класть в архив Postgres или Mysql.
Николай: ну, на оффсайте написано, что «designed from the very beginning for massive scalability», кластеризация есть из коробки. У меня опыта нет непосредственного с ним, на самом деле, но я знаю что в касперском телеметрия от инсталляций собирается по XMPP и именно в ejabberd.