Мультисервисная архитектура

Система Omnicube построена на высокоэффективной мультисервисной архитектуре и использует потоковую обработку данных. Система включает в себя несколько десятков сервисов и подсистем. Для обмена информацией между сервисами и компонентами системы используется шина данных Apache Kafka с подтверждением (гарантией) доставки сообщений.

Для хранения данных используется высокопроизводительное кластеризуемое OLAP-хранилище ClickHouse. Это позволяет обеспечить стабильность и отказоустойчивость, сохранность данных и возможность масштабирования. Система имеет высокую производительность и позволяет записывать и обрабатывать десятки тысяч сообщений в секунду. 

Сервис статистики и анализа данных Omnicube.Stat позволяет обрабатывать значительные объемы информации для построения необходимых пользовательских отчетов. Имеется возможность расчета дифференциальных и интегральных показателей произвольных параметров и их сочетаний на любых временных интервалах, и подготовки необходимых данных по формирования отчетов. 

Для сбора данных с конечных устройств и вспомогательных расчетов предусмотрены отдельные сервисы Omnicube.Grabbing, Omnicube.Learning и др., которые в зависимости от задачи могут накапливать, предобрабатывать и передавать данные. Микросервисная архитектура позволяет легко интегрировать дополнительные функциональные модули.

Сервис тревожных событий Omnicube.Notify непрерывно производит анализ поступающих данных и инициирует срабатывание событий по предопределенным правилам. Одновременно могут контролироваться десятки тысяч параметров и их сочетаний на основании редактируемых алгоритмических правил. В зависимости от настроек осуществляется формирование и отправка соответствующих тревожных уведомлений пользователям по различным каналам связи (Telegram, SMS, E-mail).

Модули системы имеют API, что позволяет легко интегрироваться с внешними системами, например: 1С, ERP, CRM, самописные системы (текстовые и CSV файлы, HTTP, REST API, брокеры сообщений и т.п.) в виде JSON, XML и прочих популярных форматах обмена данными. 

Стек технологий, используемых в основных и вспомогательных сервисах: GO, Python, C++, PostgreSQL, Clickhouse, Kafka, RabbitMQ, Redis, Nginx, Centrifugo и др.