Volver al blog
ArticleFebruary 8, 20224 min

Gérer la pression des données dans les systèmes basés sur les messages

Comment gérer la pression des données dans des solutions non-stop basées sur les messages et garantir une disponibilité continue sous charge.

Gérer la pression des données dans les systèmes basés sur les messages

Qu'est-ce que la pression des données ?

Vous entendez souvent parler de la pression des données lorsqu'il s'agit de systèmes non-stop. Qu'est-ce que c'est et pourquoi est-ce si important ?

La pression, dans son sens physique, décrit un déséquilibre entre un gaz ou un fluide entre deux compartiments confinés. Elle agit dans les deux sens jusqu'à ce qu'un équilibre soit atteint. Si vous voulez la gérer, vous placez généralement une valve entre les deux.

Dans les systèmes de traitement des données, la pression des données, ou pression amont, décrit la quantité de données prêtes à être traitées. Pour les solutions basées sur des fichiers (batch), cela décrit simplement la quantité de fichiers en attente de traitement (asynchrone). La vitesse de traitement dépend uniquement de la puissance de traitement des acteurs en aval et est basée sur la demande. La pression des données dans le traitement par lots n'est généralement pas une menace pour la surcharge du système car elle est implicite. Le système de traitement par lots ne traitera toujours que ce qu'il peut gérer.

Cependant, c'est une tout autre histoire dans les environnements modernes de traitement en temps réel basés sur les messages, où la pression des données est explicite car les données doivent être traitées dès leur arrivée.

Importance de back-pressure dans les systèmes non-stop en temps réel

Les cas d'utilisation basés sur les messages nécessitent généralement que les données soient traitées en temps réel, à tout moment. Par conséquent, les systèmes doivent être capables de s'adapter de manière élastique pour gérer les pics de charge ou libérer des ressources inutilisées pendant les périodes de faible pression des données.

Il existe d'innombrables exemples d'architectures qui se bloquent lorsqu'elles traitent de grandes charges de données. Cela entraîne souvent un cercle vicieux qui conduit généralement à l'arrêt complet de l'architecture. Le principal problème est l'absence d'un signal de demande négative (ou d'un signal de forte back-pressure des données) vers les acteurs en amont, sur lequel ils pourraient réagir. Si un tel signal existait, des actions appropriées pourraient être prises.

Ces actions pourraient être :

  • ralentir le traitement globalement en amont du flux de données, ou
  • déployer plus de puissance de traitement pour gérer la pression supplémentaire.

Une fois la pression des données en amont diminuée, les contre-mesures peuvent être inversées. Plus de données peuvent à nouveau être livrées, ou la puissance de traitement précédemment activée peut être désactivée.

Pour résumer, nous avons :

  1. un signal de données ou pression amont qui indique que des données sont disponibles pour le traitement, et nous avons
  2. un signal de demande ou back-pressure qui indique à quel point les acteurs en aval sont chargés, et si la pression des acteurs en amont peut être transférée aux acteurs en aval.

En utilisant ces signaux, le système est capable de négocier un équilibre entre tous les participants, ce qui garantit que le traitement ne s'arrête jamais, mais ralentit plutôt (ou une capacité supplémentaire est automatiquement mise à disposition). Ce problème est bien reconnu et défini dans le Reactive Manifesto qui exige que les systèmes soient basés sur les messages, élastiques et résilients, et donc réactifs à la charge. Les systèmes qui répondent à ces exigences sont appelés "Réactifs".

Comment layline.io le gère

Il semble que la solution au défi de back-pressure soit simple. Mais en réalité, elle est difficile à résoudre, car tous les participants à cette danse doivent être conscients de la pression des données, dans les deux sens. La gestion des flux réactifs a résolu ce problème, c'est pourquoi layline.io en tire pleinement parti en arrière-plan. Cependant, ce n'est pas pour les novices et cela s'accompagne d'une courbe d'apprentissage et d'expérience abrupte. layline.io protège ses utilisateurs de cette complexité grâce à une plateforme facile à utiliser, qui fournit toutes les fonctionnalités nécessaires à la production, telles que la configurabilité low-code via une interface utilisateur, le déploiement en un clic, la surveillance et bien plus encore.

Ressources

Share:

Enjoyed this article?

Subscribe to get more insights delivered to your inbox.