Alors que le marché de l‘intégration continue d‘évoluer, la demande de prise en charge et de traitement de flux de données et de processus de plus en plus complexes se fait de plus en plus pressante. Lorsque les applications traitent de grandes quantités de données, elles manquent souvent de ressources et ne répondent plus, ce qui laisse les utilisateurs perplexes et mécontents. L‘évaluation des ressources et l‘alerte des utilisateurs par des messages appropriés sont parmi les facteurs les plus importants d‘un logiciel idéal. Dans la version Winter 2016 de la plateforme d‘intégration élastique SnapLogic, nous avons introduit le concept de file d‘attente de pipeline, qui permet aux utilisateurs de définir des seuils pour leurs Snaplex, et lorsque les seuils sont atteints, toutes les autres demandes qui lui sont adressées sont mises en file d‘attente jusqu‘à ce que les prochaines ressources soient disponibles.
Comment fixer des seuils pour les Snaplex ?
Les pipelines SnapLogic s‘exécutent dans un conteneur appelé Snaplex. Les pipelines sont constitués de Snap et chaque Snap consomme de la mémoire dans un Snaplex. Lorsque toute la mémoire d‘un Snaplex est consommée, il est surchargé et atteint son seuil.
Comme les Snaps consomment la plus grande partie de la mémoire Snaplex, ils deviennent un facteur important dans la détermination du seuil Snaplex. Les utilisateurs peuvent définir le seuil de Snaplex soit en définissant le nombre de Snaps qu‘il peut traiter à un moment donné, soit en fonction de son utilisation globale de la mémoire. Lorsque le Snaplex atteint ses seuils, il ne traite plus aucune demande de pipeline jusqu‘à ce que les ressources soient libérées et à nouveau disponibles. Tous ces pipelines rejetés sont marqués comme étant en file d‘attente dans le tableau de bord SnapLogic afin d‘alerter les utilisateurs que leurs Snaplex sont surchargés.
Vous trouverez ci-dessous les valeurs qui définissent les seuils Snaplex. Notez que le mot "slots" fait ici référence au nombre de Snaps. J‘expliquerai chacun d‘entre eux en détail plus loin dans ce blog.
- Nombre maximal d‘emplacements
- Emplacement réservé %
- Mémoire maximale %
Maximum slots : Le nombre maximum de Snaps que chaque nœud d‘un Snaplex peut traiter à un moment donné. Permettez-moi d‘entrer un peu plus dans les détails à l‘aide d‘exemples pertinents. Les deux exemples que j‘ai créés sont les suivants :
- Les seuils Snaplex ne sont pas atteints et la demande de pipeline est acceptée
- Snaplex atteint ses seuils et les demandes de pipeline suivantes sont mises en file d‘attente
Dans mes exemples, j‘ai supposé qu‘il y avait un certain nombre de pipelines déjà en cours d‘exécution sur le Snaplex. Chaque Snap dans le pipeline consomme un slot dans la mémoire. En plus de ces pipelines, il y a des threads actifs qui exécutent des opérations de base sur le Snaplex et qui consomment également de la mémoire sur le Snaplex. J‘ai comptabilisé à la fois les Snap et les threads actifs dans la catégorie des Snaps consommés.
Voici la répartition de la mémoire :
- Nombre maximal d‘emplacements : 1000
- Créneaux consommés (threads actifs + pipelines en cours d‘exécution) : 500
- Emplacements disponibles (maximum d‘emplacements + Snaps consommés) : 500
Exemple 1 : Le Snaplex n‘a pas atteint ses seuils et accepte les demandes de pipeline.
Dans cet exemple, je crée un pipeline avec, disons, 300 Snaps et je le planifie pour qu‘il s‘exécute sur ce Snaplex en créant une tâche. Lorsque l‘exécution de cette tâche est programmée, le Snaplex vérifie ses ressources disponibles, qui sont dans ce cas de 500. Puisqu‘il y a 500 emplacements disponibles, le Snaplex acceptera cette demande et la traitera. Cependant, toute autre demande faite à ce moment-là ne sera pas acceptée et sera mise en file d‘attente. Je reviendrai sur ces détails dans l‘exemple suivant.
Exemple 2 : Le Snaplex atteint sa valeur seuil et les pipelines sont mis en file d‘attente.
Dans cet exemple, j‘ai créé un grand pipeline avec 800 Snaps et je l‘ai programmé pour qu‘il s‘exécute. Lorsque cette demande est transmise au Snaplex, celui-ci vérifie les créneaux disponibles qui, dans ce cas, sont au nombre de 500. Évidemment, la demande est beaucoup plus grande que le nombre de slots que le Snaplex peut allouer, donc il la rejette et la met dans une file d‘attente. Une fois que le Snaplex a terminé le traitement des pipelines existants, il rend ses ressources disponibles et traite la demande suivante qui attend dans la file d‘attente. Voici un affichage des pipelines en file d‘attente dans le tableau de bord :
Reserved slot % : Le pourcentage des créneaux maximums alloués pour l‘exécution manuelle des pipelines, ces créneaux sont réservés uniquement à l‘exécution manuelle des pipelines. Lorsque les pipelines planifiés consomment tous les créneaux disponibles, les créneaux réservés garantissent que les pipelines peuvent encore être exécutés manuellement.
- Nombre maximal d‘emplacements : 1000
- Emplacement réservé % : 10 = 100
- Emplacements consommés : 900
- Emplacements disponibles (maximum d‘emplacements = % d‘emplacements réservés + emplacements consommés) : 0
Reprenons l‘exemple précédent et supposons que tous les créneaux disponibles sont occupés. Tout autre pipeline planifié sera mis en file d‘attente puisque les slots sont tous occupés. Cependant, comme les slots réservés sont affectés d‘une valeur, je peux toujours exécuter des pipelines à partir du SnapLogic Designer qui ne contient pas plus de 100 Snaps. Cependant, si j‘exécute des pipelines contenant plus de 100 Snaps, ils seront rejetés et mis en file d‘attente et un message d‘erreur (illustré ci-dessous) sera affiché à l‘utilisateur :
Le pourcentage de mémoire : Un autre facteur important pour mesurer le seuil Snaplex est la mémoire Snaplex. Lorsque je fixe le pourcentage de mémoire à, disons, 75 %, les demandes de pipeline sont acceptées jusqu‘à ce que 75 % de la mémoire Snaplex soit consommée. Une fois ce seuil atteint, toutes les autres demandes sont mises en file d‘attente et traitées ultérieurement, une fois la mémoire disponible.
Résumé
En résumé, les seuils Snaplex sont définis par l‘utilisateur et lorsqu‘un Snaplex atteint son seuil, les demandes de pipeline sont rejetées et marquées comme étant en file d‘attente dans le tableau de bord. Afin d‘éviter la surcharge des Snaplex, les utilisateurs peuvent ajuster leurs tâches programmées ou ajouter plus de nœuds à leurs Snaplex.