Les organisations de nombreux secteurs s’intéressent de plus en plus à la building de systèmes en temps réel qui dépassent de loin les capacités limitées des systèmes logiciels d’un passé récent, et tentent de le faire. Les problèmes que ces systèmes doivent résoudre ont un influence sur les opérations internes et l’expérience consumer, et s’étendent également au-delà des murs de l’organisation individuelle pour modifier les capacités attendues de l’industrie, et même la santé de la planète.
La prochaine génération de systèmes temps réel entre en jeu dans des usages extrêmement divers :
- Sûreté et sécurité : offrir de nouveaux niveaux de santé et de sécurité publique dans des bâtiments intelligents qui détectent et arrêtent automatiquement la propagation des maladies,
- Commerce de détail : permettre de nouvelles expériences de advertising and marketing de proximité personnalisées dans des environnements de vente au détail physiques,
- Urgences : Détecter les inondations et autres conditions d’urgence, puis déclencher automatiquement des protocoles d’évacuation
Dans tous ces scénarios, il ne peut y avoir aucun compromis en termes de réactivité, de fiabilité et d’évolutivité. Cela exige que les responsables du développement adoptent une façon plus moderne de penser à la manière dont ces systèmes temps réel hautes performances doivent être architecturés.
Lorsque la base de données, première façon de créer des systèmes en temps réel, échoue – combien d’ascenseurs pouvez-vous réellement surveiller – avant qu’il ne tombe en panne ?
Une super-ville moderne pourrait avoir des bâtiments avec des centaines de milliers d’ascenseurs – qui nécessitent tous une surveillance constante pour détecter des conditions d’intérêt telles que des problèmes de sécurité et de sûreté. La meilleure façon de relever ce sort de défi de « bâtiment clever » consiste à utiliser un traitement de flux en temps réel succesful de gérer l’analyse de données à grande échelle et de fournir une connaissance de la state of affairs cohérente et opportune.
Le développement commencerait probablement avec des informations provenant d’un seul ascenseur avec une analyse effectuée dans une easy base de données de séries chronologiques et de petites requêtes par tons. Mais il serait incorrect de supposer que ce qui fonctionne pour un devrait fonctionner pour des centaines, puis des milliers.
Le défaut de cette hypothèse est que les requêtes de base de données seront capables de gérer l’explosion des données sans perte huge de vitesse de efficiency. Cette approche fonctionne comme prévu avec un petit nombre d’ascenseurs, mais l’ensemble du système échoue lorsque la quantité de données (ascenseurs) dépasse les capacités de la base de données.
Indépendamment de placer d’autres capacités en temps réel autour de la périphérie de la base de données traditionnelle dans ce système, l’utilisation d’une base de données elle-même est ce qui casse intrinsèquement le système à grande échelle.
La answer pour créer un système évolutif robuste consiste à effectuer l’analyse de la détection des anomalies en mémoire, puis à déplacer les informations vers la base de données à des fins historiques. La base de données est la dernière étape, et non la première, d’un système moderne en temps réel.
Les trois varieties de systèmes en temps réel
Bien qu’il y ait un intérêt croissant pour les systèmes en temps réel, il y a du bruit, de la confusion et de la désinformation sur les différents varieties et capacités des systèmes en temps réel, ainsi que sur la pertinence (ou non) des bases de données par rapport à leur capacité à évoluer et à fonctionner. comme demandé. Il existe trois varieties de systèmes temps réel, dont chacun est pertinent pour résoudre une classe différente de problèmes.
- Systèmes temps réel « durs » – basés sur le matériel,
- Systèmes en temps réel Micro-Batch – systèmes en temps réel «gentle» qui utilisent des processus de données et des requêtes plus traditionnels,
- Systèmes en temps réel événementiels – systèmes en temps réel «gentle» qui utilisent le traitement de flux ou d’événements.
1. Systèmes en temps réel « durs »
Ces varieties de systèmes sont nécessaires pour résoudre des problèmes qui ne peuvent tolérer aucune « échéance » manquante, avec une vitesse de efficiency mesurée en quelques millisecondes. Aucune base de données ne pourrait jamais offrir ce sort de performances et, en outre, tout l’équipement matériel et informatique doit être effectué sur web site. Les lignes d’assemblage robotisées automatisées de haute précision nécessitent la rigueur de ce sort de système temps réel.
2. Systèmes en temps réel par micro-lots
Cette approche des systèmes en temps réel est la plus appropriée pour les problèmes qui ne nécessitent qu’un traitement en temps réel avec des latences de l’ordre de centaines de millisecondes (ou même de secondes) et qui nécessitent peu de mise à l’échelle. Les systèmes de commande de commerce électronique peuvent être un bon match pour cela.
Les approches traditionnelles du traitement des données sont appliquées à de petites quantités de données (micro-lots) à un « cycle d’utilisation » rapide. Le level zéro pour créer des problèmes fatals se trouve dans les tentatives de mise à l’échelle du système et de diminution de la latence entre les tons pour faire fonctionner ces systèmes, de la même manière que les systèmes en temps réel pilotés par les événements.
À mesure que le nombre de tons augmente de manière linéaire, la surcharge de calcul et le coût d’exécution proceed des requêtes dans le quantity croissant de micro-lots augmentent de manière exponentielle (jusqu’au carré de la taille de la base de données). À un second donné, la loi de la physique entre en jeu, et il devient not possible de faire fonctionner la couche d’analyse de données du système en « temps réel » défini à un quantity élevé. En fin de compte, une base de données ne sera jamais aussi rapide que le traitement des événements.
3. Systèmes en temps réel pilotés par les événements
Il s’agit de la answer « boucle d’or » pour les functions nécessitant une motion dans un délai très courtroom de l’ordre de 1 à 10 millisecondes. Un système de recommandation est une utilisation appropriée de ce sort de système en temps réel – comme dans le commerce électronique ou dans l’automatisation industrielle.
Le traitement en mémoire, et non une base de données, est la power motrice de ce système. Les informations (provenant des capteurs IoT, de l’IA embarquée, des courtiers d’événements, and so forth.) sont traitées en vol à l’aide d’analyses de flux, et peuvent ensuite être envoyées à une base de données à des fins historiques.
À mesure que la quantité de données augmente, le travail de calcul évolue de manière linéaire, et non exponentielle, comme dans le cas de l’approche par micro-lots.
Trouver et éviter les factors d’étranglement des performances et de l’échelle dans les systèmes en temps réel
L’analyse des trois varieties de systèmes en temps réel nous montre que les systèmes qui utilisent un modèle de stockage de base de données traditionnel ne peuvent jamais être évolutifs en temps réel, même si l’ingestion était en temps réel.
L’exécution de requêtes prend du temps et les performances des requêtes se dégradent à mesure qu’une base de données se développe, ce qui est exactement ce qui se produit lorsque vous essayez de faire évoluer un système. Dans notre exemple d’ascenseur précédent, l’ingestion était en temps réel, mais l’accès et l’exécution de requêtes sur les informations stockées dans la base de données n’étaient PAS en temps réel.
Les performances de ce système ont finalement été limitées par la partie la moins performante de l’ensemble du système – la base de données.
Lors de la conception de la prochaine génération de systèmes en temps réel, il est essentiel de prendre en compte le délai dans lequel différentes informations doivent être accessibles et includes et l’échelle à laquelle vous souhaitez finalement développer votre système.
Il ne s’agit pas de choisir entre l’un ou l’autre : les systèmes en temps réel de nouvelle génération devront être hybrides
Il n’existe pas d’approche distinctive pour les systèmes en temps réel. Mais il est toujours necessary de commencer par comprendre quelles informations doivent être stockées sur de plus longues périodes dans une base de données pour les rapports historiques, des analyses plus approfondies et la reconnaissance des modèles.
Ensuite, par opposition aux informations qui nécessitent une motion immédiate (de l’ordre de quelques millisecondes) pour le traitement des événements en temps réel. Les meilleurs systèmes seront ceux qui combinent les différents modèles de traitement de données pour profiter des avantages que chacun offre.
Crédit picture en vedette : Natã Romualdo ; Pexel ; Merci!