Сообщения и уведомления в нагруженной системе

Есть задача по разработке серверной части для мобильного приложения и сайта. Основная часть серверного api будет разрабатываться на базе nginx+php-fpm и MariaDB. Кроме всего прочего потребуется функционал рассылки уведомлений для клиентов и быстрого обмена сообщениями между клиентами. Все это должно быть realtime (ну или почти realtime). Сообщения нужно хранить в БД, чтобы при необходимости было возможность их получить из основного api. Проблема в том, что не могу определиться с выбором технологий для реализации этих сообщений/уведомлений. Предполагается, что клиентов онлайн будет достаточно много (точное число сейчас трудно сказать, но по смелым ожиданиям заказчика со временем может дойти до 100к). Сами сообщения отправлять будут относительно нечасто и они будут небольшими.

Сначала подумывал о написании велосипеда на nodejs. Веб-клиенты через socket.io, мобильные — raw tcp socket. Можно масштабировать запуском нескольких инстансов ноды. Зная айдишник пользователя можно определить, на каком инстансе он висит.

Потом подкинули идею использовать XMPP и ejabberd. С одной стороны звучит заманчиво, с другой есть некоторые сомнения на счет целесообразности такого решения. Да и опыта работы с ejabberd вообще не было. Знания об Erlang'е весьма поверхностные.

В общем, ввиду отсутствия практического опыта в разработке подобных, не могу определиться с выбором средств реализации. Возможно есть еще более эффективные способы решения этой задачи о которых я вообще не знаю. Буду весьма признателен, если посоветуете что именно выбрать и как лучше реализовать.
  • Вопрос задан
  • 3629 просмотров
Пригласить эксперта
Ответы на вопрос 2
AloneCoder
@AloneCoder
[object Object]
Ответ написан
Комментировать
@IgaIst
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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