Быстрое и масштабируемое приложение в реальном времени (Является ли Hazelcast Jet хорошим способом?)
Фактически, в нашей архитектуре мы используем Hazelcast IMDG, чтобы делиться информацией о пользовательских действиях между несколькими узлами сервера.
Наша карта имеет следующую структуру: [key:String|value: CustomObject]
,
Теперь мы хотим расширить функциональность нашего продукта и разработать инструментальную панель в реальном времени, выполняющую поток данных в реальном времени, выполнив:
- Комплексная агрегация
- Непрерывный запрос
- и т.п.
В конце процесса мы хотим "отправить" результат в Vert.x Eventbus, а затем на уровень сокетов (SockJS), чтобы отобразить данные на информационной панели.
Нам необходимо настроить масштабируемую и быструю систему для обработки большого количества данных, таких как тысячи событий в секунду.
Первое изображение представляет нашу текущую (старую) архитектуру, второе изображение представляет нашу "целевую" архитектуру.
Что вы думаете о целевой архитектуре?
Является ли роль Hazelcast Jet правильной или есть другой способ выполнить эти операции (например, только с Hazelcast IMDG)?
Заранее спасибо.
1 ответ
Похоже, хорошо подходит для Hazelcast Jet. Вы, вероятно, будете использовать Sources.mapJournal()
обрабатывать записи по мере их добавления в IMap. Вы можете легко объединяться в раздвижные окна. Написание приемника шины событий Vert.x должно быть простым с SinkBuilder
, Тысяча событий / с - это низкий показатель, это зависит от того, сколько работы вы будете выполнять с каждым событием.