Spark Structured Streaming : le mode temps réel pour une latence ultra-faible
Apache Spark Structured Streaming a longtemps servi de base robuste pour les pipelines de données à grande échelle et critiques, permettant tout, des opérations sophistiquées d’extraction, de transformation et de chargement (ETL) en streaming aux analyses quasi en temps réel et aux applications d’apprentissage automatique. Aujourd’hui, une évolution significative est en cours avec l’introduction du “mode temps réel”, un nouveau type de déclencheur conçu pour étendre les capacités de Spark à une toute nouvelle catégorie de charges de travail à latence ultra-faible. Cette innovation traite les événements dès leur arrivée, atteignant des latences aussi basses que des dizaines de millisecondes, marquant un bond en avant substantiel pour les besoins de traitement immédiat des données.
Contrairement à ses prédécesseurs, tels que le déclencheur ProcessingTime
qui fonctionne selon des horaires fixes, ou le déclencheur AvailableNow
qui traite toutes les données disponibles avant de s’arrêter, le mode temps réel offre un traitement continu des données. Cela signifie que les résultats sont émis dès qu’ils sont prêts, permettant des cas d’utilisation véritablement instantanés. Les entreprises peuvent désormais tirer parti de Spark pour des scénarios exigeant une action immédiate, tels que la détection de fraude en temps réel, la personnalisation dynamique et la diffusion de fonctionnalités d’apprentissage automatique avec un délai minimal. Il est crucial de noter que cette capacité améliorée s’intègre de manière transparente, ne nécessitant aucune modification des bases de code existantes ni d’efforts de replatforming pour les utilisateurs actuels de Structured Streaming. Ce nouveau mode est en cours de contribution au projet open source Apache Spark et est actuellement accessible en Public Preview sur Databricks.
À la base, le mode temps réel offre un traitement continu à faible latence en exécutant des tâches de streaming de longue durée qui planifient les étapes simultanément. Les données circulent entre les tâches en mémoire, facilitées par une technique connue sous le nom de streaming shuffle. Cette approche réduit considérablement la surcharge de coordination, élimine les retards de planification fixes inhérents aux modes de micro-lots traditionnels et offre systématiquement des performances inférieures à la seconde. Les tests internes de Databricks ont démontré des performances impressionnantes, avec des latences au 99e centile (p99) allant de quelques millisecondes à environ 300 millisecondes, selon la complexité des transformations de données impliquées. Par exemple, certains benchmarks ont montré des latences p99 aussi basses que des millisecondes à un seul chiffre, confirmant sa capacité pour les applications exigeantes en temps réel.
Les implications du mode temps réel sont profondes pour les applications de streaming qui nécessitent des temps de réponse rapides, en particulier celles qui sont essentielles aux opérations commerciales critiques. Les premiers adoptants ont déjà déployé cette technologie sur un large éventail de charges de travail, démontrant son potentiel transformateur. Par exemple, une banque mondiale traite désormais les transactions par carte de crédit de Kafka en temps réel, signalant les activités suspectes en seulement 200 millisecondes. Cette capacité réduit drastiquement les risques financiers et accélère les temps de réponse sans nécessiter une refonte complète de leur infrastructure existante.
Au-delà des services financiers, le mode temps réel révolutionne les expériences personnalisées dans le commerce de détail et les médias. Un fournisseur de streaming Over-The-Top (OTT) peut désormais mettre à jour les recommandations de contenu immédiatement après qu’un utilisateur a terminé de regarder une émission, tandis qu’une plateforme de commerce électronique de premier plan recalcule les offres de produits au fur et à mesure que les clients naviguent, maintenant un engagement élevé grâce à des boucles de rétroaction inférieures à la seconde. De même, les principaux sites de voyage exploitent ce mode pour suivre et afficher les recherches récentes de chaque utilisateur sur tous les appareils en temps réel, chaque nouvelle requête mettant instantanément à jour le cache de session, permettant ainsi des résultats personnalisés et l’auto-remplissage sans aucun délai perceptible. Dans le domaine de l’apprentissage automatique, une application de livraison de nourriture utilise le mode temps réel pour mettre à jour des fonctionnalités telles que la localisation du conducteur et les temps de préparation en millisecondes. Ces mises à jour alimentent directement les modèles d’apprentissage automatique et les applications destinées aux utilisateurs, ce qui améliore la précision du temps estimé d’arrivée (ETA) et l’expérience client.
Raja Kanchumarthi, ingénieur de données principal chez Network International, a souligné les avantages tangibles, déclarant : “Pour un pipeline d’autorisation de paiement critique, où nous effectuons le chiffrement et d’autres transformations, nous avons atteint une latence de bout en bout P99 de seulement 15 millisecondes. Nous sommes optimistes quant à la mise à l’échelle de ce traitement à faible latence sur nos flux de données tout en respectant constamment des SLA stricts.” Ces diverses applications soulignent la polyvalence du mode temps réel, démontrant sa capacité à transformer les données en décisions immédiates dans un éventail de cas d’utilisation, des alertes de capteurs IoT et de la visibilité de la chaîne d’approvisionnement à la télémétrie de jeu en direct et à la personnalisation intégrée à l’application.