Size: a a a

Архитектура ИТ-решений

2021 April 16

PD

Phil Delgyado in Архитектура ИТ-решений
А табличка эта где лежит? В распределенной in-mem базе?
источник

PD

Phil Delgyado in Архитектура ИТ-решений
И, заметим, если ws-сервер упал, то все события для его пользователей будут доставлены только когда он поднимется (так как они в топике, который никто не читает).
источник

p

pragus in Архитектура ИТ-решений
Зачем распределенная?
источник

PD

Phil Delgyado in Архитектура ИТ-решений
А как тогда отправители сообщений поймут, в какой топик отправлять события для пользователей?
источник

p

pragus in Архитектура ИТ-решений
Нет. Клиенты просто сделают реконнект, при реконнекте обновится местоположение(на каком ws клиент) и мы ему дошлём то что он не успел ack-нуть
источник

PD

Phil Delgyado in Архитектура ИТ-решений
А откуда мы возьмем то, что не успели получить? И как поймем, что он не успел это получить?
источник

p

pragus in Архитектура ИТ-решений
Всё ровно так же, как в мобильных сетях, кстати.
источник

p

pragus in Архитектура ИТ-решений
Клиент явно должен ack'ать то что до него дошло.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Смотри, как я понял твою схему:
есть mq, где по топику на каждый активный ws
есть общая таблица, где сказано, к какому из топиков относится клиент
есть хранилище, где известно, какие события дошли

продьюсер смотрит в "таблицу" и кидает событие в соответствующий топик
ws читает событие из топика и отправляет в сокет
если сокет упал, то соединение повторяется, меняется таблица, из общего хранилища берем все без ack и закидываем в топик
при приходе ack - в хранилище помечаем
источник

p

pragus in Архитектура ИТ-решений
Примерно так, да.  Но по топику на ws-сервер.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Я вижу проблемы:
1) общая таблица должна быть доступна всем продьюсерам, что сразу говорит про общую БД.
2) при падении ws резко взлетает нагрузка на БД с сообщениями (все переподключаются и забирают события)
3) очень сложно изменять число ws (нужно разбираться с тем, что в очереди)
4) после падения и восстановления ws на него приходят события, которых нет в его клиентах
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Общая таблица, на самом деле, не нужна.
Все ws читают все события, если нет сокета этого клиента - то и пофиг
При переподключении забираем все для данного клиента
источник

PD

Phil Delgyado in Архитектура ИТ-решений
события все равно живут и в очереди и в хранилище событий (но в очереди - не долго)
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Ну и не понятно, как в очередь попадают события по таймеру, там все равно придется делать шедулинги через skip locked )
источник

w

whoami in Архитектура ИТ-решений
Добрый день!

Не знаю в тот ли чат обращаюсь, но хотел уточнить, что лучше использовать для связи с сервером в моб приложении - обмениваться данными через websockets или "дергать" по http запрос-ответ?
Я читал, что websockets эффективнее в плане экономии батареи, мол один раз соединение создали и все. Есть ли у кого может статейка или может опыт по этому вопросу?
источник

VS

Victor👨🏼‍💻🐍 Svirsky... in Архитектура ИТ-решений
Добрый день,

Несколько лет назад, был наоборот неприяный опыт с веб сокетами, баттарея садилась быстро + постоянные обрывы соединения при блокировках аппарата (что естественно).
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Сокет имеет смысл, если нужно постоянно ждать ответ с сервера и для замены пулинга.
В прочих случаях http будет скорее всего удобнее
источник

Ms

Mutko says in Архитектура ИТ-решений
Тсс, pubsub отменили
источник

S

Sergey in Архитектура ИТ-решений
а gRPC в этом контексте не пойдет ?
источник

w

whoami in Архитектура ИТ-решений
Можно подробнее?)
источник