Архитектура системы

Описание взаимодействия

Ниже приводится общая схема архитектуры системы Центральный Пульт.

image

Сервер "Центральный Пульт" – серверная часть системы. Представляет собой набор микросервисов, которые производят обработку и анализ поступивших данных, в частности, управляют логикой смены состояний у объектов и связей. В состав серверной части также входят NGINX и REST-сервер.

Kafka – шина данных, которая обеспечивает обмен данными между микросервисами системы Центральный Пульт, отправляет Агентам список задач и принимает результат их выполнения.

Взаимодействие с устаревшими Агентами версии ниже 3.0 обеспечивается через Redis.

MongoDB – NoSQL-СУБД, которая является основным хранилищем данных о пользователях, объектах и связях, их свойствах, состояниях и авариях.

Redis – это хранилище данных в оперативной памяти (in-memory кэш), благодаря которому реализуется быстрый доступ к часто запрашиваемой информации.

OpenTSDB – специализированное хранилище временных рядов, в котором хранятся числовые метрики, используемые при построении графиков.

NGINX – это HTTP-сервер, обслуживающий запросы клиентов. Отдаёт статические элементы web-интерфейса (HTML, JavaScript, CSS), а также проксирует запросы от клиента к REST-серверу.

REST-сервер – один из микросервисов системы Центральный Пульт, который отвечает за обработку REST-запросов от клиентов. Через REST API клиент получает и изменяет информацию, обрабатываемую сервером системы Центральный Пульт.

Агент – это программа, устанавливаемая на виртуальный или физический сервер или иной узел сети и осуществляющая выполнение проверок, сбор и передачу информации серверу через шину данных Kafka.

Предусмотрена возможность создания пользовательского агента, который будет собирать метрики с локального хоста, опрашивать сторонние сервисы и отправлять данные на сервер через REST API.

Web-клиент и Мобильное приложение – это клиенты, с помощью которых пользователи системы взаимодействуют с сервером через REST API. В роли клиентов могут выступать, например, web-приложения и клиенты для мобильных операционных систем Android и iOS.

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

Внешние системы – это стороннее ПО, информационные системы или программные модули, которые могут взаимодействовать с сервером с помощью REST API.

Сервисы авторизации – наряду со встроенными механизмами, Центральный Пульт также поддерживает сторонние сервисы для авторизации пользователей в системе. Возможна интеграция с AD-сервером и Keycloak (см. LDAP и Интеграция с Keycloak).

Уведомления – сервер может уведомлять Пользователей об авариях и отправлять данные во Внешние Системы с использованием различных каналов, описанных в разделе Действия при смене состояний.

Отказоустойчивость и резервирование

Для обслуживания высокой вычислительной нагрузки система может быть реализована в отказоустойчивом исполнении с дублированием основных компонентов:

image

Производительность системы может быть увеличена следующими способами:

  • Добавление ресурсов виртуальной инфраструктуры;

  • Оптимизация параметров программного обеспечения.

Версии используемого и поддерживаемого ПО

  • Keycloak 1.0 и выше;

  • MongoDB 4.4 и выше;

  • NGINX 1.4 и выше;

  • Node.js 20.11.x и выше;

  • OpenTSDB 2.3 и выше;

  • Redis 3.0 и выше;

  • Socket.IO 4.0 и выше;

  • TypeScript 4.7.4 и выше.

  • KafkaJS 2.2.4