Parallelverarbeitungsalgorithmen anwenden
Sie können bei der Stapelverarbeitung auf verschiedene Weise vorgehen und Parallelverarbeitungsalgorithmen verwenden. Entwickler verwenden normalerweise drei verschiedene Arten der Parallelverarbeitung in ihren Entwürfen:
Modellierung einer einzelnen Aufgabe – Erstellt für jedes Arbeitselement eine eigene Stapelaufgabe. Diese Vorgehensweise eignet sich gut für eine kleinere Anzahl von Arbeitselementen und erleichtert im Vergleich zu den anderen parallelen Prozessen besonders die Erstellung von Abhängigkeiten zwischen Arbeitselementen. Auch die Entwicklung ist damit einfacher als bei den anderen parallelen Prozessen. Die Modellierung einer einzelnen Aufgabe ist aber für manche Aufgaben nicht das ideale Verfahren, da der zusätzliche Aufwand die Leistung beeinträchtigt und Verzögerungen zwischen den ausgeführten Stapelaufgaben verursacht.
Stapelbündelung – Verwendet eine begrenzte Anzahl von Stapelaufgaben mit einem Wert für die Bündelgröße (Anzahl der Arbeitselemente in jeder Stapelaufgabe). Diese Vorgehensweise eignet sich gut für einfache, gleichmäßige Workloads, bei denen die Verarbeitungszeiten ähnlich sind. In diesem Fall wird die Stapeltabelle nicht übermäßig mit Stapelaufgaben gefüllt. Bei angemessener Bündelgröße kann die Leistung verbessert werden. Bei zu großen oder zu kleinen Bündeln können Leistungsprobleme auftreten. Ungleichmäßige Workloads können bei dieser Vorgehensweise die Leistung beeinträchtigen, da die Verarbeitung der Stapelaufgaben zu unterschiedlichen Zeiten abgeschlossen wird.
Oberste Entnahme – Erstellt eine begrenzte Anzahl von Stapelaufgaben, wobei jede Stapelaufgabe das erste freie Arbeitselement auswählt und verarbeitet. Für diesen Prozess ist eine Stagingtabelle zum Speichern von Arbeitselementen erforderlich, aus denen Stapelaufgaben verarbeitet werden können. Diese Vorgehensweise funktioniert gut, wenn der Workload ungleichmäßig ist und unterschiedliche Verarbeitungszeiten aufweist. Auch wird die Stapeltabelle ist auch nicht mit Stapelaufgaben überfüllt, für die diese Vorgehensweise verwendet wird. Wenn mehrere kleine Arbeitselemente verarbeitet werden müssen, kann die Verfolgung der Arbeitselemente in der Stagingtabelle die Leistung beeinträchtigen.
Einige wichtige Überlegungen zur Auswahl eines Ansatzes sind folgende:
- Workload-Eigenschaften
- Wählen Sie individuelle Aufgabe-Modellierung für kleine, voneinander abhängige Workloads aus.
- Entscheiden Sie sich für die Batch-Bündelung bei einheitlichen Aufgaben mit vorhersehbaren Bearbeitungszeiten.
- Verwenden Sie die Top-Picking-Methode für ungleichmäßige Arbeitsbelastungen, die Flexibilität benötigen.
- Leistungsoptimierung
- Minimieren Sie den Overhead, indem Sie die unnötige Batch-Erstellung von Aufgabe vermeiden.
- Experimentieren Sie mit Bündelgrößen bei der Batch-Bündelung, um eine optimale Balance zu finden.
- Implementierungskomplexität
- Beginnen Sie mit individueller Aufgabenmodellierung für einfache Anforderungen.
- Wechseln Sie zur Batch-Bündelung oder Top-Picking, wenn Workloads komplexer werden.
Beispielszenario
Stellen Sie sich vor, ein Unternehmen bearbeitet Verkaufsaufträge täglich. Die Validierung kleiner Bestellungen (unter 1.000 USD) dauert nur wenige Sekunden. Große Bestellungen (über 10.000 USD) erfordern eine manuelle Genehmigung, die mehrere Minuten in Anspruch nimmt.
Eine Lösung für dieses Problem besteht darin, Top-Picking zu verwenden. Verwenden Sie eine Staging-Tabelle, um Aufgaben nach Auftragsgröße und Priorität dynamisch Batch-Prozessen zuzuordnen.