Перейти к содержанию
VVizorLabsТехнический центрОсновной сайт

BOX 3.x

Схема взаимодействия компонентов BOX 3.x

Публичная карта пользовательских запросов, сервисных вызовов, событий Kafka, хранилищ и вычислительных нод BOX 3.0–3.2.

Для кого: архитектор / интегратор / devops
На этой странице

Карта взаимодействий

Схема показывает референсную архитектуру BOX 3.x внутри Docker Swarm: одну мастер-ноду и горизонтально масштабируемые вычислительные ноды. Точный состав контейнеров, адреса, внешние порты и количество вычислительных узлов определяются версией BOX и спецификацией поставки.

Основной маршрут читается сверху вниз: пользователь или интеграционный клиент входит через защищённый периметр, UI/API направляет команду прикладному сервису, мастер-нода сохраняет состояние и координирует выполнение, а вычислительные ноды обрабатывают видеопотоки и возвращают события через Kafka.

BOX 3.x / INTERACTION MAPОт запроса пользователя до события видеоаналитики
Запрос / данныеСобытия KafkaПротокол
01 / USERS

Оператор, администратор, интегратор

Работают через браузер или программный клиент в разрешённом сетевом контуре.

HTTPS · 443
02 / ACCESS

Периметр и аутентификация

TLS, роли и области видимости; при необходимости — VPN/ZTNA и корпоративный каталог.

HTTP / REST
03 / UI + API

Nginx, React и REST-to-gRPC

Веб-запрос превращается в вызов сервиса или команду для шины сообщений.

DOCKER SWARM / MASTER NODE · 1

Мастер-нода

Управление, прикладные сервисы и долговременные данные.

UI и API

Nginx · React · REST-to-gRPC

Доступ

auth · access · audit

Камеры и события

camera-storage · event-storage

Решения и статистика

decision-matrix · counters · dashboards

Отчёты и оповещения

PDF/XLSX · e-mail · alerts

Конфигурация и контроль

config · metrics · logs

gRPC / HTTPкоманды · запросы · управление
Kafka · 9092события · состояния · heartbeat
DOCKER SWARM / COMPUTE NODE · 1…N

Вычислительные ноды

Масштабируются по числу камер и профилю моделей.

Gateway

Вход в вычислительный контур

Media / WebRTC

Видеопотоки · mediaserver · coturn

Inference

Модели, детекции и события

Load balancer

Распределение камер по узлам

Models storage

Хранение и управление моделями

Images / snapshots

Изображения, превью и снимки

Monitoring / metrics

Состояние камер · Pushgateway

Report video

Извлечение видеофрагментов для отчётов

DATA LAYER

Хранилища разделены по профилю нагрузки

PostgreSQLТранзакционные данные
ClickHouseСобытия и аналитика
RedisКэш и оперативные состояния
S3 / MinIOИзображения, видео и файлы
EXTERNAL CONNECTIONS

Смежные корпоративные системы

AD / KerberosПользователи и группы
Почтовый серверОтчёты и уведомления
Карты и позиционированиеГеоданные и метки
Корпоративные системыСобытия и справочники через API

Путь пользовательского запроса

Оператор и администратор работают через браузер по HTTPS. Nginx завершает входящее соединение и отдаёт клиентское приложение React. Запросы интерфейса поступают в REST-слой, который преобразует их в вызовы внутренних gRPC-сервисов или команды для Kafka.

Права проверяются в доменах аутентификации и доступа. Область видимости должна ограничивать не только пункты интерфейса, но и предприятия, объекты, камеры, события и операции API. Корпоративная аутентификация может использовать AD, Kerberos и LDAPS.

Мастер-нода: управление и данные

В референсной топологии BOX 3.x мастер-нода существует в единственном экземпляре и объединяет прикладной и управляющий контур. Здесь находятся UI, API, Kafka, сервисы камер, событий, пользователей, ролей, аудита, матрицы решений, счётчиков, отчётов, оповещений, конфигурации и основные хранилища.

Сервисные имена вида st-camera-storage, st-event-storage, st-auth, st-access или st-decision-matrix описывают ответственность домена. В разных релизах один домен может состоять из нескольких процессов, поэтому интеграция должна опираться на поддерживаемый API, а не на прямой доступ к контейнеру или базе.

  • UI и маршрутизация запросов
  • Apache Kafka
  • Камеры, объекты и наблюдения
  • События, фильтрация и решения
  • Пользователи, роли и аудит
  • Данные, отчёты, метрики и журналы

Вычислительная нода: обработка видео

Вычислительный контур принимает видеопотоки, управляет медиасервисами, запускает модели и формирует результаты inference. inf-load-balancer распределяет камеры, inf-models-storage управляет моделями, inf-image-storage и inf-snapshot-processor работают с изображениями, а inf-monitoring и inf-pushgateway передают состояние и метрики.

Количество вычислительных нод увеличивается вместе с числом камер, FPS и ресурсоёмкостью моделей. Дополнительные компоненты обслуживают WebRTC и извлечение видеофрагментов для отчётов. Мастер-нода остаётся единой точкой управления, а обработка видео масштабируется горизонтально.

  • inf-domain-gateway
  • inf-mediaserver и inf-coturn
  • inf-inference
  • inf-load-balancer
  • inf-models-storage
  • inf-image-storage и inf-snapshot-processor
  • inf-monitoring и inf-pushgateway
  • inf-report-video-extractor

Два способа обмена

Большинство межсервисных взаимодействий BOX 3.x проходит через Apache Kafka: брокер передаёт события, изменения сущностей, heartbeat и результаты inference. HTTP и gRPC обслуживают синхронные запросы, а ui-rest-to-grpc преобразует входящий REST-вызов во внутреннюю команду.

Такое разделение уменьшает связанность сервисов. Отправитель события не ждёт завершения всех потребителей, а новый обработчик можно подключить к согласованному топику без изменения inference. При диагностике важно проверять оба пути: синхронный ответ сервиса и прохождение сообщения через брокер.

КаналНазначениеЧто проверять
HTTPS / RESTВнешние пользовательские и интеграционные запросыTLS, аутентификация, права, коды ответа
gRPC / HTTPСинхронные внутренние команды и чтение данныхДоступность сервиса, deadline, схема запроса
KafkaОсновной межсервисный обмен: события, состояния и heartbeatТопик, consumer lag, повторная обработка
ХранилищеФиксация операционных и аналитических данныхСоединение, место, задержка, резервирование

Хранилища и границы данных

PostgreSQL хранит транзакционные сущности и конфигурацию, ClickHouse — объёмные события и аналитические выборки, Redis — кэш и оперативные состояния, S3-совместимое хранилище — изображения, видео и файлы. Отдельные сервисы могут иметь собственную базу, чтобы изменения одного домена не связывали остальные.

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

Внешние системы

BOX может взаимодействовать с корпоративным каталогом, почтовой системой, картографическим сервисом, системами позиционирования, VMS и бизнес-приложениями. Эти связи находятся за границей продуктового контура и должны быть описаны в отдельных правилах обмена данными.

Публичная схема намеренно не содержит адресов серверов, служебных учётных записей и параметров конкретного предприятия. Для рабочей поставки они фиксируются в закрытой архитектурной схеме и эксплуатационном runbook.

Протоколы и порты

Ниже приведены типичные назначения из референсной топологии. Это внутренние сервисные порты, а не перечень портов для публикации наружу; доступность из конкретного сегмента определяется политикой безопасности поставки.

Компонент или протоколТипичное назначениеПорт в схеме
HTTPSВеб-интерфейс и внешний API443
HTTP / gRPCUI, gateway и внутренние сервисные вызовы80 / 3000
Apache KafkaОсновной межсервисный обмен9092
PostgreSQLОперационные данные и геоданные5432
RedisСессии, кэш и оперативное состояние6379
MinIO S3 APIИзображения, видео и файлы9000
PrometheusСбор метрик9090
GrafanaМетрики и дашборды3000
LokiСбор и агрегация журналов3100

Как диагностировать путь

Разбирайте проблему в том же порядке, в котором проходит запрос или событие. Сначала проверьте вход и права, затем ответ UI/API и целевого сервиса, после этого Kafka, вычислительный процесс, хранилище и конечного потребителя.

  • Доступен ли HTTPS и проходит ли аутентификация
  • Возвращает ли API ожидаемый код и схему
  • Работает ли gRPC-сервис и не истёк ли deadline
  • Опубликовано ли сообщение в нужный Kafka topic
  • Есть ли consumer lag или ошибка обработчика
  • Работают ли камера, медиасервис и inference
  • Записаны ли событие и медиадоказательство
  • Получил ли результат оператор или внешняя система