Arquitectura de Streaming RTSP con Autoescalado, Doble Orquestador y Cero Pérdida de Paquetes
Una plataforma de vigilancia necesitaba escalar su infraestructura de streaming de video dinámicamente — manejando desde 10 hasta más de 200 cámaras IP con cientos de espectadores concurrentes y trabajadores de procesamiento de AI — garantizando al mismo tiempo cero pérdida de paquetes durante las operaciones de escalado y manteniendo URLs de stream estables que nunca cambian.
Discuta Su Proyecto
El Desafío
La infraestructura de streaming fija no podía manejar las demandas variables de una plataforma de vigilancia en crecimiento:
- Variabilidad de la Escala — El número de cámaras y la demanda de espectadores fluctuaban drásticamente a lo largo del día (relación de 10x entre pico y valle)
- Costo por Sobreaprovisionamiento — Aprovisionar para la carga máxima significaba más del 70% de recursos ociosos durante las horas de menor actividad
- Pérdida de Paquetes Durante el Escalado — Añadir o eliminar servidores de streaming causaba interrupciones en la transmisión, perdiendo frames para los trabajadores de procesamiento de AI
- Inestabilidad de URLs — Las cámaras y espectadores configurados con IPs de servidor específicas necesitaban reconfiguración cuando la infraestructura cambiaba
- Diferentes Necesidades de Escalado — La ingesta de cámaras y la distribución a espectadores tenían patrones de carga fundamentalmente diferentes que requerían escalado independiente
- Interrupción de Trabajadores de AI — Las tuberías de procesamiento de AI colapsaban cuando su servidor de stream de origen se reducía
Nuestra Solución
Diseñamos una arquitectura de streaming con autoescalado y doble orquestador con clusters de ingesta y distribución separados, un apagado controlado de 5 fases para cero pérdida de paquetes, URLs estables basadas en DNS y reconexión automatizada de trabajadores de AI.
Arquitectura
- Servidor de Streaming: MediaMTX para soporte de protocolo RTSP/WebRTC/HLS
- Cluster de Ingesta: 1-10 servidores que reciben streams RTSP de cámaras
- Cluster de Distribución: 2-20 servidores que atienden a espectadores (WebRTC/HLS) y trabajadores de AI (RTSP)
- Orquestadores Duales: Controladores de escalado independientes para ingesta y distribución
- Load Balancers: Load Balancers separados por cluster con algoritmos apropiados para el protocolo
- Registro de Servicio: Redis para el estado del servidor, mapeo de streams y coordinación
- Monitorización de Salud: Chequeos de salud activos con recuperación automatizada
- Capa DNS: Nombres de dominio estables que apuntan a Load Balancers (las URLs nunca cambian)
Diseño de Doble Orquestador
Por qué Dos Orquestadores
La ingesta y la distribución tienen características de escalado fundamentalmente diferentes:
- Ingesta escala con el número de cámaras y el ancho de banda entrante (predecible, crece constantemente)
- Distribución escala con el número de espectadores y la demanda de trabajadores de AI (irregular, impredecible)
Orquestadores separados permiten que cada uno escale independientemente con políticas, métricas y umbrales especializados, sin que las decisiones de escalado de un cluster afecten al otro.
Orquestador de Ingesta
- Métrica Primaria: Conexiones de cámara por servidor
- Métrica Secundaria: Utilización del ancho de banda entrante
- Escalar Arriba: Cuando el CPU supera el umbral o las cámaras por servidor exceden la capacidad
- Escalar Abajo: Cuando la utilización cae por debajo del umbral durante un período de estabilización sostenido
- Rango de Servidores: 1 a 10 servidores
Orquestador de Distribución
- Métrica Primaria: Conexiones de espectadores + trabajadores de AI por servidor
- Métrica Secundaria: Utilización del ancho de banda saliente
- Escalar Arriba: Cuando el CPU supera el umbral o las conexiones por servidor exceden la capacidad
- Escalar Abajo: Cuando la utilización cae por debajo del umbral durante un período sostenido (estabilización más larga que la ingesta)
- Rango de Servidores: 2 a 20 servidores (mínimo 2 para alta disponibilidad)
Cero Pérdida de Paquetes: Apagado Controlado en 5 Fases
Cuando un servidor de distribución está programado para ser eliminado, un proceso de 5 fases asegura que no se pierda ningún frame:
Fase 1: Pre-NotificaciónEl servidor se marca como "DRAINING" en el registro de servicio. El peso del Load Balancer se reduce para que las nuevas conexiones se dirijan a otro lugar. Las notificaciones de Redis pub/sub y webhooks alertan a los trabajadores de AI para que se preparen para la migración.
Fase 2: Actualización del Load BalancerEl servidor se elimina del pool de backend del Load Balancer. Ninguna nueva conexión puede llegar al servidor en drenaje. Las conexiones existentes continúan sin interrupción.
Fase 3: Migración de Trabajadores de AILos trabajadores de AI se desconectan del servidor en drenaje y se reconectan a servidores de distribución saludables. La preservación del estado basada en checkpoint asegura que el procesamiento se reanude desde el frame exacto donde se detuvo. Brecha total: aproximadamente 3 segundos con cero frames perdidos.
Fase 4: Drenaje de EspectadoresLas conexiones de espectadores restantes se drenan naturalmente durante una ventana configurable. Los reproductores de video modernos se reconectan automáticamente a la misma URL estable, que enruta a servidores saludables. La mayoría de los espectadores no experimentan interrupción.
Fase 5: LimpiezaVerificar que todas las conexiones se hayan cerrado. Eliminar el servidor del registro de servicio. Destruir la instancia en la nube. Registrar métricas de escalado.
URLs Estables
La arquitectura de URL asegura que las cámaras y los clientes nunca necesiten reconfiguración:
- Objetivo de publicación de cámara: Un nombre de dominio de ingesta estable
- Objetivo de acceso de espectador/AI: Un nombre de dominio de distribución estable
- Los registros DNS apuntan a las IPs del Load Balancer (que son permanentes)
- Los Load Balancers manejan el enrutamiento a los servidores backend de forma transparente
- Los servidores backend pueden ser añadidos, eliminados o reemplazados sin cambios de URL
Registro de Servicio (Redis)
Una instancia centralizada de Redis coordina todo el sistema:
- Seguimiento del estado del servidor (activo, drenando, offline)
- Mapeo de stream a servidor (qué cámara está en qué servidor de ingesta)
- Estado del trabajador de AI y datos de checkpoint
- Métricas de carga por servidor para decisiones de escalado
- Canales pub/sub para eventos de coordinación en tiempo real
Reconexión del Cliente AI
Una biblioteca de cliente de AI proporciona reconexión sin interrupciones:
- Escucha notificaciones de eliminación de servidor a través de Redis pub/sub
- Checkpointing automático de frames a intervalos regulares
- Reconexión a un servidor de distribución saludable tras la notificación
- Reanudar el procesamiento desde el checkpoint con una brecha mínima
- Reporte de métricas para eventos de reconexión
Monitorización de Salud
- Chequeos de salud activos en cada servidor a intervalos regulares
- Actualizaciones automáticas del Load Balancer en caso de fallos del servidor
- Disparadores de recuperación automática para servidores que no responden
- Seguimiento de tiempo de actividad e informes de disponibilidad
Características Clave
- Orquestadores Duales — Escalado independiente para clusters de ingesta y distribución
- Cero Pérdida de Paquetes — Apagado controlado en 5 fases con migración de trabajadores de AI
- URLs Estables — El enrutamiento basado en DNS asegura que las URLs nunca cambien durante el escalado
- Reconexión de Trabajadores de AI — Migración basada en checkpoint con una brecha de ~3 segundos y cero pérdida de frames
- Escalado Independiente — Ingesta y distribución escalan basándose en sus propias métricas
- Registro de Servicio — Coordinación basada en Redis para el estado del servidor y mapeo de streams
- Monitorización de Salud — Chequeos activos con recuperación automática
- Optimización de Costos — Reducción automática de la escala durante períodos de baja demanda
Resultados
Stack Tecnológico
caseStudyDetail.more Casos de Estudio
Explore más de nuestras implementaciones técnicas
Catant Plataforma de Gestión de RRHH y Fuerza Laboral
Catant es una plataforma modular de gestión de RRHH y fuerza laboral que ayuda a las empresas a gestionar empleados, nóminas, asistencia y cumplimiento desde un único panel.
Kickly: Plataforma de Proyectos Impulsada por AI para Startups
Kickly es una plataforma de gestión de proyectos impulsada por AI diseñada para startups, que combina automatización inteligente de tareas, colaboración en equipo y seguimiento del progreso en tiempo real en un solo producto.
¿Listo para Transformar su Negocio?
Hablemos sobre cómo podemos aplicar soluciones similares a sus desafíos.