Dela via


Azure Functions Durable Task Scheduler (förhandsversion)

Durable Task Scheduler ger hållbar exekvering 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 och andra.

Orkestreringsramverk

Azure tillhandahåller två utvecklarorienterade orkestreringsramverk som du kan använda för att skapa tillståndskänsliga appar som körs i alla beräkningsmiljöer, utan att behöva skapa för feltolerans. Du kan använda Durable Task Scheduler med följande orkestreringsramverk:

  • Varaktiga funktioner
  • SDK:er för varaktiga aktiviteter

Lär dig vilken orkestrering som fungerar bättre för ditt projekt.

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.

Diagram för arkitekturen för hållbar uppgiftsschemaläggare.

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 använder en hanterad schemaläggare som Durable Task Scheduler (i stället för en BYO-lagringsprovider) minskar processor- och minnesresursförbrukningen på grund av omkostnaderna för att hantera partitioner och andra komplexa tillståndslagerinteraktioner.

  • 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.

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-instrumentpanel

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. Även om du kan skapa obegränsat antal uppgiftshubbar i en schemaläggarinstans delar de på samma resurser; om en uppgiftshubb är hårt belastad kan det påverka prestandan för de andra uppgiftshubbarna.

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 Durable Function-app utan att behöva distribuera den till Azure.
  • Övervaka och hantera orkestreringar och entiteter precis som i Azure.

Som standard exponerar emulatorn en enda uppgiftshubb med namnet default. Om du vill exponera flera aktivitetshubbar startar du emulatorn och anger DTS_TASK_HUB_NAMES miljövariabeln med en kommaavgränsad lista med namn på aktivitetshubben. Om du till exempel vill aktivera två aktivitetshubbar med namnet taskhub1 och taskhub2kan du köra följande kommando:

docker run -d -p 8080:8080 -e DTS_TASK_HUB_NAMES=taskhub1,taskhub2 mcr.microsoft.com/dts/dts-emulator:latest

Anmärkning

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

Du kan se alla tillgängliga emulatorversioner genom att köra följande kommando:

curl -s https://mcr.microsoft.com/v2/dts/dts-emulator/tags/list

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

  • Tillgängliga regioner:

    Durable Task Scheduler-resurser kan skapas i en delmängd av Azure-regioner i dag. Du kan köra följande kommando för att hämta en lista över de regioner som stöds:

    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.

  • Scheduler-kvot:

    Du kan för närvarande skapa upp till fem schemaläggare per region per prenumeration.

  • 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
  • Funktionsparitet:

    Vissa funktioner kanske inte är tillgängliga i durable task scheduler-serverdelen ännu, till exempel:

    Anmärkning

    Funktionstillgänglighet kan komma att ändras när Durable Task Scheduler-serverdelen närmar sig allmän tillgänglighet. Om du vill rapportera problem eller begära nya funktioner skickar du ett problem på GitHub-lagringsplatsen Durable Task Scheduler.

Nästa steg