Трубопровод RabbitMQ - MongoDB - PullRequest
0 голосов
/ 13 мая 2019

У меня есть приложение C ++ (производитель данных), которое производит около 5000-10000 событий / с в течение 12 часов в день в структурированном формате (всегда одни и те же поля). Я храню эти события в обычных файлах, которые я анализирую (пакетно) с помощью python-DASK.

У меня есть новые требования для создания веб-приложения, которое должно отображать метрики в хорошем формате из этих событий. Также необходимо предоставить эти события команде исследователей, которые хотят подключить некоторые модели машинного обучения к данным в реальном времени.

Я отправляю все эти события в RabbitMQ и оттуда несколько потребителей:

1 -  My Node back end to feed the front end dashboards 
2 - One scrip to insert batches of events into MongoDB
3 - Machine learning freeze models making prediction in real time

Все работает в контейнерах Docker на одном сервере с 24 ядрами, 128 ОЗУ и хранилищем SSD.

Я начал думать, что, возможно, я могу исключить RabbitMQ, напрямую сохраняя события из приложения C ++ в MongoDB, и запрашивать Mongo у каждого потребителя.

Алгоритмы ML делают прогнозы каждую секунду, а я обновляю внешние панели мониторинга каждую секунду. Время, которое Монго может обрабатывать (в среднем 5000 операций вставки в секунду, 4 операции чтения в секунду)

Хотелось бы узнать ваше предложение по этому поводу, только что упомянутое, что я выполняю агрегацию по событиям, начиная с указанных 5000 в секунду, заканчивается 5 событиями после агрегации. Эта агрегация выполняется для пользовательских сценариев (серверная часть и сценарии ML), но с новым подходом будет реализован запрос.

С уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...