IREX
ES

Arquitectura de microservicios

A nivel de implementación de software, la Plataforma IREX puede considerarse una agregación de microservicios que interactúan entre sí de acuerdo con el esquema simplificado a continuación:

Aquí, se pueden delinear las dos sub-plataformas básicas:

  • Nube Privada
  • Smart City

La arquitectura nativa de la nube como esta aprovecha la flexibilidad, escalabilidad y resiliencia de la computación en la nube para permitir una implementación segura, resiliente y sencilla en cualquier centro de datos o ubicación local.

Nube segura

La Nube Segura ejecuta software 100% de código abierto para proveer los siguientes servicios a Smart City:

Cassandra

Una base de datos distribuida para almacenar datos de video sin procesar provenientes de sensores externos y devolverlos en respuesta a consultas del usuario para reproducción u otras acciones.

Redis

Un sistema de base de datos NoSQL residente que almacena pares Clave-Valor relevantes para los estados de los canales y sesiones de autenticación; utilizado como caché de acceso rápido.

Kafka

Intermediario de mensajes distribuido entre todos los demás microservicios.

S3

Almacenamiento de objetos para capturas y fragmentos de video.

PostgreSQL

Base de datos relacional dentro de Kubernetes para proveer diversa información a todos los demás componentes.

Smart City

La sub-plataforma Smart City implementa el procesamiento de datos basado en K8S (Kubernetes).

K8S (Kubernetes) es un sistema para desplegar y administrar (orquestar) contenedores docker, proporcionando mecanismos de auto-recuperación, verificación de rendimiento, re-planificación de tareas y balanceo de carga durante el procesamiento de datos. Su tarea principal es ejecutar el contenedor en hardware de servidor con recursos suficientes (CPU, RAM). Los recursos disponibles se cuentan en base a los recursos solicitados en el POD y la capacidad del servidor. Kubernetes reinicia automáticamente la aplicación cuando falla. Cuando una máquina de Kubernetes falla, los contenedores se migran a las máquinas disponibles.

Verificador channel-status

Verifica los estados de los canales para mostrarlos gráficamente en el mapa.

Entradas: lista de ID de canales.

Salidas: estado del canal (opcionalmente - razón del mismo, por ejemplo, estado = unhealthy, razón = FrameRateTooLow).

Administrador channel-processor

Provee PODs de Kubernetes a los canales, actualiza los canales y administra las cuotas de buckets de S3.

Entradas: solicitudes para actualizar los canales.

Salidas: la lista de canales actualizados.

API edge-api

Procesa las solicitudes HTTP de los usuarios enviadas a través de la interfaz web para responder con los resultados del procesamiento.

módulo de analítica kx-channel

Implementa la entrada de video, procesándolo con analítica de video para generar eventos, archivándolos y otras funciones principales.

Entradas: comandos del usuario, como "Establecer marco de referencia", "Recargar configuración de analítica de video", etc.

Salidas: eventos y capturas de eventos.

interfaz eventproxy

Envía mensajes de eventos a Kafka y registra fragmentos de video en Cassandra.

Entradas: eventos y capturas de eventos desde kx-channel.

Salidas: mensajes de eventos.

microservicio snapshots

Almacena capturas para proveerlas al usuario bajo solicitud.

Entradas: solicitudes de capturas.

Salidas: las capturas.

módulo facelists-matcher

Compara los descriptores de rostros calculados contra los inscritos en la base de datos.

Entradas: descriptores de rostros detectados.

Salidas: eventos "Coincidencia <...>".

módulo platelists-matcher

Compara los números de placa detectados contra los inscritos en la base de datos.

Entradas: números de placa detectados.

Salidas: eventos "Coincidencia <...>".

API eventsearch

Implementa la búsqueda de eventos definidos por el usuario en la base de datos.

Entradas: consulta de condiciones de eventos.

Salidas: los eventos.

microservicio kafka-cassandra-streamer

Despacha mensajes completos de eventos a Cassandra.

Entradas: mensajes de eventos desde Kafka.

Salidas: eventos guardados en Cassandra.

microservicio kafka-ignite-streamer

Despacha mensajes de metadatos de eventos a Ignite.

Entradas: mensajes de eventos desde Kafka.

Salidas: metadatos de eventos guardados en Ignite.

Extras

Adicionalmente, hay servicios y utilidades implementados en la sub-plataforma Smart City que no se muestran en el esquema. Los más importantes de ellos son:

alarm-monitor

El servicio para administrar monitores de alarma.

Archive-streamer5

Transmite los fragmentos de video solicitados en la interfaz de usuario.

authentication-server

Implementa la autenticación de usuarios para proveer acceso según sus roles.

descriptor-extractor

La red neuronal para calcular descriptores de rostros.

descriptor-updater

Actualiza un descriptor de rostro si se encuentra una coincidencia más similar en la base de datos.

downloader

Descarga fragmentos de video definidos por el usuario a archivos locales.

edge-to-cloud-connector, edge-from-cloud-connector

Puertas para comunicarse con kx-channel a través de edge-api.

ignite-cleaner

Limpia las entradas obsoletas en la base de datos Ignite

ignite-instance

La instancia de base de datos Ignite para almacenar metadatos de eventos.

Ignite-tools

Almacenamiento de scripts de administración de Ignite.

kafka-init

Crea temas de mensajes en Kafka.

license-postgres

Licencia para la base de datos de la plataforma.

license-server

El servidor para administrar licencias (emitir, actualizar, terminar).

ptz

Control de cámara PTZ (rotar, desplazar, hacer zoom).

raw-video-channel-processor

Crea un canal para un video subido desde un archivo externo.

seclog

Registro completo de los principales eventos de rendimiento del sistema, incluyendo quién hizo qué, en detalle completo para garantizar los principios de transparencia y responsabilidad según lo estipulan CJIS y GDPR.

stream-info

Proveedor de propiedades de transmisión de video (resolución, tasa de bits, etc.).

sql-migrations

La herramienta de migración de PostgreSQL.

sync-event-streamer

Pasa los mensajes de entrada de PostgreSQL a Kafka.

va-event-processor

La red neuronal para detectar características de apariencia, como barba, lentes, mascarilla o sin mascarilla.

Arquitectura de servidor edge

La arquitectura de servidor edge permite que los recursos de analítica de video se desplieguen en servidores edge ubicados cerca de las cámaras en un sitio remoto.

La idea básica es que, con la analítica de video ejecutada directamente en el sitio remoto, no hay necesidad de transmitir toda la transmisión de video sin procesar desde las cámaras hacia la nube a través de un enlace TCP-IP de banda ancha; solo se pueden transmitir los productos analíticos - eventos, que son de mayor interés para el usuario final - haciendo que el tráfico sea mucho menor y facilitando los requisitos de ancho de banda. Por supuesto, siempre que se consulte, el video se puede transmitir al centro de datos; sin embargo, las transmisiones bajo demanda consumen mucho menos tráfico que la continua.

La tabla a continuación ofrece un resumen de la analítica basada en la nube versus la basada en servidor edge para demostrar que la solución de servidor edge consume menos recursos en cuanto a ancho de banda y hardware, pero es más robusta ante interrupciones en Internet y condiciones externas difíciles (humedad, pureza del aire en las salas de servidores).

Característica Analítica basada en la nube Analítica basada en servidor edge
Alertas en tiempo real para salas de control y centros de fusión
Searchveillance™ multi-sitio
Ancho de banda reducido NO
Analítica de video y grabación sin conexión NO
Sincronización automática de eventos al recuperar la red NO
Administración centralizada
Alta disponibilidad, balanceo de carga, conmutación por error Incluido Costo adicional por hardware local
Encriptación de video y eventos SÍ (VPN requerida) SÍ (VPN automática)
Actualizaciones automáticas de software
Descubrimiento automático de cámaras NO

La solución puede recomendarse donde sea que un menor ancho de banda importe, las interrupciones de Internet parezcan probables y/o las condiciones externas sean difíciles. Si este es el caso, solicite un cálculo al representante de la Plataforma sobre qué hardware necesita la solución basada en servidor edge, y una estimación de costos.

Si se implementa, los servidores edge se pueden luego administrar.