Size: a a a

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

2020 November 20

IB

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

IB

Igor Bespalchuk in Архитектура ИТ-решений
Зачем мне *события* изменения USD:BTC, если я хочу просто вывести *текущее* USD:BTC и менять его как только оно поменялось?
источник

IB

Igor Bespalchuk in Архитектура ИТ-решений
Я в этой формулировке даже термин "событие" не использую. В этом mind shift. Есть именованные ("USD:BTC") данные, какой-то структуры (какая-то запись или JSON Schema или скаляр). Они иногда меняются. Это все.
источник

IB

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

PD

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

IB

Igor Bespalchuk in Архитектура ИТ-решений
С возможностью.
источник

IB

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

PD

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

PD

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

IB

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

IB

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

IB

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

PD

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

PD

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

IB

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

PD

Phil Delgyado in Архитектура ИТ-решений
А описаний обычно нет никаких, увы.
источник

PD

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

p

pragus in Архитектура ИТ-решений
Phil Delgyado
Тут хороший вариант - это запросить "а какое сейчас актуальное событие", прикинуть дельту и решить, что забирать.
Но там сразу много разных проблем вылезает )
Клиент может попросить "покажи не последние n-тиков"
источник

PD

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

AB

Alexander Bukarev in Архитектура ИТ-решений
Igor Bespalchuk
Привет всем, коллеги.
Выбираем тут решение в области "realtime data distribution". Чтобы не возиться самим на низком уровне с WebSockets и все такое.
Нам показали Diffusion by Push Technology (см. pushtechnology.com/product-overview), выглядит очень аппетитно.
Кто что про него знает, пробовал?
И какие вообще есть альтернативы с похожей моделью подписки на быстро изменяющиеся данные (feed'ы по типу биржевых котировок и т.п.)?
Pusher Channels? PubNub?
Кто в теме - накидайте, плиз, что стоит посмотреть, а что - не стоит.
https://lightstreamer.com я вот это решение пару лет назад смотрел, сделали PoC, по нагрузке посмотрели, всё отлично. Ценовая модель у них только раньше у них была очень не гибкая, потому в итоге пришлось отказаться. Сейчас, насколько вижу, сделали в т.ч. тарификацию по человеко-часам уже. Так что могу рекомендовать как минимум посмотреть. Документация внятная, возможности ровно под вашу задачу, как я понимаю.
источник