Fermer

avril 22, 2021

Traitement par lots des enregistrements dans MuleSoft 4


Supposons que nous ayons des millions d’enregistrements qui doivent être migrés d’un système à un autre. Dans ce cas, nous pouvons utiliser le traitement par lots dans MuleSoft.

Présentation du traitement par lots

Contrairement à d'autres méthodes de traitement des enregistrements par lots, un travail par lots est asynchrone et utilise un traitement parallèle avec un contrôle précis de la gestion des erreurs. Ci-dessous, je discuterai des concepts de base du traitement par lots dans MuleSoft 4.

L'entrée des travaux par lots doit être une collection. Les travaux par lots divisent les données en enregistrements individuels, exécutent des actions sur chaque enregistrement et traitent chaque enregistrement de manière asynchrone. Il enregistre chaque enregistrement dans un stockage persistant. Au cas où le travail se bloque, il reprendra là où il s'est arrêté et rapportera le résultat.

Voici un exemple de travail par lots dans MuleSoft, qui lira les fichiers et traitera les enregistrements par lots et insérera des enregistrements dans la base de données: [19659004]  Lot 1

Configuration des travaux par lots et instance des travaux par lots

Un travail par lots est une étendue qui comprend trois phases distinctes. Ces phases sont phase de chargement et d'expédition phase de processus et phase complète .

L'instance de travail par lots est générés pendant la phase de chargement et d'expédition. L'ID représente une instance exécutive d'un travail par lots et est stocké dans un magasin d'objets persistant. L'ID de l'instance de lot est associé à la file d'attente persistante qui est également créée lors de la phase de chargement et de distribution.

L'extrait ci-dessous fait référence à la configuration du travail par lots comme indiqué dans Anypoint Studio:

 Batch 2 [19659004] Nombre maximal d'enregistrements ayant échoué indique le nombre d'enregistrements ayant échoué qui devraient être autorisés. Par défaut, il est égal à 0, ce qui signifie qu'aucun enregistrement ayant échoué ne sera autorisé. En d'autres termes, cela signifie qu'aucun échec ne sera autorisé.

Supposons que vous traitez quelques enregistrements et que vous avez défini les enregistrements ayant échoué à 0. En cas d'échec à l'étape 1, car nous traitons des milliers d'enregistrements et cela échoue, il continuera à traiter ces enregistrements, mais il ignorera les autres étapes. Il n’exécutera pas les étapes restantes, donc tous les enregistrements iront à l’étape 1 et il passera directement à la phase de fin d’achèvement.

Si défini sur -1, il continuera avec les autres étapes même si l’échec est survenu; vous pourrez peut-être gérer les échecs dans d'autres étapes.

Stratégie de planification : Il peut y avoir plusieurs instances de travail par lots qui sont dans un état exécutable pour réduire les ressources de calcul afin que nous puissions avoir une stratégie de planification. Par défaut, il est ordonné séquentiellement, ce qui signifie que celui qui arrive en premier sera exécuté en premier, ou vous pouvez utiliser la stratégie de planification à tour de rôle et il fonctionnera sur une base de partage de temps.

 Lot 3 ]

Par défaut, la taille de bloc de lot est de 100. Dans la phase de chargement et de distribution, une file d'attente persistante est générée et les enregistrements sont conservés dans cette file d'attente. Ensuite, supposons que nous ayons quatre enregistrements dans une file d'attente et que la taille du bloc par lots soit définie sur 2, ce qui signifie que nous avons un travail par lots qui comporte deux étapes.

Une fois que la file d'attente est remplie dans la phase de traitement, cela prendra deux enregistrements à la fois et les charger dans la mémoire et commencer le traitement pour obtenir une opération IO. À l'aide de cette opération d'E / S, les enregistrements passeront aux étapes de traitement par lots et seront traités, repoussés dans la file d'attente et passer à l'étape 2. Par la suite, il passera à l'ensemble d'enregistrements suivant. Ainsi, la taille du bloc de lots indique effectivement le nombre d'opérations d'E / S nécessaires pour charger les enregistrements dans la mémoire, puis les traiter. Si vous conservez un enregistrement bas, la taille du bloc de lots sera faible et le nombre d'opérations d'E / S augmentera. Si c'est du côté supérieur, le nombre d'opérations d'E / S est réduit.

Max Concurrency est le parallélisme que nous voulons. Par défaut, MuleSoft est livré avec deux multipliés par le nombre de cœurs. Si nous avons quatre processeurs de base multipliés par deux, cela devient huit; s'il est hyper-threadé, il est le double.

Configuration des étapes par lots

 Plateformes et technologie - Un guide des chefs d'entreprise sur les principales tendances du cloud

 Lot 4

Une étape par lots a le configuration suivante:

Nom : Le nom que vous souhaitez afficher dans l'interface utilisateur.

Accepter l'expression : Il contiendra les données de l'expression, qui une fois évaluée true permettra à l'enregistrement d'entrer dans une étape de lot particulière.

Accepter la politique : Cela aura trois options: no failures all et échecs uniquement .

Aucun échec n'est le comportement par défaut si vous ne voulez pas que les enregistrements ayant échoué entrent dans vos étapes de traitement par lots. Si vous voulez que tous les types d'enregistrements – enregistrements réussis ou échoués – entrent dans votre étape de traitement par lots, vous pouvez choisir tous . Si vous ne voulez gérer que les échecs, vous ne pouvez choisir que les échecs.

Assurez-vous que vous définissez la valeur max.

Batch Aggregator

Il s'agit d'une portée facultative. Supposons que vous souhaitiez envoyer des données vers une base de données et que vous puissiez insérer une base de données lors de la phase de traitement, mais imaginez que 1 000 enregistrements sont en cours de traitement. Dans ce cas, vous pouvez faire une insertion en bloc et c'est là que l'agrégateur de lots entre en scène.

Taille de l'agrégateur et streaming : Ces deux valeurs sont mutuellement exclusifs, ce qui signifie que vous ne pouvez pas fixer la taille de l'agrégat avec le streaming; l'un ou l'autre peut être activé à la fois.

Taille agrégée : Vous pouvez coder en dur la taille de l'agrégat et cela devient un agrégateur de taille fixe, ce qui signifie que si vous mettez 1000, une fois les 1000 enregistrements traités à l'étape 1, ils seront collectés dans un agrégateur de lots. La charge utile sera disponible sous une forme de collection qui, s'il s'agit d'un JSON, est un tableau et vous pouvez pousser les données vers la base de données.

Streaming : Si vous transformez des données et que vous souhaitez pousser les données vers certains fichiers, c'est une bonne idée d'utiliser le streaming. Dans ce cas, les données seront diffusées dans le fichier. Cependant, l'un des inconvénients majeurs de l'utilisation d'un flux est qu'il n'est pas répétable. Il s’agit d’un itérateur avant uniquement.

Phases du traitement par lots

Comme mentionné ci-dessus, le traitement par lots comporte trois phases différentes. Dans cette partie, je donnerai plus de détails sur le sujet.

Phase de chargement et d'expédition:

C'est une phase implicite et ne peut pas être visible dans la palette. Les données seront chargées dans la file d'attente persistante et le pool de threads sera généré, où le thread sera deux multiplié par le nombre de cœurs de processeur.

Voici les étapes qui seront exécutées pendant cette phase:

  • Fractionner le message, et la nouvelle instance de travail par lots sera créée.
  • La file d'attente persistante sera créée et associée à la nouvelle instance de travail par lots. Nous pouvons voir la file d'attente dans le gestionnaire d'exécution.
  • Pour chaque enregistrement séparé du message, MuleSoft créera une entrée dans la file d'attente qui contient deux parties de données et de métadonnées.
  • Traitez tous les enregistrements mis en file d'attente et passez à la première étape de lot.

Phase de procédé:

La phase de procédé comprend les étapes de lot. Il peut inclure plusieurs étapes de traitement par lots et encore une fois, l'étape de traitement par lots est divisée en deux sections: la section de traitement et la section d'agrégation. La section d'agrégation elle-même est une étendue qui ne comporte pas de phases multiples. Les étapes sont exécutées dans un ordre séquentiel pour chaque enregistrement.

Voici les étapes exécutées dans cette phase:

  • L'enregistrement se déplace dans les processeurs lors de la première étape de lot et est renvoyé à la file d'attente d'origine pendant qu'il attend d'être traité . À l'étape de lot suivante, les métadonnées contenant les étapes de lot détaillent ce qui est terminé.
  • Répétez cette procédure jusqu'à ce que chaque enregistrement soit passé par chaque étape de lot.
  • Les enregistrements sont extraits de la file d'attente pour chaque étape de lot, traités et puis renvoyé dans la file d'attente. Chaque enregistrement garde une trace des étapes traitées pendant qu'il se trouve dans cette file d'attente.
  • MuleSoft garde une trace de tous les enregistrements à mesure qu'ils réussissent ou échouent à traiter chaque étape de lot.

À la phase complète:

Ceci La section est facultative et ne s'exécute que lorsque des étapes de traitement par lots sont exécutées pour tous les enregistrements entrants. Ceci est principalement utilisé pour fournir des rapports de traitement par lots. Par exemple, le nombre total d'enregistrements traités, échoués, traités avec succès, etc. Dans cette phase, MuleSoft met à jour la charge utile avec les valeurs d'état des travaux par lots.

Nous obtenons un objet de résultat par lots qui contient le nombre d'enregistrements réussis, d'enregistrements ayant échoué et nous découvrez les étapes dans lesquelles les enregistrements ont échoué. À des fins de création de rapports, vous pouvez créer une vue de données, obtenir les détails et déclencher une notification par e-mail ou l'envoyer vers une autre base de données.

Si vous devez migrer des milliers d'enregistrements d'un système à un autre, la capacité de traitement par lots de MuleSoft 4 peut vous aider à automatiser le processus en quelques étapes simples. Le traitement par lots peut aider à réduire le nombre d'enregistrements défectueux que votre équipe de développement doit traiter manuellement.

Contactez-nous pour en savoir plus sur ce que vous pouvez faire avec MuleSoft.

Ressources et références:

https://docs.mulesoft.com/mule-runtime/4.3/batch-processing-concept

https://videos.mulesoft.com/watch /L3rvjCsFeNGZMD1ZJV2e3F? Elle possède une expérience pratique du développement d'applications Mule et de l'intégration de l'architecture orientée services (SOA) et de l'intégration d'applications d'entreprise (EAI) à l'aide des environnements d'exécution Mule.

Plus de cet auteur




Source link

Revenir vers le haut