Breadcrumbs

Архитектура и функциональность модуля Analytics

1.1 (1).png
Архитектура модуля Analytics

Ключевые компоненты архитектуры Analytics и их функциональность:

Оркестратор (Analytics Orchestrator)

Оркестратор (Analytics Orchestrator) – программный модуль для распределения задач и видеопотоков от платформы VSaaS по воркерам аналитики. Оркестратор состоит из двух частей: серверной и клиентской.

Серверная часть выполняет следующие функции:

  • Обработка входящих запросов с видеопотоками с платформы.

  • Распределение видеопотоков по воркерам аналитики.

  • Управление видеопотоками.

  • Векторизация изображений и отправки векторов в базу данных векторов Tarantool.

Клиентская часть используется для сбора статистики по использованию серверных ресурсов и для управления жизненным циклом воркеров (запуск и остановка).

Основные процессы оркестратора:

  • Обработка и отправка видеопотоков на воркер аналитики.

  • Обновление ранее запущенного видеопотока на воркере аналитики.

  • Удаление ранее запущенного видеопотока на воркере аналитики.

  • Перераспределение видеопотоков аналитики, если воркер вышел из строя или не хватает вычислительных ресурсов для обработки видеопотоков.

  • Обработка изображений, получаемых с платформы.

  • Обработка статистики по загруженности серверов, получаемой от воркеров аналитики.

  • Обогащение событий аналитики с последующим сохранением в ClickHouse и предоставлением этих данных клиентской части.

Воркер (Analytics worker)

Воркер аналитики (Analytics worker) – это сервис для приема и обработки аудио- и видеопотоков с последующей генерацией событий аналитики. Компонент аналитики, реализующий получение запросов на обработку аудио- и видеопотоков, отправку событий аналитики, управление процессами аналитики и предоставление процессам аналитики необходимых ресурсов, в частности интерфейса для взаимодействия с AI-моделями.

Воркер аналитики является связкой из сущностей сервера моделей и клиентских приложений (препроцессоров). Препроцессоры выполняют следующие функции:

  • Захватывают и обрабатывают видеопотоки.

  • Подготавливают артефакты для обработки нейросетями.

  • Обращаются к серверу моделей для инференса нейросетей с артефактами и событиями, указывающими на параметры обработки.

  • Принимают события о результатах от сервера моделей.

1.2.png
Взаимодействие Orchestrator и Worker

Векторизатор (Vectorizator)

Векторизатор (Vectorizator) – компонент Analytics, предназначенный для преобразования изображений объектов в их векторное представление. Этот процесс осуществляется с помощью API, предоставляемого сервисом. Полученный вектор направляется для хранения и обработки в базы данных (БД векторов Tarantool и БД оркестратора MySQL) и последующей обработки мэтчером.

Пуш-сервер (Push server/Broker)

Пуш-сервер (Push server/Broker) – компонент в архитектуре Analytics, который выступает в роли брокера сообщений. Его главная задача – обеспечивать надёжную и эффективную коммуникацию между оркестратором и воркерами аналитики.

Процесс взаимодействия воркера с пуш-сервером:

  1. Запуск воркера аналитики:

  • Воркер регистрируется на оркестраторе. В оркестраторе создаётся сущность воркера, которой назначается уникальный UID.

  • Воркер регистрирует на пуш-сервере публичный канал. Название этого канала формируется по унифицированному шаблону: тип_аналитики.UID. Например, канал для сервиса распознавания лиц может иметь название face-recognition.5141239e-faaa-11eb-ac62-1e00da0e0552.

  1. Передача видеопотоков. После успешной регистрации оркестратор получает возможность использовать API пуш-сервера для отправки видеопотоков воркерам аналитики.

  2. В результате, воркер аналитики подключается к каналам stats и raw-events.

  • Канал stats: через этот канал воркер передаёт статистику по потребляемым ресурсам и состояние видеопотоков, которые на нем обрабатываются.

  • Канал raw-events: этот канал используется воркером аналитики для отправки сгенерированных событий.

Мэтчер (Matcher)

Мэтчер (Matcher) – компонент в модуле Analytics, который выполняет роль связующего звена и обработчика данных. Он получает "сырые" события (raw events) по каналу raw-events от воркеров аналитики через пуш-сервер. Таким образом, Matcher является ключевым узлом архитектуры, через который выполняется централизованный сбор результатов первичной обработки данных.

Основные функции мэтчера:

  • Сопоставление данных. Если мэтчер получает события, связанные с кейсами Распознавание лиц или Распознавание номерных знаков, он приступает к своей основной функции — сопоставлению. Он сравнивает полученные данные с эталонными образцами, которые хранятся в базе данных Tarantool. В результате этого сравнения мэтчер вычисляет процент достоверности или точность совпадения. Этот показатель критически важен для оценки качества распознавания.

  • Обогащение событий. Мэтчер отвечает за обогащение событий дополнительными данными. Это относится ко всем без исключения событиям, а не только к тем, что связаны с распознаванием. Этот процесс может включать добавление метаданных, информации о местоположении, времени или других параметров, которые делают событие более информативным и полезным для дальнейшего анализа.

  • Трансформация и отправка данных. После того как событие обработано и обогащено, мэтчер трансформирует его в новый формат и отправляет в канал events, откуда событие забирает платформа VSaaS и компонент events-collector.

Events Collector и база данных для хранения событий

Events Collector обрабатывает события из канала events пуш-сервера и загружает их в ClickHouse. ClickHouse используется как хранилище событий и обеспечивает доступ к данным платформе VSaaS. События в базе данных неизменяемы и записываются пакетами (batch-загрузкой). Подробнее о ClickHouse.