Size: a a a

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

2020 November 20

OS

Oleg Soroka in Архитектура ИТ-решений
Phil Delgyado
Ох, надежные решение на хазелкасте - это не просто, а персистанса там, можно сказать, нет.
Ты как-то мягко сформулировал :)
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Ну, я же вообще мягко формулирую )
источник

IB

Igor Bespalchuk in Архитектура ИТ-решений
Phil Delgyado
Хм, а как у тебя реактивный движок на фронте будет подключаться к этому "состоянию данных"? Или у тебя нет такой задачи?
Очередь, конечно, есть, но только пока есть сессия. Подключился (subscribe) - тебе пошли push'и с обновлениями state'а. Отключился или порвалась связь - ну и хрен с тобой.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Igor Bespalchuk
Очередь, конечно, есть, но только пока есть сессия. Подключился (subscribe) - тебе пошли push'и с обновлениями state'а. Отключился или порвалась связь - ну и хрен с тобой.
Вот это "порвалась связь" меня и печалит...
источник

IB

Igor Bespalchuk in Архитектура ИТ-решений
Обнаружился backpressure - ну, пореже тебе обновления будут слать.
источник

IB

Igor Bespalchuk in Архитектура ИТ-решений
Если тебя это печалит, то, скорее всего, задача у тебя совсем другая.
источник

PD

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

IB

Igor Bespalchuk in Архитектура ИТ-решений
Как выедет - переподключится и получит последнее состояние
источник

PD

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

PD

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

IB

Igor Bespalchuk in Архитектура ИТ-решений
Если тебе нужно точно сохранить очередь всего, что отправлялось конкретному клиенту - то наверное тебе нужно решение другого типа. Может, в DSS это и есть где-то, но сомневаюсь, т.к. мне кажется это принципиально другой подход - "_current_ data distribution" vs "message queueing"
источник

IB

Igor Bespalchuk in Архитектура ИТ-решений
"Чаще нужен" - вот это как раз и есть "зависит от задачи".
источник

IB

Igor Bespalchuk in Архитектура ИТ-решений
Вопрос целостности, нерразрывности, этого стрима (возможны ли пропуски на период отсутствия связи). Нужна ли тебе вот эта неразрывность исходного потока или только поток актуальных в моменте состояний.
источник

IB

Igor Bespalchuk in Архитектура ИТ-решений
Если только актуальное нужно - ну переподключилось оно само и пошел тебе стрим снова...
источник

IB

Igor Bespalchuk in Архитектура ИТ-решений
А вот если тебе через клиента обязательно всю историю прокачать надо.... тогда это, наверное, другая концепция. Впрочем, х.з., может кто-то из DSS-семейства и это может.
источник

PD

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

Да, у меня задачи в основном - реакция пользовательского интерфейса на события с сервера.
источник

IB

Igor Bespalchuk in Архитектура ИТ-решений
Ну дык клиентское API это в первую очередь subscribe(topic-path) с обработчиком изменений. Что тут непонятного?
Но вот "состояние - список актуальных событий" звучит странно.
источник

IB

Igor Bespalchuk in Архитектура ИТ-решений
Состояние в их всех примерах это, например, "дверь открыта или закрыта", "USD:BTC=X, etc"
источник

IB

Igor Bespalchuk in Архитектура ИТ-решений
События (сообщения с дельтами состояний) - под капотом.
источник

IB

Igor Bespalchuk in Архитектура ИТ-решений
И вот если реакция пользовательского интерфейса на самом деле - на изменения некоторого внешнего состояния, то становится очень просто - ты просто его биндишь к UI и все.
Все остальное делает middleware.
источник