sandbox/ivideon/puml/9179/analytics_node.puml
2025-08-28 15:38:10 +03:00

60 lines
3.2 KiB
Text
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@startuml
title Узел аналитики: взаимодействие сервисов и внешних систем
skinparam componentStyle rectangle
skinparam wrapWidth 200
skinparam maxMessageSize 200
'=== Внешние системы ===
cloud "Централ (API5)" as CENTRAL
cloud "Видеоноды" as VNODE
'=== Узел аналитики ===
node "Analytics Node" {
[ivideon-analytics-controller\n(analytics-controller)] as CTRL
[ivideon-analytics-video-proxy\n(analytics-video-proxy)] as PROXY
[ivideon-event-saver\n(analytics-event-saver)] as SAVER
[ivideon-cloud-vs\n(cloud-vs)] as CLVS
[ivideon-analytics-visitor-counter\n(analytics-visitor-counter)] as VC
database "База данных\nMongoDB\ncollections:\n- analytics.channels\n- analytics.events" as DB
}
'=== Связи с Централом (API5) ===
CTRL -down-> CENTRAL : Периодическая синхронизация\n• Получение списка камер\n• Получение/обновление настроек облачных модулей\n• Оповещение об ошибках\n• Передача метрик
PROXY -down-> CENTRAL : Запросы к API5 для получения\nпараметров/доступа к видеопотоку\n(со стороны видеонод)
'=== Поток видео ===
PROXY --> CLVS : Проксирование видеопотока\n(FLV в формате видеонод)
PROXY ..> VNODE : Доступ к потокам с видеонод\n(через API5 Централа)
'=== WebSocket-взаимодействие ===
CTRL -left-> PROXY : WebSocket (к серверу PROXY)\nУведомления об ошибках ivideon-analytics-video-proxy
CLVS -right-> CTRL : WebSocket (к серверу CLVS)\nСобытия облачного видеосервера
'=== Счётчик посетителей ===
VC --> CTRL : События счётчика (по FLV-потоку)\nдля аналитики
'=== Синхронизация состояния через БД ===
CTRL -down-> DB : Обновление состояния каналов\n(collection: analytics.channels)
PROXY -down-> DB : Периодическая вычитка состояния каналов\n• При state=stream_awaited ⇒ выставляет state=streaming\n• Выставление acknowledgment-статусов
PROXY -left-> CTRL : Логическая синхронизация состояния\nчерез общую БД (channels)
'=== Работа с событиями ===
CTRL -down-> DB : Обработка и запись событий\n(collection: analytics.events)
SAVER -down-> DB : Периодическая вычитка событий
SAVER -down-> CENTRAL : Доставка событий в API5\n(тип события ⇒ соответствующий запрос)
'=== Легенда ===
legend right
Каналы связи
● HTTP/API: сплошная стрелка
● WebSocket: подпись "WebSocket"
● БД-синхронизация: стрелка к DB с пояснением
Коллекции
analytics.channels — состояние каналов/ACK
analytics.events — события для отправки в облако
endlegend
@enduml