Schemaläggare för varaktiga uppgifter

Durable Task Scheduler tillhandahåller beständig körning i Azure. Varaktig körning är en feltolerant metod för att köra kod som hanterar fel och avbrott genom automatiska återförsök och tillståndsbeständighet. Hållbar exekvering hjälper till med scenarier som:

  • Distribuerade transaktioner
  • Orkestrering med flera agenter
  • Databehandling
  • Infrastrukturhantering

Durable Task Scheduler är den rekommenderade lagringsprovidern för Durable Functions och durable task SDK:er.

SKU:er som stöds

För Durable Functions kan du använda Durable Task Scheduler med någon av Functions SKU:er.

För Durable Task SDK:er kan du använda Durable Task Scheduler med valfri beräkning.

Själva schemaläggaren erbjuder två olika fakturerings-SKU:er.

Regioner som stöds

Durable Task Scheduler är tillgängligt i de flesta Azure regioner. Kör följande kommando för att hämta den aktuella listan över tillgängliga regioner:

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

Överväg att använda samma region för din Durable Functions-app och durable task scheduler-resurserna för att optimera prestanda och vissa nätverksrelaterade funktioner.

Orkestreringsramverk

Durable Task Scheduler fungerar med både Durable Functions och durable task SDK:er. Välj vilket ramverk som passar bäst för projektet.

Arkitektur

För alla Durable Task Scheduler-orkestreringsramverk kan du skapa scheduler-instanser av typen Microsoft. DurableTask/scheduler med hjälp av Azure Resource Manager. Varje scheduler-resurs har internt sina egna dedikerade beräknings- och minnesresurser optimerade för:

  • Skicka orkestrerings-, aktivitets- och entitetsarbetsobjekt
  • Lagra och fråga historik i stor skala med minimal svarstid
  • Ge en omfattande övervakningsupplevelse via Durable Task Scheduler-instrumentpanelen

Till skillnad från BYO-lagringsprovidrar är Durable Task Scheduler-providern en specialbyggd serverdel som en tjänst som är optimerad för de specifika behoven i Durable Task Framework.

Följande diagram visar arkitekturen för durable task scheduler-serverdelen och dess interaktion med anslutna appar.

Skärmbild av arkitekturen Durable Task Scheduler som visar serverdelstjänsten som ansluter till appar via gRPC.

Driftsavgränsning

Durable Task Scheduler körs i Azure som en separat resurs från din app. Den här isoleringen är viktig av flera skäl:

  • Minskad resursförbrukning
    Om du avlastar tillståndshantering till en hanterad schemaläggare minskar processor- och minnesförbrukningen i din app jämfört med att använda en BYO-lagringsprovider.

  • Felisolering
    Om du separerar schemaläggaren från appen minskar risken för sammanhängande fel och förbättrar den övergripande tillförlitligheten i dina anslutna appar.

  • Oberoende skalning
    Scheduler-resursen kan skalas oberoende av appen för bättre hantering av infrastrukturresurser och kostnadsoptimering. Till exempel kan flera appar dela samma scheduler-resurs, vilket är användbart för organisationer med flera team eller projekt.

  • Förbättrad supportupplevelse
    Durable Task Scheduler är en hanterad tjänst som ger strömlinjeformad support och diagnostik för problem med den underliggande infrastrukturen.

Appanslutning

Dina appar ansluter till scheduler-resursen via en gRPC-anslutning som skyddas med hjälp av TLS och autentiseras av appens identitet. Slutpunktsadressen är i ett format som liknar {scheduler-name}.{region}.durabletask.io. Till exempel myscheduler-123.westus2.durabletask.io.

För scenarier som kräver privat anslutning kan du använda privata slutpunkter för att dirigera trafik till schemaläggaren via en privat länk i det virtuella nätverket i stället för det offentliga Internet.

Arbetsobjekt strömmas från schemaläggaren till appen med hjälp av en push-modell, vilket förbättrar änd-till-änd-latens och tar bort behovet av pållning. Dina appar kan bearbeta flera arbetsobjekt parallellt och skicka svar tillbaka till schemaläggaren när motsvarande orkestrering, aktivitet eller entitetsaktivitet har slutförts.

Statushantering

Durable Task Scheduler hanterar statusen för orkestreringar och entiteter internt, utan ett separat lagringskonto för tillståndshantering. Det interna tillståndsarkivet är mycket optimerat för användning med Durable Functions och Durable Task SDK:er, vilket ger bättre hållbarhet och tillförlitlighet och kortare svarstid.

Schemaläggaren använder en kombination av minnesintern och beständig intern lagring för att hantera tillstånd.

  • Lagring i minnet används för kortlivad data.
  • Det beständiga arkivet används för återställning och för frågeåtgärder med flera instanser.

Funktionshöjdpunkter

När du implementerar ett av ramverken för durable task scheduler-orkestrering kan du dra nytta av flera viktiga höjdpunkter.

Durable Task Scheduler-kontrollpanel

När en schemaläggningsresurs skapas erbjuds en motsvarande instrumentpanel direkt ur boxen. Instrumentpanelen ger en översikt över alla orkestreringar och entitetsinstanser och möjliggör följande:

  • Filtrera snabbt efter olika kriterier.
  • Samla in data om en orkestreringsinstans, till exempel status, varaktighet, indata/utdata osv.
  • Gå in på en instans för att hämta data om underorkestrationer och aktiviteter.
  • Utför hanteringsåtgärder, till exempel pausa, avsluta eller starta om en orkestreringsinstans.

Åtkomst till instrumentpanelen skyddas av identitets- och rollbaserade åtkomstkontroller.

Mer information finns i Felsöka och hantera orkestreringar med instrumentpanelen Durable Task Scheduler.

Flera aktivitetshubbar

Tillståndet är varaktigt i en aktivitetshubb. En aktivitetshubb:

  • Är en logisk container för orkestrerings- och entitetsinstanser.
  • Ger ett sätt att partitionera tillståndslagret.

Med en scheduler-instans kan du skapa flera aktivitetshubbar som kan användas av olika appar. Varje aktivitetshubb får en egen instrumentpanel för övervakning. För att få åtkomst till en aktivitetshubb måste anroparens identitet ha de behörigheter som krävs för rollbaserad åtkomstkontroll (RBAC).

Om du skapar flera aktivitetshubbar isoleras olika arbetsbelastningar som kan hanteras oberoende av varandra. Till exempel kan du:

  • Skapa en aktivitetshubb för varje miljö (dev, test, prod).
  • Skapa uppgiftshubbar för olika team i din organisation.
  • Dela samma scheduler-instans i flera appar.

Scheduler-delning är ett bra sätt att optimera kostnaderna när flera team har scenarier som kräver orkestrering.

Anmärkning

Även om du kan skapa flera aktivitetshubbar i en scheduler-instans delar de samma resurser. Om en aktivitetshubb är kraftigt belastad kan det inverka på prestandan för andra aktivitetshubbar i samma schemaläggare.

Emulator för lokal utveckling

Durable Task Scheduler-emulatorn är en enkel version av scheduler-serverdelen som körs lokalt i en Docker-container. Med den kan du:

  • Utveckla och testa din app utan att distribuera till Azure.
  • Övervaka och hantera orkestreringar och entiteter precis som i Azure.

Installationsinstruktioner finns i Kör Durable Task Scheduler-emulatorn.

Anmärkning

Emulatorn lagrar orkestrerings- och entitetstillstånd internt i det lokala minnet, så den är inte lämplig för produktionsanvändning.

Policy för automatisk rensning och lagring

Inaktuella orkestreringsdata bör tas bort regelbundet för att säkerställa effektiv användning av lagringsutrymme. Funktionen autopurge för Durable Task Scheduler ger en smidig, konfigurerbar lösning för att hantera rensning av orkestreringsinstanser automatiskt. Läs mer om hur du ställer in autopurge-principer för kvarhållning för Durable Task Scheduler.

Begränsningar och överväganden

  • Scheduler-kvot:

    Du är begränsad i hur många schemaläggare du kan skapa beroende på din fakturerings-SKU.

  • Kvot för uppgiftshubben:

    Du är begränsad i hur många aktivitetshubbar du kan använda beroende på din fakturerings-SKU.

    • När du använder den dedikerade SKU, är task-hubbar begränsade till 25 per region per prenumeration.
    • När du använder förbruknings-SKU är aktivitetshubbar begränsade till fem per region per prenumeration.

    För att få mer kvot, kontakta support.

  • Maximal nyttolaststorlek:

    Durable Task Scheduler har en begränsning av maximal nyttolaststorlek för följande JSON-serialiserade datatyper:

    Datatyp Maximal storlek
    Orchestrator-indata och utdata 1 MB
    Aktivitetsindata och utdata 1 MB
    Externa händelsedata 1 MB
    Anpassad orkestreringsstatus 1 MB
    Entitetstillstånd 1 MB

    Om dina data överskrider dessa gränser kan du läsa Stöd för stora nyttolaster för tillgängliga lösningar.

  • Längd på orkestreringsinstans-ID:

    Orkestreringsinstans-ID har en maximal längd på 100 tecken.

    • Tillåtna tecken: Endast utskrivbar ASCII (bokstäver, siffror, symboler som -, _, ., osv. Tecken 0x20 via 0x7E)
    • Minsta längd: 1 tecken (får inte vara tomt)
    • Instans-ID:n som börjar med @ är reserverad för entiteter
  • Funktionsparitet:

    Utökade sessioner stöds inte av Durable Task Scheduler.