Skip to main content

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

ЛиманИСУ 2.0 построена на микросервисной архитектуре с контейнерным развёртыванием (Docker Compose).

Структурная схема

                    ┌─────────────────────────────────────────────────┐
│ ЦСД (виртуальный сервер) │
│ │
Пассер-В ──Eth──► │ ┌─────────────┐ ┌──────────────────┐ │
Пассер-Т ──Eth──► │ │ Ларус-10 │ │ NanoMQ / NATS │ │
│ │ (ПЛК) │──►│ (брокер) │ │
│ └─────────────┘ └────────┬─────────┘ │
│ │ │
│ ┌─────────────────────────┼──────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌────────────┐ ┌──────────────┐ ┌──────────┐│
│ │ Telemetry │ │ Diagnost │ │ lisu- ││
│ │ Service │ │ Backend │ │ crud ││
│ │ (FastAPI) │ │ (FastAPI) │ │ (Spring) ││
│ └─────┬──────┘ └──────┬───────┘ └────┬─────┘│
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ClickHouse│ │PostgreSQL│ │ Keycloak │ │
│ │(телемет.)│ │(конфиг.) │ │ (SSO) │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────────┐ │
│ │ limanisu- │ │ S3 (MinIO) │ │
│ │ front (React)│ │ (файлы, сигналы)│ │
│ └──────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────┘

Микросервисы

Python-сервисы (FastAPI)

СервисНазначениеИсточники данных
Telemetry ServiceПриём и хранение телеметрииREST API → ClickHouse
FastAPI Backend DiagnostОбработка сигналов из S3, спектральный анализS3, ClickHouse
Defect Detection ServiceОтслеживание вибрационных дефектовNATS events
Equipment Mode ServiceОпределение режима работы оборудованияNATS
Event Journal ServiceЖурнал событийClickHouse
Notification ServiceУведомления (email, SMS)NATS events
Telemetry Limits ServiceКонтроль порогов телеметрииNATS
Bearing Reference BookСправочник подшипниковPostgreSQL
Defects Reference BookСправочник дефектовPostgreSQL
Remaining Resource ForecastПрогноз остаточного ресурсаЛинейная/экспоненциальная модели
Ping for LarusМониторинг доступности компонентовPing/HTTP

Java-сервисы (Spring)

СервисНазначение
lisu-crudУправление пользователями, деревом оборудования, телеметрией, интеграция с Keycloak
report-distributorАвтоматическая генерация технических отчётов
backup-distributorРезервное копирование и восстановление

Frontend (React)

КомпонентНазначение
limanisu-frontВеб-интерфейс мониторинга и диагностики, авторизация через Keycloak

Протоколы и потоки данных

Входные данные от устройств

ИсточникПротоколДанные
Пассер-В → ЛарусModbus TCPВиброускорение, виброскорость, сырой сигнал (FFT выполняется на Ларусе)
Пассер-Т → ЛарусModbus TCPТок, напряжение (3 фазы), мощность
Ларус → ЦСДMQTTАгрегированная телеметрия
Ларус → S3TFTP / S3Сырые сигналы для детального анализа
Ларус → ЦСДUDPБыстрая передача данных реального времени

Внутренние сообщения (NATS/NanoMQ)

Микросервисы обмениваются событиями через NATS:

  • Превышение порогов → Notification Service
  • Новый сигнал в S3 → Diagnost Backend
  • Изменение режима оборудования → Equipment Mode Service
  • Обнаружение дефекта → Event Journal Service

Базы данных

PostgreSQL

Хранение конфигурации, справочников и пользовательских данных:

СхемаНазначение
lisuДерево оборудования, точки измерения, пользователи
defects_reference_bookКаталог дефектов с частотными признаками
bearing_reference_bookКаталог подшипников (размеры, частоты дефектов)

ClickHouse

Хранение временных рядов:

ТаблицаНазначение
telemetryТелеметрия: RMS, пик-фактор, температура, ток
eventsЖурнал событий: превышения, аварии, действия
defectsОбнаруженные дефекты с привязкой к оборудованию

Развёртывание

Все сервисы запускаются через Docker Compose:

docker compose up -d

Конфигурация через переменные окружения (.env):

  • Адреса БД (PostgreSQL, ClickHouse)
  • Параметры NATS/NanoMQ
  • Credentials S3 (MinIO)
  • Keycloak realm и client

Подробнее: Руководство по развёртыванию