AWS Flow FrameworkConcepts de base : Exécution distribuée - AWS Flow Framework pour Java

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

AWS Flow FrameworkConcepts de base : Exécution distribuée

UNinstance de workflowest essentiellement un thread virtuel d'exécution qui peut couvrir des activités et la logique d'orchestration s'exécutant sur plusieurs ordinateurs distants. Amazon SWF et le fichier deAWS Flow Frameworkfonctionne comme un système d'exploitation qui gère les instances de flux de travail sur un processeur virtuel en :

  • Maintenant l'état d'exécution de chaque instance.

  • Basculant entre les instances.

  • Reprenant l'exécution d'une instance à l'endroit où elle avait été basculée.

Reproduction des flux de travail

Étant donné que les activités peuvent être de longue durée, il n'est pas souhaitable que le flux de travail soit simplement bloqué jusqu'à ce qu'il soit terminé. C'est laAWS Flow Frameworkgère l'exécution du flux de travail à l'aide d'unrejouer, qui s'appuie sur l'historique des flux de travail maintenu par Amazon SWF pour exécuter le flux de travail par épisodes.

Chaque épisode reproduit la logique du flux de travail de façon à exécuter chaque activité une seule fois, et veille à ce que les activités et les méthodes asynchrones ne s'exécutent pas avant que leurs objets Promise soient prêts.

Le démarreur de flux de travail lance le premier épisode de reproduction en même temps que l'exécution du flux de travail. L'infrastructure appelle la méthode de point d'entrée du flux de travail et :

  1. Exécute toutes les tâches de flux de travail qui ne dépendent pas de la fin de l'activité, y compris appeler toutes les méthodes client d'activité.

  2. Donne à Amazon SWF une liste des tâches d'activité à planifier pour l'exécution. Pour le premier épisode, cette liste comporte uniquement les activités qui ne dépendent pas d'un objet Promise et peuvent être exécutées immédiatement.

  3. Notifie à Amazon SWF que l'épisode est terminé.

Amazon SWF stocke les tâches d'activité dans l'historique des flux de travail et les planifie pour l'exécution en les plaçant dans la liste des tâches d'activité. Les exécuteurs d'activité interrogent la liste de tâches et exécute ces dernières.

Lorsqu'un exécuteur d'activité termine une tâche, il renvoie le résultat à Amazon SWF, qui l'enregistre dans l'historique d'exécution du flux de travail et planifie une nouvelle tâche.tâche de workflowpour le travailleur de flux de travail en le plaçant dans la liste des tâches du flux de travail. L'exécuteur de flux de travail interroge la liste de tâches et lorsqu'il reçoit la tâche, il exécute le prochain épisode de reproduction, comme suit:

  1. L'infrastructure exécute de nouveau la méthode de point d'entrée du flux de travail et :

    • Exécute toutes les tâches de flux de travail qui ne dépendent pas de la fin de l'activité, y compris appeler toutes les méthodes client d'activité. Pourtant, l'infrastructure vérifie l'historique d'exécution et ne planifie aucune tâche d'activité en double.

    • Vérifie l'historique pour consulter les tâches d'activité qui ont été terminées et exécute n'importe quelle méthode de flux de travail asynchrone qui dépend de ces activités.

  2. Lorsque toutes les tâches de flux de travail qui pourraient être exécutées sont terminées, l'infrastructure le signale à Amazon SWF :

    • Il fournit à Amazon SWF une liste de toutes les activités dont les données sont entréesPromise<T>les objets sont devenus prêts depuis le dernier épisode et peuvent être planifiés pour l'exécution.

    • Si l'épisode n'a généré aucune tâche d'activité supplémentaire mais que certaines activités ne sont pas encore terminées, l'infrastructure notifie à Amazon SWF que l'épisode est terminé. Ensuite, il attend qu'une autre activité soit terminée, en lançant le prochain épisode de reproduction.

    • Si l'épisode n'a généré aucune tâche d'activité supplémentaire et que toutes les activités sont terminées, l'infrastructure notifie à Amazon SWF que l'exécution du flux de travail est terminée.

Pour obtenir des exemples du comportement de reproduction, consultez AWS Flow Frameworkpour les comportements de relecture Java.

Reproduction et méthodes de flux de travail asynchrones

Les méthodes de flux de travail asynchrones sont souvent utilisées comme les activités, car la méthode diffère l'exécution jusqu'à ce que tous les objets Promise<T> d'entrée soient prêts. Pourtant, le mécanisme de reproduction gère les méthodes asynchrones différemment des activités.

  • La reproduction ne garantit pas qu'une méthode asynchrone s'exécutera seulement une fois. Elle diffère l'exécution sur une méthode asynchrone jusqu'à ce que ses objets Promise d'entrée soient prêts, mais elle exécute ensuite cette méthode pour tous les épisodes suivants.

  • Lorsqu'une méthode asynchrone se termine, elle ne lance pas un nouvel épisode.

Un exemple de reproduction d'un flux de travail asynchrone est proposé dans AWS Flow Frameworkpour les comportements de relecture Java.

Implémentation de reproduction et de flux de travail

Dans la plupart des cas, vous n'avez pas besoin de vous préoccuper des détails du mécanisme de reproduction. Il s'agit essentiellement d'une opération qui se déroule en arrière-plan. Pourtant, la reproduction possède deux implications importantes pour l'implémentation de votre flux de travail.

  • N'utilisez pas de méthodes de flux de travail pour exécuter des tâches de longue durée, car la reproduction répétera cette tâche plusieurs fois. Même les méthodes asynchrones s'exécutent généralement plus d'une fois. À la place, utilisez les activités pour les tâches de longue durée ; la reproduction exécute les activités une seule fois.

  • Votre logique de flux de travail doit être totalement déterministe ; chaque épisode doit prendre le même chemin de flux de contrôle. Par exemple, le chemin de flux de contrôle ne doit pas dépendre de l'heure actuelle. Pour obtenir une description détaillée de la reproduction et des exigences en matière de déterminisme, consultez Non-déterminisme.