Быстрое и масштабируемое приложение в реальном времени (Является ли Hazelcast Jet хорошим способом?)

Фактически, в нашей архитектуре мы используем Hazelcast IMDG, чтобы делиться информацией о пользовательских действиях между несколькими узлами сервера.

Наша карта имеет следующую структуру: [key:String|value: CustomObject],

Теперь мы хотим расширить функциональность нашего продукта и разработать инструментальную панель в реальном времени, выполняющую поток данных в реальном времени, выполнив:

  1. Комплексная агрегация
  2. Непрерывный запрос
  3. и т.п.

В конце процесса мы хотим "отправить" результат в Vert.x Eventbus, а затем на уровень сокетов (SockJS), чтобы отобразить данные на информационной панели.

Нам необходимо настроить масштабируемую и быструю систему для обработки большого количества данных, таких как тысячи событий в секунду.

Первое изображение представляет нашу текущую (старую) архитектуру, второе изображение представляет нашу "целевую" архитектуру.

Старая архитектура

Целевая Архитектура



Что вы думаете о целевой архитектуре?

Является ли роль Hazelcast Jet правильной или есть другой способ выполнить эти операции (например, только с Hazelcast IMDG)?


Заранее спасибо.

1 ответ

Похоже, хорошо подходит для Hazelcast Jet. Вы, вероятно, будете использовать Sources.mapJournal() обрабатывать записи по мере их добавления в IMap. Вы можете легко объединяться в раздвижные окна. Написание приемника шины событий Vert.x должно быть простым с SinkBuilder, Тысяча событий / с - это низкий показатель, это зависит от того, сколько работы вы будете выполнять с каждым событием.

Другие вопросы по тегам