ros
вообще поставить ejabberd и не кулупать себе моск
он и websocket может и пуллинг
Slava
а зачем ему понимать что пользователю они пришли?
Slava
просто в следующий раз пользователь запросить сообщения начиная от id последнего принятого
Slava
@rostel так себе совет )
ros
вот 4 года юзаем и хоть бы хны)
Slava
ну, это конечно верно, но это как советовать поставить хадуп для хранения пары гигабайт логов
Aleksey
Slava
ну они не могут быть мгновеннее того момента, чем клиент их запросит
ros
у сообщения есть адресат
Slava
можно в качестве очереди заюзать что-то хипстерское ) https://nats.io/
Aleksey
То есть в любом случае на масштабируемой архитектуре все упрется в делэй между запросами?
Slava
ну да, суммируем все раунд трипы
Slava
но они всё равно будут меньше чем время запроса от клиента к тебе в дата центр
Aleksey
Так смысл что-то накручивать, если можно просто бомбить сервера каждую секунду?
Slava
Можешь переформулировать вопрос?
Aleksey
Есть ли смысл посылать клиентом каждую секунду запрос за новыми сообдениями?
Slava
нет, ответ должен придти от сервера в вебсокет или лонг полл соединение
Aleksey
Тогда я не совсем понимаю. Я знаю как реализовать real-time ответы с сервера при условии, что вся кухня происходит только на одном сервере, тогда существует только один broadcast канал.
Aleksey
Я не понимаю как смасштабировать это решение горизонтально
Slava
я выше скидывал очередь сообщений
Slava
ты можешь писать в канал пользователя и читать из него
Slava
пишешь ты из тех серверов, куда подключены контакты, которые отправляют сообщения пользователю
Slava
читаешь ты с сервера куда у тебя подключен юзер по вебсокету
Aleksey
Понял, спасибо. Извини, что сразу не дошло, раньше не работал с MQ. Посоветуешь с чего можно в этой сфере начать?
Aleksey
И какая разница между http://nats.io/ и Rabbit MQ?
Daniel
а никто не знает :)
Slava
рэббит на эрланге написан, а натс я так понимаю на го)
Aleksey
А с чего начать проще будет?
Slava
разница в гарантиях
Slava
наши инженеры rabbitmq вспоминают как самое ужасное что с ними было в давние времена
Slava
Daniel
говорят да
Slava
начиная с каких-то масштабов
Slava
наверное для простого чата он вполне себе пойдёт )
Anonymous
zeroMQ для высокочастотного трейдинга используется
Slava
zeroMQ кажется уже пованивает и разлагается
Slava
но я не спец )
Slava
а если глянуть сторону  kafka? просто читал что она хороша на больших объмах данных
Aleksey
Как я понял - на каждого пользователя
Alexey
Kafka это не совсем очередь, это распределённое хранилище логов. Разница в том, что она хранит данные пока не выйдет время, а не пока их кто-то не прочитает.
Alexey
NATS (без NATS Streaming) хранит все данные в памяти, там нет диска
Alexey
Rabbit MQ у нас тоже разваливался :(
Slava
Alexey
А с чего начать проще будет?
Как ни странно – Redis. Это тоже не очередь, но очередь с PUB/SUB там есть. И знание Redis’а пригодится.
Alexey
> А можешь плиз чуть подробнее про рэббит рассказать почему разваливается?
Думаю, потому, что его сложно готовить
Daniel
редис - без отказоустойчивости
Alexey
Redis Sentinel, Redis Cluster – уже всё есть
Aleksey
Alexey
Нет
Alexey
Один SUB на процесс, который получает обновления
Alexey
https://redis.io/topics/pubsub
Aleksey
То есть все писать в один канал и на каждом сервере принимать все сообщения и если у конкретного сервера есть подлючение с клиентом - отвечать?
Aleksey
Создание большого количества каналов приводит к дополнительной нагрузке?
Alexey
Конечно, создание чего-то приводит к нагрузке. Вопрос только к какой :)
Alexey
Вроде, к небольшой. Можно использовать несколько каналов, можно один. Попробуйте и так, и так.
Aleksey
То есть как проще, нагрузить Redis большим количеством каналов или сервера большим количеством входящих сообщений
Alexey
Напишите benchmark :)
Aleksey
Это труднее, чем все это завести)
Aleksey
Тем не менее, спасибо за помощь
Alexey
не за что
Oleg
Aleksey, возможно это то что вам нужно - https://github.com/centrifugal/centrifugo
Aleksey
Oleg
Oleg
Но не по умолчанию )
Aleksey
Да я читал, через Redix =) Я тоже самое собираюсь накрутить, только поверх своего сервера
Oleg
Через redis
Oleg
Лично я сам писал такой сервер, на node.js. И могу сказать что лучше взять готовый
Oleg
Тем более что это от mail.ru
Oleg
Хотя для кого то это контраргумент
Aleksey
А в чем была сложность?
Oleg
Менеджмент сессий пользователя
Oleg
Не то чтоб сложность, но не очевидны некоторые вши были по началу
Aleksey
Oleg
Slava
Тем более что это от mail.ru
а у тебя был опыт работы с центрифугой? любопытная штука, присматривался к ней. интересно как она в продакшене себя ведет
Oleg
Oleg
Возможно даже автор в этом чате есть
Alexander
Теперь есть:)
Alexander
Мы используем Центрифугу в 4х проектах, но нагрузка во всех небольшая к сожалению, DeviantArt выкатывал на 50тыс пользователей онлайн - 2 машинки на amazon c3, с тех пор было достаточно много оптимизаций внутри