Ключевые компоненты архитектуры Analytics и их функциональность:
Оркестратор (Analytics Orchestrator)
Оркестратор (Analytics Orchestrator) – программный модуль для распределения задач и видеопотоков от платформы VSaaS по воркерам аналитики. Оркестратор состоит из двух частей: серверной и клиентской.
Серверная часть выполняет следующие функции:
-
Обработка входящих запросов с видеопотоками с платформы.
-
Распределение видеопотоков по воркерам аналитики.
-
Управление видеопотоками.
-
Векторизация изображений и отправки векторов в базу данных векторов Tarantool.
Клиентская часть используется для сбора статистики по использованию серверных ресурсов и для управления жизненным циклом воркеров (запуск и остановка).
Основные процессы оркестратора:
-
Обработка и отправка видеопотоков на воркер аналитики.
-
Обновление ранее запущенного видеопотока на воркере аналитики.
-
Удаление ранее запущенного видеопотока на воркере аналитики.
-
Перераспределение видеопотоков аналитики, если воркер вышел из строя или не хватает вычислительных ресурсов для обработки видеопотоков.
-
Обработка изображений, получаемых с платформы.
-
Обработка статистики по загруженности серверов, получаемой от воркеров аналитики.
-
Обогащение событий аналитики с последующим сохранением в ClickHouse и предоставлением этих данных клиентской части.
Воркер (Analytics worker)
Воркер аналитики (Analytics worker) – это сервис для приема и обработки аудио- и видеопотоков с последующей генерацией событий аналитики. Компонент аналитики, реализующий получение запросов на обработку аудио- и видеопотоков, отправку событий аналитики, управление процессами аналитики и предоставление процессам аналитики необходимых ресурсов, в частности интерфейса для взаимодействия с AI-моделями.
Воркер аналитики является связкой из сущностей сервера моделей и клиентских приложений (препроцессоров). Препроцессоры выполняют следующие функции:
-
Захватывают и обрабатывают видеопотоки.
-
Подготавливают артефакты для обработки нейросетями.
-
Обращаются к серверу моделей для инференса нейросетей с артефактами и событиями, указывающими на параметры обработки.
-
Принимают события о результатах от сервера моделей.
Векторизатор (Vectorizator)
Векторизатор (Vectorizator) – компонент Analytics, предназначенный для преобразования изображений объектов в их векторное представление. Этот процесс осуществляется с помощью API, предоставляемого сервисом. Полученный вектор направляется для хранения и обработки в базы данных (БД векторов Tarantool и БД оркестратора MySQL) и последующей обработки мэтчером.
Пуш-сервер (Push server/Broker)
Пуш-сервер (Push server/Broker) – компонент в архитектуре Analytics, который выступает в роли брокера сообщений. Его главная задача – обеспечивать надёжную и эффективную коммуникацию между оркестратором и воркерами аналитики.
Процесс взаимодействия воркера с пуш-сервером:
-
Запуск воркера аналитики:
-
Воркер регистрируется на оркестраторе. В оркестраторе создаётся сущность воркера, которой назначается уникальный UID.
-
Воркер регистрирует на пуш-сервере публичный канал. Название этого канала формируется по унифицированному шаблону: тип_аналитики.UID. Например, канал для сервиса распознавания лиц может иметь название
face-recognition.5141239e-faaa-11eb-ac62-1e00da0e0552.
-
Передача видеопотоков. После успешной регистрации оркестратор получает возможность использовать API пуш-сервера для отправки видеопотоков воркерам аналитики.
-
В результате, воркер аналитики подключается к каналам
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.