Архитектура системы
ЛиманИСУ 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 | Агрегированная телеметрия |
| Ларус → S3 | TFTP / 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
Подробнее: Руководство по развёртыванию