Dauerhafter Aufgabenplaner

Der Dauerhafte Vorgangsplaner stellt eine dauerhafte Ausführung in Azure bereit. Die dauerhafte Ausführung ist ein fehlertoleranter Ansatz zum Ausführen von Code, der Fehler und Unterbrechungen durch automatische Wiederholungen und Zustandspersistenz verarbeitet. Die dauerhafte Ausführung hilft bei Szenarien wie:

  • Verteilte Transaktionen
  • Multi-Agent-Orchestrierung
  • Datenverarbeitung
  • Infrastrukturverwaltung

Der dauerhafte Vorgangsplaner ist der empfohlene Speicheranbieter für Durable Functions und die SDKs für dauerhafte Aufgaben.

Unterstützte SKUs

Für Durable Functions können Sie den Durable Task Scheduler mit irgendeiner der Funktions-SKUs verwenden.

Für die Durable Task-SDKs können Sie den langlebigen Aufgabenplaner mit jeder Compute-Ressource verwenden.

Der Scheduler selbst bietet zwei Abrechnungs-SKUs:

Unterstützte Regionen

Der dauerhafte Vorgangsplaner ist in den meisten Azure Regionen verfügbar. Führen Sie den folgenden Befehl aus, um die aktuelle Liste der verfügbaren Regionen abzurufen:

az provider show --namespace Microsoft.DurableTask --query "resourceTypes[?resourceType=='schedulers'].locations | [0]" --out table

Erwägen Sie die Verwendung derselben Region für Ihre Durable Functions-App und die Ressourcen für den dauerhaften Aufgabenplaner, um die Leistung und bestimmte netzwerkbezogene Funktionen zu optimieren.

Orchestrierungsframeworks

Der dauerhafte Vorgangsplaner funktioniert sowohl mit Durable Functions als auch mit the Durable Task SDKs. Wählen Sie aus, welches Framework für Ihr Projekt am besten geeignet ist.

Architektur

Für alle dauerhaften Aufgabenplanungs-Orchestrierungs-Frameworks können Sie Scheduler-Instanzen des Typs Microsoft.DurableTask/scheduler mit dem Azure Resource Manager erstellen. Jede Scheduler-Ressource verfügt intern über eigene dedizierte Compute- und Speicherressourcen, die optimiert sind für:

  • Verteilen von Orchestrator-, Aktivitäts- und Entitätsarbeitselementen
  • Speichern und Abfragen des Verlaufs im großen Maßstab mit minimaler Latenz
  • Bereitstellen einer umfassenden Überwachungserfahrung über das Dashboard "Durable Task Scheduler"

Im Gegensatz zu den BYO-Speicheranbietern ist der Durable Task Scheduler ein speziell entwickelter Back-End-as-a-Service, der für die spezifischen Anforderungen des Durable Task Framework optimiert ist.

Das folgende Diagramm zeigt die Architektur des Backends "Durable Task Scheduler" und deren Interaktion mit verbundenen Apps.

Screenshot der Architektur

Betriebstrennung

Der Permanente Vorgangsplaner wird in Azure als separate Ressource von Ihrer App ausgeführt. Diese Isolation ist aus mehreren Gründen wichtig:

  • Verringerter Ressourcenverbrauch
    Durch das Entladen der Zustandsverwaltung auf einen verwalteten Scheduler wird die CPU- und Arbeitsspeicherauslastung in Ihrer App im Vergleich zu einem BYO-Speicheranbieter reduziert.

  • Fehlerisolation
    Durch das Trennen des Schedulers von der App wird das Risiko von Kaskadierungsfehlern reduziert und die Gesamtsicherheit in verbundenen Apps verbessert.

  • Unabhängige Skalierung
    Die Planerressource kann unabhängig von der App skaliert werden, um die Ressourcenverwaltung und Kostenoptimierung der Infrastruktur zu verbessern. Beispielsweise können mehrere Apps dieselbe Planerressource gemeinsam nutzen, was für Organisationen mit mehreren Teams oder Projekten hilfreich ist.

  • Verbesserte Unterstützung
    Der permanente Aufgabenplaner ist ein verwalteter Dienst, der optimierte Unterstützung und Diagnose für Probleme in Bezug auf die zugrunde liegende Infrastruktur bereitstellt.

App-Konnektivität

Ihre Apps stellen über eine gRPC-Verbindung eine Verbindung mit der Schedulerressource her, gesichert mithilfe von TLS und authentifiziert durch die Identität der App. Die Endpunktadresse befindet sich in einem ähnlichen Format wie {scheduler-name}.{region}.durabletask.io. Beispiel: myscheduler-123.westus2.durabletask.io.

Für Szenarien, die private Konnektivität erfordern, können Sie private Endpunkte verwenden, um den Datenverkehr über einen privaten Link in Ihrem virtuellen Netzwerk anstelle des öffentlichen Internets an den Scheduler weiterzuleiten.

Arbeitsaufgaben werden vom Zeitplaner mithilfe eines Pushmodells an die App gestreamt, wodurch die End-to-End-Latenz verringert und die Anforderung für die Abfrage entfernt wird. Ihre Apps können mehrere Arbeitsposten parallel verarbeiten und Antworten an den Planer zurücksenden, wenn die entsprechende Orchestrierung, Aktivität oder Entitätsaufgabe abgeschlossen ist.

Zustandsverwaltung

Der Durable Task Scheduler verwaltet den Status von Orchestrierungen und Entitäten intern, ohne ein separates Speicherkonto für die Zustandsverwaltung. Der interne Zustandsspeicher ist hoch optimiert für die Verwendung mit Durable Functions und den Durable Task SDKs, was zu einer besseren Haltbarkeit und Zuverlässigkeit und reduzierter Latenz führt.

Der Scheduler verwendet eine Kombination aus speicherinternem und persistentem internen Speicher, um den Zustand zu verwalten.

  • Der speicherinterne Speicher wird für den kurzlebigen Zustand verwendet.
  • Der persistente Speicher wird für die Wiederherstellung und für Abfragevorgänge mit mehreren Instanzen verwendet.

Merkmale im Überblick

Wenn Sie eines der Permanent Task Scheduler-Orchestrierungsframeworks implementieren, profitieren Sie von mehreren wichtigen Highlights.

Dashboard für den langlebigen Aufgabenplaner

Wenn eine Planerressource erstellt wird, wird ein entsprechendes Dashboard sofort bereitgestellt. Das Dashboard bietet eine Übersicht über alle Orchestrierungen und Entitätsinstanzen und ermöglicht Folgendes:

  • Filtern Sie schnell nach verschiedenen Kriterien.
  • Sammeln Sie Daten zu einer Orchestrierungsinstanz, z. B. Status, Dauer, Eingabe/Ausgabe usw.
  • Führen Sie ein Drilldown einer Instanz aus, um Daten über Unterorchestrierungen und Aktivitäten zu erhalten.
  • Führen Sie Verwaltungsvorgänge aus, z. B. Anhalten, Beenden oder Neustarten einer Orchestrierungsinstanz.

Der Zugriff auf das Dashboard wird durch Identitäts- und rollenbasierte Zugriffssteuerungen gesichert.

Weitere Informationen finden Sie unter Debuggen und Verwalten von Orchestrierungen mithilfe des Dashboards "Durable Task Scheduler".

Verschiedene Aufgaben-Knotenpunkte

Der Zustand wird in einem Aufgabenhub dauerhaft beibehalten. Ein Aufgabenhub:

  • Ist ein logischer Container für Orchestrierungs- und Entitätsinstanzen.
  • Bietet eine Möglichkeit zum Partitionieren des Zustandsspeichers.

Mit einer Planerinstanz können Sie mehrere Aufgabenhubs erstellen, die von verschiedenen Apps verwendet werden können. Jeder Aufgabenhub erhält ein eigenes Überwachungsdashboard. Um auf einen Aufgabenhub zuzugreifen, muss die Identität des Aufrufers über die erforderlichen rollenbasierten Zugriffssteuerungsberechtigungen (RBAC) verfügen.

Durch das Erstellen mehrerer Aufgabenhubs werden verschiedene Workloads isoliert, die unabhängig verwaltet werden können. Du hast beispielsweise folgende Möglichkeiten:

  • Erstellen Sie einen Aufgabenhub für jede Umgebung (Dev, Test, prod).
  • Erstellen Sie Aufgabenhubs für verschiedene Teams innerhalb Ihrer Organisation.
  • Teilen Sie dieselbe Schedulerinstanz für mehrere Apps.

Die Planerfreigabe ist eine hervorragende Möglichkeit, Kosten zu optimieren, wenn mehrere Teams Szenarien haben, die Orchestrierungen erfordern.

Hinweis

Obwohl Sie mehrere Task-Hubs in einer Planerinstanz erstellen können, verwenden sie dieselben Ressourcen. Wenn ein Aufgabenhub stark geladen ist, kann er sich auf die Leistung anderer Aufgabenhubs auf demselben Zeitplan auswirken.

Emulator für lokale Entwicklung

Der Emulator "Durable Task Scheduler " ist eine einfache Version des Scheduler-Back-End, das lokal in einem Docker-Container ausgeführt wird. Sie können damit folgende Aufgaben durchführen:

  • Entwickeln und testen Sie Ihre App, ohne sie für Azure bereitzustellen.
  • Überwachen und verwalten Sie Ihre Orchestrierungen und Entitäten genau wie in Azure.

Anweisungen zum Einrichten finden Sie unter Ausführen des Emulators "Durable Task Scheduler".

Hinweis

Der Emulator speichert die Orchestrierung und den Entitätszustand intern im lokalen Speicher, sodass er nicht für die Produktionsverwendung geeignet ist.

Aufbewahrungsrichtlinien für die automatische Wiederverwendung

Veraltete Orchestrierungsdaten sollten regelmäßig gelöscht werden, um eine effiziente Speichernutzung sicherzustellen. Das Feature „AutoPurge“ für den langlebigen Aufgabenplaner bietet eine optimierte, konfigurierbare Lösung zum automatischen Verwalten der Orchestrierungsinstanz. Erfahren Sie mehr über das Festlegen von Autopurge-Aufbewahrungsrichtlinien für den Durable Task Scheduler.

Einschränkungen und Überlegungen

  • Zeitplankontingent:

    Je nach SKU für die Abrechnung sind Sie in der Anzahl der Planer, die Sie erstellen können, eingeschränkt.

  • Task Hub Kontingent:

    Je nach Abrechnungs-SKU sind Sie eingeschränkt, wie viele Aufgabenhubs Sie verwenden können.

    Für mehr Kontingent, Support kontaktieren.

  • Maximale Nutzlastgröße:

    Der Permanente Vorgangsplaner verfügt über eine maximale Nutzlastgrößenbeschränkung für die folgenden JSON-serialisierten Datentypen:

    Datentyp Maximale Größe
    Orchestrator-Eingaben und -Ausgaben 1 MB
    Aktivitätseingaben und -ausgaben 1 MB
    Externe Ereignisdaten 1 MB
    Benutzerdefinierter Orchestrierungsstatus 1 MB
    Entitätsstatus 1 MB

    Wenn Ihre Daten diese Grenzwerte überschreiten, finden Sie unter Unterstützung für große Nutzlasten verfügbare Problemumgehungen.

  • Länge der Orchestrierungsinstanz-ID:

    Orchestrierungsinstanz-IDs sind auf eine maximale Länge von 100 Zeichen beschränkt.

    • Zulässige Zeichen: Nur druckbare ASCII-Zeichen (Buchstaben, Zahlen, Symbole wie -, _, ., usw. Zeichen 0x20 bis 0x7E)
    • Mindestlänge: 1 Zeichen (darf nicht leer sein)
    • Instanz-IDs, die mit @beginnen, sind für Entitäten reserviert.
  • Funktionsgleichheit:

    Erweiterte Sitzungen werden von durable Task Scheduler nicht unterstützt.