AWS Flow FrameworkGrundkonzepte: Verteilte Ausführung - AWS Flow Framework für Java

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

AWS Flow FrameworkGrundkonzepte: Verteilte Ausführung

EINWorkflow-InEs ist im Wesentlichen ein virtueller Ausführungs-Thread, der Aktivitäten und Orchestrierungslogik auf mehreren Remote-Computern umfassen kann. Amazon SWF und derAWS Flow Frameworkfungiert als Betriebssystem, das Workflow-Instanzen auf einer virtuellen CPU verwaltet, indem Sie:

  • Den Ausführungsstatus der jeweiligen Instance verwalten

  • Zwischen den Instances wechseln

  • Fortsetzen der Ausführung einer Instance an der Stelle, an der sie herausgeschaltet wurde

Workflow-Replay

Da Aktivitäten langwierig sein können, ist eine Blockierung durch den Workflow bis zu seinem Abschluss unerwünscht. Stattdessen wählt die MethodeAWS Flow Frameworkverwaltet die Workflow-Ausführung mit einemWiedergabe-Mechanismus, der den von Amazon SWF gepflegten Workflow-Verlauf hat, um den Workflow in Abständen auszuführen.

Jeder Abschnitt wiederholt die Workflow-Logik so, dass jede Aktivität nur einmal ausgeführt wird. Daher ist sichergestellt, dass Aktivitäten und asynchrone Methoden erst ausgeführt werden, wenn ihre Promise-Objekte bereit sind.

Der Workflow-Starter startet den ersten Replay-Abschnitt, sobald er die Workflow-Ausführung startet. Das Framework ruft die Einstiegspunktmethode des Workflows auf. Dann geht es folgendermaßen vor:

  1. Es führt alle Workflow-Aufgaben aus, die nicht vom Abschluss einer Aktivität abhängen, einschließlich des Aufrufs aller Aktivitäts-Client-Methoden.

  2. Es stellt Amazon SWF eine Liste von Aktivitäten bereit, die zur Ausführung eingeplant werden sollen. Für den ersten Abschnitt besteht diese Liste nur aus den Aktivitäten, die nicht von einem Promise-Objekt abhängig sind und sofort ausgeführt werden können.

  3. Es benachrichtigt Amazon SWF, dass der Abschnitt abgeschlossen ist.

Amazon SWF speichert die Aktivitätsaufgaben im Workflow-Verlauf und plant sie zur Ausführung ein, indem sie in die Aktivitätsaufgabenliste aufgenommen werden. Die Aktivitäts-Worker rufen die Aufgabenliste ab und führen die Aufgaben aus.

Wenn ein Aktivitäts-Worker eine Aufgabe erledigt, gibt er das Ergebnis an Amazon SWF zurück. Dort wird es im Workflow-Ausführungsverlauf aufzeichnet und eine neueWorkflow-Aufgabefür den Workflow-Worker, indem Sie ihn in die Workflow-Aufgabenliste einfügen. Der Workflow-Worker fragt die Aufgabenliste ab. Wenn er die Aufgabe erhält, führt er den nächsten Replay-Abschnitt wie folgt aus:

  1. Das Framework führt die Einstiegspunktmethode des Workflows aus. Dann geht es folgendermaßen vor:

    • Es führt alle Workflow-Aufgaben aus, die nicht vom Abschluss einer Aktivität abhängen, einschließlich des Aufrufs aller Aktivitäts-Client-Methoden. Das Framework überprüft jedoch den Ausführungsverlauf und plant keine doppelten Aktivitätsaufgaben.

    • Es prüft den Verlauf, um zu ermitteln, welche Aktivitätsaufgaben abgeschlossen wurden. Dann führt es alle asynchronen Workflow-Methoden aus, die von diesen Aktivitäten abhängen.

  2. Wenn alle ausführbaren Workflow-Aufgaben abgeschlossen sind, meldet sich das Framework bei Amazon SWF zurück:

    • Es gibt Amazon SWF eine Liste aller Aktivitäten, deren InputPromise<T>-Objekte sind seit dem letzten Abschnitt bereit geworden und können zur Ausführung eingeplant werden.

    • Wenn der Abschnitt keine zusätzlichen Aktivitätsaufgaben erzeugt hat, aber noch nicht abgeschlossene Aktivitäten vorhanden sind, benachrichtigt das Framework Amazon SWF, dass der Abschnitt abgeschlossen ist. Es wartet dann auf eine andere Aktivität, um den nächsten Replay-Abschnitt zu starten.

    • Wenn der Abschnitt keine zusätzlichen Aktivitätsaufgaben erzeugt hat und alle Aktivitäten abgeschlossen sind, benachrichtigt das Framework Amazon SWF, dass der Workflow-Ausführung abgeschlossen ist.

Beispiele zum Replay-Verhalten finden Sie unter AWS Flow Frameworkfür Java-Replay-Verhalten.

Replay und asynchrone Workflow-Methoden

Asynchrone Workflow-Methoden werden oft ähnlich wie Aktivitäten verwendet, denn die Methode verzögert die Ausführung, bis alle übergebenen Promise<T>-Objekte bereit sind. Der Replay-Mechanismus behandelt asynchrone Methoden jedoch anders als dies bei Aktivitäten der Fall ist.

  • Das Replay garantiert nicht, dass eine asynchrone Methode nur einmal ausgeführt wird. Es verzögert die Ausführung einer asynchronen Methode nur so lange, bis die ihr übergeben Promise-Objekte bereit sind. Dann führt er sie für alle folgenden Abschnitte aus.

  • Wenn eine asynchrone Methode abgeschlossen ist, startet sie keinen neuen Abschnitt.

Ein Beispiel für das Replay eines asynchronen Workflows finden Sie in AWS Flow Frameworkfür Java-Replay-Verhalten.

Replay und die Workflow-Implementierung

In den meisten Fällen müssen Sie sich nicht um die Einzelheiten des Replay-Mechanismus kümmern. Er arbeitet im Grunde hinter den Kulissen. Das Replay hat jedoch zwei wichtige Auswirkungen auf Ihre Workflow-Implementierung.

  • Verwenden Sie keine Workflow-Methoden, um langlaufende Aufgaben auszuführen, da das Replay die entsprechende Aufgabe mehrfach wiederholt. Auch asynchrone Workflow-Methoden werden typischerweise mehr als einmal ausgeführt. Verwenden Sie stattdessen für langlaufende Aufgaben Aktivitäten. Dann führt das Replay die Aktivitäten nur einmal aus.

  • Ihre Workflow-Logik muss vollständig deterministisch sein. Jeder Abschnitt muss dem gleichen Steuerungsfluss folgen. Beispielsweise sollte der Steuerungsfluss nicht von der aktuellen Zeit abhängen. Eine detaillierte Beschreibung des Replays und der deterministischen Anforderungen finden Sie unter Nichtdeterminismus.