Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Подскажите алгоритм работы серверной части чатов  [new]
qi_ip
Member

Откуда:
Сообщений: 566
Приветствую!

Поделитесь, пожалуйста, измышлениями, как может/должна работать бэкэенд часть чат-серверов, при рассылке сообщений пользователей, наподобие телеграма, ватцапа, вайбера?

По большей части интересует, как реализовывается целевая рассылка сообщений от одного пользователя к другому (P2P): создается очередь сообщений для каждого пользователя, каждый раз в цикле для каждого пользователя job'иком делается селект из БД на наличие новых сообщений и рассылает или еще как-то?

Спасибо!
7 авг 19, 09:51    [21943489]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1019
qi_ip,
Всегда ожно усложнить.
Отдельный сервис в цикле аждую секунду достает Все изменения из базы в оперативку.
7 авг 19, 09:59    [21943500]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
dimonz80
Member

Откуда:
Сообщений: 198
qi_ip
Приветствую!

Поделитесь, пожалуйста, измышлениями, как может/должна работать бэкэенд часть чат-серверов, при рассылке сообщений пользователей, наподобие телеграма, ватцапа, вайбера?


SSE/LongPolling/WS

qi_ip
По большей части интересует, как реализовывается целевая рассылка сообщений от одного пользователя к другому (P2P): создается очередь сообщений для каждого пользователя, каждый раз в цикле для каждого пользователя job'иком делается селект из БД на наличие новых сообщений и рассылает или еще как-то?




Publisher/Subscriber
7 авг 19, 10:32    [21943530]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1019
dimonz80
LongPolling
тут не совсем бэк. Скорее бэк с фронтом.
Наверно и ТСу не один бэк нужен.
7 авг 19, 10:48    [21943538]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
mayton
Member

Откуда: loopback
Сообщений: 41377
qi_ip
Приветствую!

Поделитесь, пожалуйста, измышлениями, как может/должна работать бэкэенд часть чат-серверов, при рассылке сообщений пользователей, наподобие телеграма, ватцапа, вайбера?

По большей части интересует, как реализовывается целевая рассылка сообщений от одного пользователя к другому (P2P): создается очередь сообщений для каждого пользователя, каждый раз в цикле для каждого пользователя job'иком делается селект из БД на наличие новых сообщений и рассылает или еще как-то?

Спасибо!

Для сложных, географически-децентрализованных чятов типа вайбер и телеграм есть скорее всего
семейство серверов. И если вы к примеру из РФ то подключаетесь к ближайшему. Если вы из USA
то соотв к своему.

Могу предположить что сеть серверов трекают появление клиента в сети и рассылают уведомления
всем. Типа смена статуса.

А когда клиент посылает месседж в чят-комнаты - идёт месседж по схеме publish-subscribe на все серваки.
И тот кто подписан соотв читает.
7 авг 19, 11:50    [21943603]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
забыл ник
Member

Откуда:
Сообщений: 2859
PetroNotC Sharp
Отдельный сервис в цикле аждую секунду достает Все изменения из базы в оперативку.

Это проглый век. Pub/Sub как уже сказали, ну и на клиенте можно вебсокеты
7 авг 19, 12:07    [21943639]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
qi_ip
Member

Откуда:
Сообщений: 566
PetroNotC Sharp
qi_ip,
Всегда ожно усложнить.
Отдельный сервис в цикле аждую секунду достает Все изменения из базы в оперативку.

Не будет ли это узким местом, влияющим на скорость отправки сообщений, во время обработки большого количества данных?
7 авг 19, 12:09    [21943643]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
qi_ip
Member

Откуда:
Сообщений: 566
dimonz80

Publisher/Subscriber


Будем посмотреть в этом направлении ))) А можете посоветовать какие-нить либы (если есть), которые сами щупали?
7 авг 19, 12:12    [21943648]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
qi_ip
Member

Откуда:
Сообщений: 566
mayton
qi_ip
Приветствую!

Поделитесь, пожалуйста, измышлениями, как может/должна работать бэкэенд часть чат-серверов, при рассылке сообщений пользователей, наподобие телеграма, ватцапа, вайбера?

По большей части интересует, как реализовывается целевая рассылка сообщений от одного пользователя к другому (P2P): создается очередь сообщений для каждого пользователя, каждый раз в цикле для каждого пользователя job'иком делается селект из БД на наличие новых сообщений и рассылает или еще как-то?

Спасибо!

Для сложных, географически-децентрализованных чятов типа вайбер и телеграм есть скорее всего
семейство серверов. И если вы к примеру из РФ то подключаетесь к ближайшему. Если вы из USA
то соотв к своему.

Могу предположить что сеть серверов трекают появление клиента в сети и рассылают уведомления
всем. Типа смена статуса.

А когда клиент посылает месседж в чят-комнаты - идёт месседж по схеме publish-subscribe на все серваки.
И тот кто подписан соотв читает.

Спасибо, посмотрю в этом направлении, а можете что-нить порекомендовать, может быть что юзали в этом направлении?
7 авг 19, 12:13    [21943652]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1019
забыл ник
Это проглый век.
угу. Конфигурастами стали

забыл ник
Pub/Sub как уже сказали

Это просто паттерн. А внутри опрос бд?)))

забыл ник
вебсокеты
не трогая клиента?
7 авг 19, 12:15    [21943653]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1019
qi_ip
Спасибо, посмотрю в этом направлении,
в каком? Вы плагин пишите к вайберу или собственную сеть?
7 авг 19, 12:17    [21943656]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1019
qi_ip
PetroNotC Sharp
qi_ip,
Всегда ожно усложнить.
Отдельный сервис в цикле аждую секунду достает Все изменения из базы в оперативку.

Не будет ли это узким местом, влияющим на скорость отправки сообщений, во время обработки большого количества данных?
не будет. Выставляй пиво на спор.
7 авг 19, 12:18    [21943662]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
qi_ip
Member

Откуда:
Сообщений: 566
PetroNotC Sharp
qi_ip
Спасибо, посмотрю в этом направлении,
в каком? Вы плагин пишите к вайберу или собственную сеть?

Собственную сеть
7 авг 19, 12:19    [21943663]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1019
ТС
А перед пивом покажи узкое место.
select раз в сек? Или что?
7 авг 19, 12:20    [21943667]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1019
qi_ip
Собственную сеть
тогда пиши первую версию до 100 юзверей. Потом новую версию если будет больше.
7 авг 19, 12:21    [21943669]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
mayton
Member

Откуда: loopback
Сообщений: 41377
qi_ip
mayton
пропущено...

Для сложных, географически-децентрализованных чятов типа вайбер и телеграм есть скорее всего
семейство серверов. И если вы к примеру из РФ то подключаетесь к ближайшему. Если вы из USA
то соотв к своему.

Могу предположить что сеть серверов трекают появление клиента в сети и рассылают уведомления
всем. Типа смена статуса.

А когда клиент посылает месседж в чят-комнаты - идёт месседж по схеме publish-subscribe на все серваки.
И тот кто подписан соотв читает.

Спасибо, посмотрю в этом направлении, а можете что-нить порекомендовать, может быть что юзали в этом направлении?

Нет. Мессенджеры я не разрабатывал к сожалению. Я участвовал в разработке похожей
системы. Но бегают в ней не чят-сообщения а сообщения биржевых площадок.
7 авг 19, 12:22    [21943672]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
qi_ip
Member

Откуда:
Сообщений: 566
PetroNotC Sharp
qi_ip
пропущено...

Не будет ли это узким местом, влияющим на скорость отправки сообщений, во время обработки большого количества данных?
не будет. Выставляй пиво на спор.

Пока спорить не готов, так как только начал изучать )))) Вам верю!
7 авг 19, 12:23    [21943675]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
qi_ip
Member

Откуда:
Сообщений: 566
PetroNotC Sharp
ТС
А перед пивом покажи узкое место.
select раз в сек? Или что?

Ну, как вариант, да. Если будет результат больше 100 тыс строк
7 авг 19, 12:25    [21943680]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
забыл ник
Member

Откуда:
Сообщений: 2859
PetroNotC Sharp
забыл ник
Это проглый век.
угу. Конфигурастами стали

забыл ник
Pub/Sub как уже сказали

Это просто паттерн. А внутри опрос бд?)))

забыл ник
вебсокеты
не трогая клиента?


В данном случае можно и без базы легко обойтись, усилиями log-based broker message а-ля кафки. Чатовая архитектура в принципе хорошо ложится на eventsourcing. Не говоря о каком-нибудь NOTIFY|LISTEN в посгресе. Забудь уже о своих блокирующих опросах БД. кстати как быть если нужно несколько датацентров?
7 авг 19, 12:27    [21943682]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
qi_ip
Member

Откуда:
Сообщений: 566
[quot mayton]
qi_ip
пропущено...
не чят-сообщения а сообщения биржевых площадок.

Ну, возможно принцип схож...там самописное использовали или что-то готовое?
7 авг 19, 12:27    [21943684]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
dimonz80
Member

Откуда:
Сообщений: 198
qi_ip
dimonz80

Publisher/Subscriber


Будем посмотреть в этом направлении ))) А можете посоветовать какие-нить либы (если есть), которые сами щупали?


Akka streams
7 авг 19, 12:30    [21943688]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
забыл ник
Member

Откуда:
Сообщений: 2859
PetroNotC Sharp
qi_ip
Собственную сеть
тогда пиши первую версию до 100 юзверей. Потом новую версию если будет больше.


А вот тут есть доля правды.
ТС, система на 1000, 100000, 1000000 пользователей - это абсолютно разные системы. И какждое такое увеличение не дается бесплатно. Всегда имеет смысл разрабатывать систему, которая может обработать на один порядок больше сообщений, чем у тебя еть в данный момент. Иное -нерационально. Потом проще выкинуть и переписать. Так что если у тебя реально 100+ юзеров и один датацентр, то вполне может и опрос базы прокатить. А планировать а вдруг если у меня миллион сообщений будет, когда на сайте 3 калеки - это оверинжиниринг
7 авг 19, 12:30    [21943689]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1019
qi_ip
результат больше 100 тыс строк
не будут тормозить. Индексы в базе есть для этого.
7 авг 19, 12:31    [21943690]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 1019
забыл ник
Забудь уже о своих блокирующих опросах БД
что за ерунда?
ну и мы чат на 100 юзверей обсуждам.
7 авг 19, 12:33    [21943691]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите алгоритм работы серверной части чатов  [new]
dimonz80
Member

Откуда:
Сообщений: 198
забыл ник
PetroNotC Sharp
пропущено...
тогда пиши первую версию до 100 юзверей. Потом новую версию если будет больше.


А вот тут есть доля правды.
ТС, система на 1000, 100000, 1000000 пользователей - это абсолютно разные системы. И какждое такое увеличение не дается бесплатно. Всегда имеет смысл разрабатывать систему, которая может обработать на один порядок больше сообщений, чем у тебя еть в данный момент. Иное -нерационально. Потом проще выкинуть и переписать. Так что если у тебя реально 100+ юзеров и один датацентр, то вполне может и опрос базы прокатить. А планировать а вдруг если у меня миллион сообщений будет, когда на сайте 3 калеки - это оверинжиниринг



Для данной задача БД - это один из сабскраберов, который подписан на все подряд и складывает сообщения где-то в хранилище, т.е. тупой логгер.

Банальная реализация для выглядит как-то так:


POST /message
принимает сообщение от юзера и публикует для всех

GET /messages (это перистентное соединение, которое устанавливает клиент - SSE или long polling)
отдает сообщения по пере поступления
опционально может нырять в базу и сначала отдавать скажем 10 последних сообщений для данного юзера (ну тогда на клиент придется мержить с локальной историей)

7 авг 19, 12:53    [21943714]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Java Ответить