Быстрое и масштабируемое приложение в реальном времени (Является ли Hazelcast Jet хорошим способом?) - PullRequest
0 голосов
/ 13 февраля 2019

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

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

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

  1. Сложное агрегирование
  2. Непрерывный запрос
  3. и т. Д.

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

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

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

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

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



Что вы думаете об архитектуре target ?

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


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

1 Ответ

0 голосов
/ 14 февраля 2019

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

...