Architecture de Streaming RTSP à Mise à l'Échelle Automatique avec Double Orchestrateurs & Zéro Perte de Paquets
Une plateforme de surveillance devait faire évoluer son infrastructure de streaming vidéo de manière dynamique — gérant de 10 à plus de 200 caméras IP avec des centaines de spectateurs simultanés et de travailleurs de traitement AI — tout en garantissant une perte de paquets nulle pendant les opérations de mise à l'échelle et en maintenant des URL de flux stables qui ne changent jamais.
Discutez de Votre Projet
Le Défi
L'infrastructure de streaming fixe ne pouvait pas gérer les demandes variables d'une plateforme de surveillance en croissance :
- Variabilité de l'Échelle — Le nombre de caméras et la demande des spectateurs fluctuaient de manière spectaculaire tout au long de la journée (ratio de crête à creux de 10x)
- Coût de Surprovisionnement — Le provisionnement pour la charge de pointe signifiait plus de 70% de ressources inactives pendant les heures creuses
- Perte de Paquets Pendant la Mise à l'Échelle — L'ajout ou le retrait de serveurs de streaming provoquait des interruptions de flux, perdant des images pour les travailleurs de traitement AI
- Instabilité des URL — Les caméras et les spectateurs configurés avec des IP de serveur spécifiques nécessitaient une reconfiguration lorsque l'infrastructure changeait
- Besoins de Mise à l'Échelle Différents — L'ingestion des caméras et la distribution des spectateurs avaient des modèles de charge fondamentalement différents nécessitant une mise à l'échelle indépendante
- Perturbation des Travailleurs AI — Les pipelines de traitement AI se crashaient lorsque leur serveur de flux source était réduit
Notre Solution
Nous avons conçu une architecture de streaming à mise à l'échelle automatique avec double orchestrateurs avec des clusters d'ingestion et de distribution séparés, une extinction progressive en 5 phases pour zéro perte de paquets, des URL stables basées sur DNS, et une reconnexion automatisée des travailleurs AI.
Architecture
- Serveur de Streaming : MediaMTX pour le support des protocoles RTSP/WebRTC/HLS
- Cluster d'Ingestion : 1-10 serveurs recevant les flux RTSP des caméras
- Cluster de Distribution : 2-20 serveurs desservant les spectateurs (WebRTC/HLS) et les travailleurs AI (RTSP)
- Double Orchestrateurs : Contrôleurs de mise à l'échelle indépendants pour l'ingestion et la distribution
- Équilibreurs de Charge : Équilibreurs de charge séparés par cluster avec des algorithmes adaptés aux protocoles
- Registre de Services : Redis pour le statut des serveurs, les mappages de flux, et la coordination
- Surveillance de la Santé : Vérifications de santé actives avec récupération automatisée
- Couche DNS : Noms de domaine stables pointant vers les équilibreurs de charge (les URL ne changent jamais)
Conception du Double Orchestrateur
Pourquoi Deux Orchestrateurs
L'ingestion et la distribution ont des caractéristiques de mise à l'échelle fondamentalement différentes :
- Ingestion s'adapte au nombre de caméras et à la bande passante entrante (prévisible, croît régulièrement)
- Distribution s'adapte au nombre de spectateurs et à la demande des travailleurs AI (éclaté, imprévisible)
Des orchestrateurs séparés permettent à chacun de s'adapter indépendamment avec des politiques, des métriques et des seuils spécialisés — sans que les décisions de mise à l'échelle d'un cluster n'affectent l'autre.
Orchestrateur d'Ingestion
- Métrique Principale : Connexions de caméras par serveur
- Métrique Secondaire : Utilisation de la bande passante entrante
- Mise à l'Échelle Vers le Haut : Lorsque le CPU dépasse le seuil ou que les caméras par serveur dépassent la capacité
- Mise à l'Échelle Vers le Bas : Lorsque l'utilisation tombe en dessous du seuil pendant une période de stabilisation soutenue
- Plage de Serveurs : 1 à 10 serveurs
Orchestrateur de Distribution
- Métrique Principale : Connexions de spectateurs + travailleurs AI par serveur
- Métrique Secondaire : Utilisation de la bande passante sortante
- Mise à l'Échelle Vers le Haut : Lorsque le CPU dépasse le seuil ou que les connexions par serveur dépassent la capacité
- Mise à l'Échelle Vers le Bas : Lorsque l'utilisation tombe en dessous du seuil pendant une période soutenue (stabilisation plus longue que l'ingestion)
- Plage de Serveurs : 2 à 20 serveurs (minimum 2 pour haute disponibilité)
Zéro Perte de Paquets : Extinction Progressive en 5 Phases
Lorsqu'un serveur de distribution est programmé pour être retiré, un processus en 5 phases garantit qu'aucune image n'est perdue :
Phase 1 : Pré-NotificationServeur marqué comme "DRAINING" dans le registre de services. Poids de l'équilibreur de charge réduit pour que les nouvelles connexions se dirigent ailleurs. Notifications Redis pub/sub et webhooks alertent les travailleurs AI pour se préparer à la migration.
Phase 2 : Mise à Jour de l'Équilibreur de ChargeServeur retiré du pool backend de l'équilibreur de charge. Aucune nouvelle connexion ne peut atteindre le serveur en vidange. Les connexions existantes continuent sans interruption.
Phase 3 : Migration des Travailleurs AILes travailleurs AI se déconnectent du serveur en vidange et se reconnectent à des serveurs de distribution sains. La préservation de l'état basée sur des points de contrôle garantit que le traitement reprend à partir de l'image exacte où il s'est arrêté. Écart total : environ 3 secondes avec zéro image perdue.
Phase 4 : Vidange des SpectateursLes connexions de spectateurs restantes se vident naturellement sur une fenêtre configurable. Les lecteurs vidéo modernes se reconnectent automatiquement à la même URL stable, qui dirige vers des serveurs sains. La plupart des spectateurs ne subissent aucune interruption.
Phase 5 : NettoyageVérifiez que toutes les connexions sont fermées. Retirez le serveur du registre de services. Détruisez l'instance cloud. Enregistrez les métriques de mise à l'échelle.
URLs Stables
L'architecture des URL garantit que les caméras et les clients n'ont jamais besoin de reconfiguration :
- Cible de publication de la caméra : Un nom de domaine d'ingestion stable
- Cible d'accès des spectateurs/travailleurs AI : Un nom de domaine de distribution stable
- Les enregistrements DNS pointent vers les IP des équilibreurs de charge (qui sont permanents)
- Les équilibreurs de charge gèrent le routage vers les serveurs backend de manière transparente
- Les serveurs backend peuvent être ajoutés, retirés ou remplacés sans changement d'URL
Registre de Services (Redis)
Une instance Redis centralisée coordonne l'ensemble du système :
- Suivi du statut des serveurs (actif, en vidange, hors ligne)
- Mappage des flux aux serveurs (quelle caméra est sur quel serveur d'ingestion)
- État des travailleurs AI et données de point de contrôle
- Métriques de charge par serveur pour les décisions de mise à l'échelle
- Canaux pub/sub pour les événements de coordination en temps réel
Reconnexion des Clients AI
Une bibliothèque client AI fournit une reconnexion transparente :
- Écoute les notifications de retrait de serveur via Redis pub/sub
- Pointage de contrôle automatique des images à intervalles réguliers
- Reconnexion à un serveur de distribution sain sur notification
- Reprise du traitement à partir du point de contrôle avec un écart minimal
- Rapport de métriques pour les événements de reconnexion
Surveillance de la Santé
- Vérifications de santé actives sur chaque serveur à intervalles réguliers
- Mises à jour automatiques de l'équilibreur de charge en cas de défaillance de serveur
- Déclencheurs de récupération automatique pour les serveurs non réactifs
- Suivi du temps de disponibilité et rapport de disponibilité
Caractéristiques Clés
- Double Orchestrateurs — Mise à l'échelle indépendante pour les clusters d'ingestion et de distribution
- Zéro Perte de Paquets — Extinction progressive en 5 phases avec migration des travailleurs AI
- URLs Stables — Routage basé sur DNS garantit que les URL ne changent jamais pendant la mise à l'échelle
- Reconnexion des Travailleurs AI — Migration basée sur des points de contrôle avec un écart d'environ 3 secondes et zéro perte d'image
- Mise à l'Échelle Indépendante — L'ingestion et la distribution s'adaptent en fonction de leurs propres métriques
- Registre de Services — Coordination basée sur Redis pour le statut des serveurs et les mappages de flux
- Surveillance de la Santé — Vérifications actives avec récupération automatique
- Optimisation des Coûts — Réduction automatique pendant les périodes de faible demande
Résultats
Stack Technologique
caseStudyDetail.more Études de Cas
Découvrez plus de nos implémentations techniques
Plateforme de gestion des RH et du personnel Catant
Catant est une plateforme modulaire de gestion des RH et du personnel qui aide les entreprises à gérer les employés, la paie, les présences et la conformité depuis un tableau de bord unique.
Kickly: Plateforme de projet alimentée par l'AI pour les Startups
Kickly est une plateforme de gestion de projet alimentée par l'AI, conçue pour les startups — combinant l'automatisation intelligente des tâches, la collaboration d'équipe et le suivi des progrès en temps réel en un seul produit.
Prêt à Transformer Votre Entreprise ?
Discutons de la façon dont nous pouvons appliquer des solutions similaires à vos défis.