Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Durable Task ist Microsoft Implementierung von Durable Execution, einem branchenweiten Ansatz, um gewöhnlichen Code fehlertolerant zu machen, indem der Fortschritt automatisch fortgesetzt wird. Es ist ein Framework zum Erstellen fehlertoleranter Workflows und Orchestrierungen als gewöhnlichen Code. Anstatt komplexe Wiederholungslogik, Zustandsautomaten oder Nachrichtenwarteschlangen zu verwalten, schreiben Sie Ihre Geschäftslogik als einfache Funktionen, und Durable Task übernimmt die Zustandspersistenz, automatische Wiederherstellung und verteilte Koordination für Sie.
Durable Task Workflows können über Stunden, Tage oder sogar Monate ausgeführt werden. Nach einem Absturz, einem Neustart oder einer erneuten Bereitstellung werden sie zuverlässig ab dem zuletzt abgeschlossenen Schritt fortgesetzt. Zu den gängigen Anwendungsfällen gehören verteilte Transaktionen, multi-agent KI-Orchestrierung, Datenverarbeitungspipelines und Infrastrukturverwaltung.
Der Rest dieses Artikels erklärt, wo Durable Task passt, welche Sprachen und Hosting-Modelle es unterstützt und wie es strukturiert ist, damit Sie entscheiden können, wie Sie fehlertolerante Anwendungen daraus bauen können.
Was eine dauerhafte Aufgabe beinhaltet
Dauerhafte Aufgaben umfassen:
- Die Durable Task SDKs für selbst gehostete Anwendungen.
- Die Durable Functions für serverloses Hosting auf Azure Functions.
- Der Durable Task Scheduler, ein vollständig verwalteter Back-End-Dienst, der für dauerhafte Workloads entwickelt wurde.
Anwendungsfälle für wichtige dauerhafte Aufgaben
Verwenden Sie "Dauerhafte Aufgabe", wenn Ihre Anwendung zuverlässige, langfristige Workflow-Orchestrierung über verteilte Dienste erfordert. Zu den häufigen Szenarios gehören:
- Langlaufende Prozesse: Durable Task kann den Zustand und den Fortschritt von Prozessen verwalten, die über längere Zeiträume laufen, trotz Unterbrechungen oder Fehlern. Beispiele hierfür sind Auftragsverarbeitung, Datenpipelinen, Schulungen zum Machine Learning-Modell und langfristige Simulationen.
- Parallele und Fan-out/Fan-in-Szenarien: Durable Task kann Arbeit koordinieren, die sich über mehrere Arbeiter verteilt, die parallel auf verschiedenen Maschinen laufen, und dann die Ergebnisse aggregieren. Beispiele hierfür sind Bildverarbeitung, MapReduce-Jobs und ETL-Workflows.
- Orchestrieren von Microservices und APIs: Durable Task kann die Arbeit über verteilte Dienste, APIs und Maschinen mit komplexem Kontrollfluss und Fehlerbehandlung koordinieren. Durable Task unterstützt außerdem verteilte Transaktionen, die das Saga-Muster verwenden, wobei jeder Schritt eine Kompensierungslogik besitzt, die automatisch ausgeführt wird, wenn ein späterer Schritt fehlschlägt.
- Automatisierung von Geschäftsprozessen: Durable Task kann komplexe, deterministische Geschäftsprozesse mit mehreren Schritten, Abhängigkeiten, Human-in-the-Loop und Fehlerbehandlung über lange Zeiträume hinweg automatisieren. Beispiele hierfür sind Supply Chain Management, Dokumentüberprüfung, Kunden-Onboarding und Identitätsüberprüfung.
- Infrastrukturautomatisierung: Durable Task kann die Bereitstellung, Konfiguration und Implementierung von Infrastruktur mit komplexen Abhängigkeiten und Fehlerbehandlung verwalten. Beispiele hierfür sind Cloudressourcenverwaltung und CI/CD-Pipelines.
- Multi-Agenten-Orchestrierung: Durable Task kann die Arbeit mehrerer KI-Agenten koordinieren und so eine zuverlässige Aufgabeneinhaltung über lange Horizonte sowie eine effiziente Nutzung von Token für komplexe, mehrstufige KI-Prozesse gewährleisten. Beispiele hierfür sind KI-Agents für umfassende Forschung, Codierung und Kundensupport.
Ein häufiges Thema in diesen Szenarien ist, dass sie Arbeit zu komplex, zu langwierig oder zu verteilt sind, um zuverlässig mit Ad-hoc-Code zu verwalten. Durable Task liefert die zugrundeliegenden Garantien – Persistenz, Fehlertoleranz und stateful Coordination – sodass Sie diese Arbeit als einfachen Code ausdrücken können.
Unterstützte Sprachen und Hostingmodelle für dauerhafte Aufgaben
Durable Task unterstützt mehrere Programmiersprachen über zwei Hosting-Modelle: Azure Functions (über die Durable Functions-Erweiterung) und Self-Hosting (über die eigenständigen Durable Task SDKs). Das Azure Functions-Hosting-Modell bietet eine vollständig verwaltete, serverlose Rechenumgebung mit integrierten Skalierungs- und Orchestrierungsfunktionen, während das selbstgehostete Modell das Ausführen langlebiger Anwendungen auf jeder Rechenplattform unterstützt, wie Azure Container Apps, Azure Kubernetes Service. Azure App Service, oder virtuelle Maschinen.
| Sprache | Azure Functions | Selbstgehostet |
|---|---|---|
| .NET (C#/F#) | Yes | Yes |
| JavaScript/TypeScript | Yes | Yes |
| Python | Yes | Yes |
| Java | Yes | Yes |
| PowerShell | Yes | No |
Hinweis
Das Durable Task Go SDK ist ebenfalls als von der Community unterstützte, Open-Source-Option für selbstgehostete Szenarien verfügbar, befindet sich jedoch noch in einer experimentellen Phase und wird für die Produktion noch nicht empfohlen.
Anleitungen zur Auswahl zwischen Azure Functions und selbst gehosteten Versionen finden Sie unter Choose Ihres Hostingmodells.
Durable Task-Architektur: SDK und State-Speicher-Backend
Die dauerhafte Aufgabe verfügt über zwei Hauptebenen: ein SDK , das Sie im Anwendungscode verwenden, und ein Zustandsspeicher-Back-End , das den Zustand verwaltet.
Dauerhaftes Aufgaben-SDK
Sie verwenden das Durable Task SDK, um Orchestrierungen, Aktivitäten und Entitäten in Ihrem Anwendungscode zu erstellen. Intern übernimmt es die Mechaniken der dauerhaften Ausführung – spielt Orchestratorfunktionen erneut ab, verwaltet den lokalen Ausführungskontext und kommuniziert mit dem Zustandsspeicher-Backend. Durable Task bietet mehrere SDK-Optionen in den unterstützten Sprachen und den beiden Hosting-Modellen: Azure Functions und selbstgehostet.
Anleitungen zur Auswahl zwischen diesen Optionen finden Sie unter "Auswählen Ihres Hostingmodells".
Zustandsspeicher-Back-End
Das Zustandsspeicher-Backend behält den Orchestrierungszustand, pflegt die Ausführungshistorie und koordiniert verteilte Skalierung über Recheninstanzen hinweg.
Die empfohlene Zustandsspeicheroption ist der Durable Task Scheduler – ein vollständig verwalteter Azure-Dienst, der speziell entwickelt und hochoptimiert für Durable Task-Workloads ist. Es funktioniert sowohl mit Durable Functions als auch mit den eigenständigen Durable Task SDKs und bietet den umfangreichsten Funktionssatz ohne eine Speicherinfrastruktur, die verwaltet werden muss.
Alternativ unterstützt Durable Functions mehrere bring-your-own (BYO)-SpeicherOptionen. Diese Optionen geben Ihnen mehr Kontrolle darüber, wo Sie den Status speichern, erfordern aber, dass Sie die zugrunde liegende Infrastruktur selbst bereitstellen und verwalten. BYO-Speicher-Back-Ends sind derzeit nur mit Durable Functions verfügbar.
Weitere Informationen zu Speicheroptionen finden Sie unter "Speicheranbieter".
Zusätzliche Ressourcen für dauerhafte Aufgaben
Forschungspublikationen
Microsoft entwickelt Durable Task in Zusammenarbeit mit Microsoft Research. Infolgedessen erstellt das Team Forschungsarbeiten und Artefakte, darunter:
- Durable Functions: Semantik für Stateful Serverless(OOPSLA'21)
- Serverlose Workflows mit Durable Functions und Netherite(preprint)
Videoübersicht
Das folgende Video hebt die Vorteile von Durable Functions hervor: