Раздел 3. Описание постановки задач¶
Раздел описывает архитектуру решения BOX5-DIT-MGSN на уровне постановки задач: состав подсистем, основные функции, межсервисные и внешние взаимодействия, границы ответственности и ограничения продуктового контура. Детальные схемы вынесены в приложения, чтобы основной раздел оставался читаемым и не дублировал полный реестр контейнеров.
Связанные схемы и реестры приведены в Приложении В, Приложении А, Приложении Б и Приложении Г.
3.1. Архитектура верхнего уровня¶
BOX5-DIT-MGSN построена как модульное Docker Compose-решение. На верхнем уровне система разделена на пользовательский контур, контур статистики и событий, контур видеоаналитики и инференса, интеграционный контур с системами заказчика, событийную шину, хранилища данных, наблюдаемость и песочницу подготовки NRI-сценариев.
Основные архитектурные принципы:
- пользователи работают через единый web-вход
ui-nginxи API-шлюзui-rest-to-gprc; - синхронные пользовательские операции выполняются через HTTP/REST, GraphQL, WebSocket и HTTP/gRPC вызовы внутренних сервисов;
- асинхронный обмен событиями, командами, audit-записями и статусами выполняет
Kafka-контур
kafka-domain; - домены хранят собственное состояние в выделенных PostgreSQL, Redis и ClickHouse sidecar-хранилищах;
- медиафайлы, изображения, отчётные файлы и временные объекты размещаются в MinIO/DTS и файловых каталогах контура;
- интеграционный контур
severstalобеспечивает обмен с ПК-КОТ, CSVN/VMS и АСУ ТП; - разработка и проверка NRI-сценариев выполняются в
node-red-sandboxперед переносом сценариев в продуктовый контур.
Граница решения проходит по опубликованным входам решения, внешним системам и промышленным источникам данных. Внутри границы находятся Docker Compose-домены, их внутренние сети, sidecar-хранилища и служебные компоненты. Внешние системы и источники данных перечислены в Приложении В.
Схема функциональной структуры верхнего уровня (С2), роли пользователей, источники данных и ключевые потоки приведены в Приложении А.
3.2. Архитектура системы и подсистем¶
Таблица является достаточной для ПД как укрупнённая архитектурная трассировка: она связывает функциональные подсистемы с ключевыми контейнерами, но не дублирует полный реестр сервисов, приведённый в Приложении Г.
| Подсистема | Назначение | Основные функции | Входящие и исходящие взаимодействия | Используемые сервисы | Используемые данные | Зависимости и ограничения |
|---|---|---|---|---|---|---|
| Пользовательский контур | Предоставляет пользователям web-интерфейс и единую browser-facing API поверхность. | Загрузка SPA, проксирование /api/*, GraphQL и WebSocket, маршрутизация в домены statistics, inference, severstal, файловые и sandbox-маршруты. |
Входящие: HTTP/HTTPS от браузера. Исходящие: HTTP/gRPC/REST к backend-доменам, Kafka audit/ws, S3/MinIO, ClickHouse для отдельных analytics-маршрутов. | ui-nginx, ui-react, ui-rest-to-gprc; как проксируемые upstream используются ds-minio и nr-sbx-nginx. |
UI-конфигурация, JWT, события интерфейса, файлы и медиа по API. | Критичен для интерактивной работы. Отказ ui-nginx или ui-rest-to-gprc блокирует web UI и большинство API-действий. |
| Авторизация и доступ | Управляет входом пользователей, локальными JWT, ролями и прикладными доступами. | Локальный вход, Keycloak/OIDC-интеграция, управление пользователями, группами доступа и правами на камеры/объекты. | Входящие: REST/gRPC через ui-rest-to-gprc. Исходящие: OIDC к Keycloak, SMTP для сброса пароля, Kafka для privilege/audit-событий, PostgreSQL/Redis. |
st-auth, st-access, st-auth-report-pdf-xlsx-generator; sidecar-хранилища st-auth-postgres, st-auth-redis, st-access-postgres; backup-sidecar для PostgreSQL. |
Пользователи, роли, группы доступа, история входов, privileges. | Параметры Keycloak/OpenID Connect задаются в эксплуатационной конфигурации; локальные JWT выпускает st-auth. |
| Статистика и события | Хранит жизненный цикл событий, нарушения, отчёты и аудит. | Приём событий инференса, хранение событий и статусов, отчёты PDF/XLSX/CSV, audit history и комментарии к событиям. | Входящие: Kafka events/audit, REST/gRPC от gateway. Исходящие: Kafka, PostgreSQL, ClickHouse, MinIO/DTS, SMTP/email. | st-camera-storage, st-event-storage, st-event-statistic, st-audit, st-report-email, st-report-pdf-xlsx-generator, st-comments, st-virt-cam-video-upload; доменные PostgreSQL, ClickHouse и Redis sidecar. |
События, нарушения, статусы, audit-записи, отчёты, изображения и видеофрагменты. | Канонический audit хранится в st-audit; отчётные сервисы зависят от доступности событийных хранилищ и файловых объектов. |
| Видеоаналитика и инференс | Выполняет получение видео, подготовку кадров, запуск NRI-сценариев и публикацию событий. | Работа с RTSP/live-потоками и виртуальными камерами, медиасервер, балансировка камер, NRI-инференс, управление изображениями, видеофрагментами, ресурсами и flows. | Входящие: RTSP от камер, HTTP/MP4 виртуальных камер, REST/gRPC от gateway, flow/model updates. Исходящие: Kafka events/heartbeats, MinIO/S3, PostgreSQL/Redis. | inf-mediaserver, inf-load-balancer (реализация load-balancer2), inf-nri-inference, inf-monitoring, inf-image-storage, inf-report-video-extractor, inf-flows-manager, inf-vl-resource-manager, mm-conversion, yolo-conversion, inf-pushgateway, inf-domain-gateway, inf-coturn, inf-guardant-control-center; PostgreSQL/Redis sidecar. |
Потоки камер, кадры, изображения, видеофрагменты, версии flows, heartbeat-состояния. | Рабочий runtime использует filesystem и vlflow; доступность GPU и медиасервера критична для online-инференса. |
| Интеграционный контур с системами заказчика | Обеспечивает обмен с промышленными и справочными системами заказчика и хранит предметные справочники сценариев. | Интеграция с ПК-КОТ, CSVN/VMS, АСУ ТП; синхронизация камер и оргструктуры; хранение сценариев, ассетов, запусков, реестра моделей и переводов. | Входящие: customer-domain API от gateway, данные ПК-КОТ, CSVN/VMS и АСУ ТП. Исходящие: HTTP push статусов в ПК-КОТ, Kafka в основной контур, PostgreSQL/Redis/MinIO. | svr-severstal-integration, svr-postgres-pk-kot, svr-severstal-org-sync, svr-severstal-nifi-integration, svr-asutp, svr-asutp-kafka, svr-asutp-schema-registry, svr-asutp-redis, svr-scenario-storage, svr-lite-scenario-storage, svr-asset-storage, svr-launch-storage, svr-models-registry, svr-translations-store, svr-security-notice; доменные PostgreSQL sidecar. |
Справочники нарушений и зон, топология камер, архивные видео, ASUTP-сигналы, сценарии, ассеты, запуски. | CSVN/VMS-интеграция поддерживает локальный connector VIRTUAL; реальные Cisco/Milestone/Macroscop endpoints применяются при настройке соответствующих подключений. |
| Событийная шина | Обеспечивает асинхронный обмен между доменами. | Kafka topics для событий инференса, audit, команд, статусов, heartbeat, синхронизации справочников и уведомлений. | Входящие и исходящие Kafka-клиенты из statistics, inference, severstal, gateway и отдельных сервисов. |
inf-kafka; выделенные брокеры svr-asutp-kafka и nr-sbx-kafka используются в своих контурах и не заменяют основную шину. |
Событийные protobuf/JSON payloads, audit-сообщения, статусы и команды. | Single-node Kafka без внешней публикации порта; доступна внутри bx_default. |
| Хранилища данных | Предоставляет доменным сервисам постоянные, аналитические и файловые хранилища. | PostgreSQL для транзакционных данных, ClickHouse для аналитики, Redis для кэшей/очередей/locks, MinIO/DTS для файлов и медиа. | Входящие: SQL/Redis/S3/HTTP от доменных сервисов. Исходящие: ответы клиентам в рамках внутренних соединений. | ds-minio, ds-data-temporary-storage, ds-data-temporary-storage-redis, ds-domain-gateway; доменные PostgreSQL, ClickHouse и Redis sidecar сервисов statistics, inference, severstal и node-red-sandbox. |
Пользователи, камеры, события, отчёты, сценарии, модели, файлы, изображения, видео. | Большинство хранилищ доступны только внутри Docker-сети. Прямой MinIO и ClickHouse-порт опубликованы как технические входы контура, не как пользовательский API. |
| Наблюдаемость | Обеспечивает сбор метрик и логов контура. | Prometheus scraping /metrics, Loki/Docker logs. |
Входящие: /metrics от сервисов и Docker log driver. Исходящие: эксплуатационные запросы к метрикам и журналам. |
log-prometheus, log-loki; источники данных - /metrics endpoints сервисов и Docker Loki log driver. |
Метрики и логи. | Доступность Prometheus и Loki критична для эксплуатационного контроля метрик и логов. |
| Песочница Node-RED | Изолирует разработку, проверку и перенос NRI-сценариев. | UI sandbox, backend, Node-RED VL, Jupyter/NRI, Celery workers, Flower, converters, sandbox Kafka/Redis и общие volumes. | Входящие: /sandbox/ через ui-nginx, прямой технический Jupyter-порт. Исходящие: Box API для публикации flows, MinIO, sandbox Kafka/Redis, файловые volumes. |
nr-sbx-nginx, nr-sbx-frontend, nr-sbx-backend, nr-sbx-node-red-vl, nr-sbx-nri, nr-sbx-celery, nr-sbx-flower, nr-sbx-mm-conversion, nr-sbx-yolo-conversion, nr-sbx-kafka, nr-sbx-redis. |
Flows, модели, configs, результаты пробного запуска, временные артефакты. | Используется для подготовки сценариев перед переносом в продуктовый контур. |
3.3. Сервисная архитектура¶
Сервисная архитектура построена как набор Docker Compose-доменов целевого
контура. Основная сеть решения -
bx_default; песочница сценариев использует отдельную сеть node-red-sandbox.
| Compose-домен | Роль в архитектуре | Ключевые сервисы | Основные соединения |
|---|---|---|---|
ui-rest |
Edge и API gateway. | ui-nginx, ui-react, ui-rest-to-gprc. |
HTTP/HTTPS от пользователей; REST/GraphQL/WS к gateway; HTTP/gRPC/REST к backend-доменам; S3 proxy; /sandbox/ proxy. |
statistics |
Пользователи, доступы, камеры, события, отчёты и аудит. | st-auth, st-access, st-camera-storage, st-event-storage, st-event-statistic, st-audit, st-report-*, st-report-email, st-comments. |
HTTP/gRPC от gateway; Kafka; PostgreSQL; ClickHouse; Redis; MinIO; SMTP. |
inference |
Рабочий видеоконтур и NRI-инференс. | inf-mediaserver, inf-load-balancer (load-balancer2), inf-nri-inference, inf-monitoring, inf-image-storage, inf-report-video-extractor, converters, Guardant, Coturn. |
RTSP/HTTP media input; HTTP/gRPC от gateway; Kafka events/heartbeat; MinIO; PostgreSQL/Redis; GPU runtime. |
extended-inference |
Управление версиями flows и ресурсами инференса. | inf-flows-manager, inf-vl-resource-manager, Redis sidecar. |
HTTP/gRPC от gateway; связи с inf-nri-inference; PostgreSQL/Redis; модельные и resource-состояния. |
severstal |
Интеграции с системами заказчика и предметные справочники. | svr-severstal-integration, svr-asutp, svr-asutp-kafka, svr-asutp-schema-registry, svr-severstal-org-sync, svr-scenario-storage, svr-lite-scenario-storage, svr-asset-storage, svr-launch-storage, svr-models-registry, svr-translations-store, svr-postgres-pk-kot. |
Customer-domain API; ПК-КОТ PostgreSQL/HTTP; CSVN/VMS API; АСУ ТП Kafka/Avro; основная Kafka; PostgreSQL/Redis/MinIO. |
kafka-domain |
Основная событийная шина решения. | inf-kafka. |
Kafka внутри bx_default. |
data-storage |
Файловые и объектные данные. | ds-minio, ds-data-temporary-storage, ds-domain-gateway, Redis sidecar. |
S3 API, HTTP/DTS, nginx proxy /api/s3*, доменные файловые операции. |
elk-log |
Наблюдаемость. | log-prometheus, log-loki. |
Prometheus /metrics, Docker Loki driver, технический Loki API. |
node-red-sandbox |
Песочница разработки сценариев. | nr-sbx-nginx, frontend, backend, node-red-vl, nr-sbx-nri, Celery, Flower, converters, sandbox Kafka/Redis. |
/sandbox/ через ui-nginx, отдельная сеть node-red-sandbox, shared volumes, Box API при публикации flows. |
Детальный реестр сервисов, их входящих и исходящих вызовов, хранилищ, конфигурации, мониторинга и известных ограничений приведён в Приложении Г.
3.4. Взаимодействие со смежными системами¶
Смежные системы и источники данных используются только через выделенные точки интеграции.
| Смежная система / источник | Узел взаимодействия BOX5-DIT-MGSN | Протоколы | Данные и назначение | Статус применения |
|---|---|---|---|---|
| IP-камеры | inf-mediaserver, inf-load-balancer, inf-nri-inference |
RTSP; downstream HLS/WebRTC внутри BOX5-DIT-MGSN | Live-видеопотоки для online-инференса и формирования событий. | Применяется как базовый источник видео. |
| CSVN/VMS Cisco, Milestone, Macroscop | svr-severstal-integration, svr-severstal-org-sync, st-camera-storage, st-virt-cam-video-upload |
Cisco/Milestone SOAP/WSDL; Macroscop HTTP; локальный connector VIRTUAL |
Топология камер, обязательные камеры, архивная информация и архивные видеофрагменты. | Интеграция предусмотрена; поддерживается локальный connector VIRTUAL. |
| Загруженные видеозаписи / виртуальные камеры | ui-nginx, ui-rest-to-gprc, st-virt-cam-video-upload, inf-mediaserver |
HTTP multipart upload, HTTP/MP4, gRPC | Анализ видеофайлов без постоянного live-потока с физической камеры. | Применяется для проверки и анализа записей. |
| ПК-КОТ | svr-postgres-pk-kot, svr-severstal-integration, svr-severstal-org-sync |
PostgreSQL read-only, HTTP push | Справочники нарушений, зон, камер и передача подтверждённых событий/статусов. | Применяется; источник и push URL задаются эксплуатационной конфигурацией. |
| АСУ ТП | svr-asutp, svr-asutp-kafka, svr-asutp-schema-registry |
Kafka, Avro, Schema Registry HTTP API | _meta и _data сигналы, расчёт состояний ASUTP-юнитов, публикация результата в основной контур BOX5-DIT-MGSN. |
Применяется; collector включён. |
| Keycloak / OpenID Connect | Браузер пользователя, st-auth, ui-rest-to-gprc |
OIDC/OAuth2 authorization code, HTTP/gRPC | SSO-авторизация и выпуск локальных JWT BOX5-DIT-MGSN. | Применяется в продуктовом контуре; параметры внешнего провайдера задаются эксплуатационной конфигурацией. |
| SMTP / Email | st-report-email, st-auth |
SMTP | Email-уведомления, отчёты и служебные письма, включая сброс пароля. | Применяется для служебных уведомлений и отчётов. |
| Внешние API получателей данных | svr-severstal-integration, сервисы событий и отчётов |
HTTP/REST, S3/HTTP по конкретному потоку | Передача событий, статусов, отчётов и медиа внешним получателям данных. | Применяется по прикладным интеграционным сценариям. |
Полный реестр внешних систем приведён в Приложении В.
3.5. Диаграмма взаимодействия сервисов¶
Схема соединений (С4) и описание основных сетевых взаимодействий вынесены в Приложение Б. Приложение фиксирует:
- общую схему соединений по группам сервисов;
- детализацию соединений по доменам
ui-rest,statistics,inference,extended-inference,severstal, инфраструктурным доменам иnode-red-sandbox; - Docker-сети
bx_defaultиnode-red-sandbox, опубликованные порты и границы внутренних соединений; - междоменные REST/gRPC/Kafka/S3/SQL-соединения;
- внешние соединения с IP-камерами, CSVN/VMS, виртуальными камерами, ПК-КОТ, АСУ ТП, Keycloak/OIDC, SMTP/Email и внешними API.
Для эксплуатационных работ схема С4 используется совместно с реестром сервисов из Приложения Г: схема показывает направления соединений, а реестр раскрывает конкретные сервисы, протоколы, хранилища, конфигурационные параметры и ограничения.