Size: a a a

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

2021 April 16

PD

Phil Delgyado in Архитектура ИТ-решений
"Как только он разберётся и выделит актуальные записи, начнётся проходка по мапе с рассылкой нужных сообщений по нужным группам" - да сразу "прочитали событие - добавили в мапу, пометили как отправленное, пошли за следующим"
Можно добавить событие "timeout - если пришли и событие не read - сделать что-нибудь"
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Ну да, отдельной миграцией, делов-то.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Миграции - это вообще главный инструмент при разработке )
источник

PD

Phil Delgyado in Архитектура ИТ-решений
"Либо что-то во внутреннем коде, которое крутится в while true и по вейку читает новую инфу из глобальных переменных. Например, те же присланные read можно тупо в список класть, как и хешмапа с сокетами, и pop'ать все."
Тред с бесконечным циклом, "прочитал - положил в мапу сокета - пометил - пошел дальше"
источник

G

George in Архитектура ИТ-решений
На отвал по хартбиту можно тоже что-то сделать в принципе. Это автоматически значит, что всё всё ещё unread и требует присылки на следующий connect
источник

p

pragus in Архитектура ИТ-решений
Балансировщиков на вкус и цвет много. Клиент просто сделает реконнект и все будет ок.
источник

PD

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

PD

Phil Delgyado in Архитектура ИТ-решений
Могут, конечно, все читать из топика, а "если у меня такого пользователя нет - то и пофиг".
источник

PD

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

G

George in Архитектура ИТ-решений
Кстати, не знаю, уместно ли тут будет задавать такой вопрос, ибо выше идёт диалог о уведомлениях, но я в качестве дипломной/просто фан-проекта планировал сделать что-то типа лоад балансера как у aws/яндекса, но который автоматически покупает и вводит в эксплуатацию сервера vps-типа, притом у разных провайдеров, перераспределяя нагрузку на них.
Есть ли уже существующие такие инструменты или всё поглотили SaaS и куберы?
источник

p

pragus in Архитектура ИТ-решений
Это вопрос роутинга. Если мы знаем на каком ws-сервере находится клиент - всё относительно просто.
источник

G

George in Архитектура ИТ-решений
На самом деле, просто хочется разобраться с анализом нагрузки на железо/сервис и API облачных провайдеров в качестве автоматизации развёртки серверов, но интересно, нужны ли кому-то такие инструменты в реальности.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Угу, но как это узнать. Ну не sticky-session же реализовывать, в конце концов.
источник

PD

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

p

pragus in Архитектура ИТ-решений
В протокольчике, что поверх ws сделать. Как в мобильных сетях с location update.
источник

PD

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

PD

Phil Delgyado in Архитектура ИТ-решений
Ну и по хорошему для клиента все сервера должны быть одинаковыми, что один, что десять. Он просто цепляется на entrypoint и получает события.
источник

p

pragus in Архитектура ИТ-решений
Клиент ничего не знает про сервера :)
источник

PD

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

p

pragus in Архитектура ИТ-решений
У каждого сервера ws свой топик, а роутинг между топиками по in-memory табличке.
источник