Add some ivideon schemes
This commit is contained in:
parent
a34a290ae7
commit
fe1f7b31b4
4 changed files with 148 additions and 0 deletions
|
|
@ -16,11 +16,14 @@ package "api_concept.entities/maas" {
|
||||||
|
|
||||||
package "maas/api/impl/organization" {
|
package "maas/api/impl/organization" {
|
||||||
class MaasOrganization {
|
class MaasOrganization {
|
||||||
|
+ {field} PERMISSIONS_COLLECTION = db.main().permission_grants
|
||||||
|
+ share_grant(\n grantee_id,\n permission\n)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
package "api_concept.backend/impl/permission_grant" {
|
package "api_concept.backend/impl/permission_grant" {
|
||||||
class PermissionGrant {
|
class PermissionGrant {
|
||||||
|
+ {field} COLLECTION = db.main().ivideon.permission_grants
|
||||||
+ find()
|
+ find()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
60
ivideon/puml/9179/analytics_node.puml
Normal file
60
ivideon/puml/9179/analytics_node.puml
Normal file
|
|
@ -0,0 +1,60 @@
|
||||||
|
@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
|
||||||
34
ivideon/puml/9179/analytics_node_stream.puml
Normal file
34
ivideon/puml/9179/analytics_node_stream.puml
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
@startuml
|
||||||
|
title Сценарий: запуск стрима, назначение канала и переход в streaming
|
||||||
|
|
||||||
|
participant CENTRAL as "Централ (API5)"
|
||||||
|
participant CTRL as "analytics-controller"
|
||||||
|
database DB as "DB (analytics.channels)"
|
||||||
|
participant PROXY as "analytics-video-proxy"
|
||||||
|
participant VNODE as "Видеоноды"
|
||||||
|
participant CLVS as "cloud-vs"
|
||||||
|
|
||||||
|
== Синхронизация с централом ==
|
||||||
|
CTRL -> CENTRAL : GET /cameras (список камер на обработку)\nGET /cloud-analytics/settings
|
||||||
|
CENTRAL --> CTRL : список камер, настройки
|
||||||
|
|
||||||
|
== Назначение канала ==
|
||||||
|
CTRL -> DB : upsert channel{cameraId, state=stream_awaited,\nsettings, rev, ...} -> analytics.channels
|
||||||
|
|
||||||
|
== PROXY подхватывает канал ==
|
||||||
|
PROXY -> DB : poll analytics.channels
|
||||||
|
DB --> PROXY : channel{state=stream_awaited}
|
||||||
|
PROXY -> DB : update channel.state=streaming,\nack={rev, ts}
|
||||||
|
|
||||||
|
== Получение видео и проксирование ==
|
||||||
|
PROXY -> CENTRAL : API5 запрос параметров доступа к потоку
|
||||||
|
CENTRAL --> PROXY : креденшелы/URL
|
||||||
|
PROXY -> VNODE : запрос видеопотока (через выданные параметры)
|
||||||
|
VNODE --> PROXY : FLV поток (формат видеонод)
|
||||||
|
PROXY -> CLVS : проксирование FLV в cloud-vs (ingest)
|
||||||
|
|
||||||
|
note right of CLVS
|
||||||
|
cloud-vs получает поток в формате
|
||||||
|
видеонод (FLV) и готов генерировать события
|
||||||
|
end note
|
||||||
|
@enduml
|
||||||
51
ivideon/puml/9179/general.puml
Normal file
51
ivideon/puml/9179/general.puml
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
@startuml
|
||||||
|
title Разбор ноды ssh ar1-misc01.extcam.com
|
||||||
|
|
||||||
|
|
||||||
|
file services {
|
||||||
|
component "zabbix-agent2"
|
||||||
|
component "syslog-ng"
|
||||||
|
card ivideon {
|
||||||
|
component "ivideon-analytics-carrier" as i_analy_c #red
|
||||||
|
component "ivideon-server-cloud-vca"
|
||||||
|
component "ivideon-analytics-heatmaps"
|
||||||
|
component "ivideon-sentry-proxy"
|
||||||
|
component iavc [
|
||||||
|
<b>ivideon-analytics-visitor-counter</b>
|
||||||
|
====
|
||||||
|
Обёртка для облачного счётчика посетителей,
|
||||||
|
использует flv-поток для аналитики
|
||||||
|
]
|
||||||
|
component iavp [
|
||||||
|
<b>ivideon-analytics-video-proxy</b>
|
||||||
|
====
|
||||||
|
сервис, проксирующий поток от видеонод в облачный видеосервер
|
||||||
|
]
|
||||||
|
component iaes [
|
||||||
|
<b>ivideon-analytics-event-saver</b>
|
||||||
|
====
|
||||||
|
Cервис, выполняющий доставку в облако событий облачного видеосервера,
|
||||||
|
предварительно обработанных сервисом ivideon-analytics-controller.
|
||||||
|
]
|
||||||
|
component iac_card [
|
||||||
|
<b>ivideon-analytics-controller</b>
|
||||||
|
====
|
||||||
|
Получение от централа актуального списка камер на обработку
|
||||||
|
....
|
||||||
|
Получение и обновление настроек облачных модулей видеоаналитики
|
||||||
|
....
|
||||||
|
Обработка событий от облачного видеосервера/счётчика посетителей
|
||||||
|
....
|
||||||
|
Реагирование на ошибки ivideon-analytics-video-proxy
|
||||||
|
....
|
||||||
|
Оповещение централа о различных ошибках
|
||||||
|
....
|
||||||
|
Передача метрик в централ
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
note top of i_analy_c
|
||||||
|
Данный сервис не хочет подниматься
|
||||||
|
end note
|
||||||
|
|
||||||
|
@enduml
|
||||||
Loading…
Reference in a new issue