BOX 3.x
Схема взаимодействия компонентов BOX 3.x
Публичная карта пользовательских запросов, сервисных вызовов, событий Kafka, хранилищ и вычислительных нод BOX 3.0–3.2.
На этой странице
Карта взаимодействий
Схема показывает референсную архитектуру BOX 3.x внутри Docker Swarm: одну мастер-ноду и горизонтально масштабируемые вычислительные ноды. Точный состав контейнеров, адреса, внешние порты и количество вычислительных узлов определяются версией BOX и спецификацией поставки.
Основной маршрут читается сверху вниз: пользователь или интеграционный клиент входит через защищённый периметр, UI/API направляет команду прикладному сервису, мастер-нода сохраняет состояние и координирует выполнение, а вычислительные ноды обрабатывают видеопотоки и возвращают события через Kafka.
Оператор, администратор, интегратор
Работают через браузер или программный клиент в разрешённом сетевом контуре.
Периметр и аутентификация
TLS, роли и области видимости; при необходимости — VPN/ZTNA и корпоративный каталог.
Nginx, React и REST-to-gRPC
Веб-запрос превращается в вызов сервиса или команду для шины сообщений.
Мастер-нода
Управление, прикладные сервисы и долговременные данные.
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
Вычислительные ноды
Масштабируются по числу камер и профилю моделей.
Gateway
Вход в вычислительный контур
Media / WebRTC
Видеопотоки · mediaserver · coturn
Inference
Модели, детекции и события
Load balancer
Распределение камер по узлам
Models storage
Хранение и управление моделями
Images / snapshots
Изображения, превью и снимки
Monitoring / metrics
Состояние камер · Pushgateway
Report video
Извлечение видеофрагментов для отчётов
Хранилища разделены по профилю нагрузки
Смежные корпоративные системы
Путь пользовательского запроса
Оператор и администратор работают через браузер по 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 | Веб-интерфейс и внешний API | 443 |
| HTTP / gRPC | UI, 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
- Записаны ли событие и медиадоказательство
- Получил ли результат оператор или внешняя система