Vad är Durable Functions?

Slutförd

Med Durable Functions kan du implementera komplexa tillståndskänsliga funktioner i en serverlös miljö.

I exempelscenariot följer ditt företag för närvarande en manuell godkännandeprocess för projektdesignförslag. Processen omfattar flera steg, och varje steg i processen kan variera i varaktighet. Det är komplicerat och dyrt att implementera en automatiserad process internt. Det krävs stora arbetsinsatser för att koordinera varje steg. Dessutom måste du kunna införa anpassad logik i arbetsflödet.

I den här enheten lär du dig om fördelarna med Durable Functions. Du lär dig om de olika funktionstyperna och viktiga begrepp som är kopplade till Durable Functions.

Varaktiga funktioner

Durable Functions är en utökning av Azure Functions. Medan Azure Functions fungerar i en tillståndslös miljö kan Durable Functions behålla tillståndet mellan funktionsanrop. Med den här metoden kan du förenkla komplexa tillståndskänsliga körningar i en serverlös miljö.

Durable Functions skalar efter behov och ger ett kostnadseffektivt sätt att implementera komplexa arbetsflöden i molnet. Här följer några av fördelarna med att använda Durable Functions:

  • De gör att du kan skriva händelsedriven kod. En varaktig funktion kan vänta asynkront på en eller flera externa händelser och sedan utföra en serie uppgifter som svar på dessa händelser.

  • Du kan länka ihop funktioner. Du kan implementera vanliga mönster som fan-out/fan-in, som använder en funktion för att anropa andra parallellt och sedan ackumulera resultaten.

  • Du kan orkestrera och samordna funktioner och ange i vilken ordning funktionerna ska köras.

  • Tillståndet hanteras åt dig. Du behöver skriva egen kod för att spara tillståndsinformation för en långvarig funktion.

Med Durable Functions kan du definiera tillståndskänsliga arbetsflöden med hjälp av en orkestreringsfunktion. Orkestreringsfunktioner har följande extra fördelar:

  • Du kan definiera arbetsflödena i kod. Du behöver inte skriva en JSON-beskrivning eller använda ett verktyg för arbetsflödesdesign.

  • Funktioner kan anropas både synkront och asynkront. Utdata från de anropade funktionerna sparas lokalt i variabler och används i efterföljande funktionsanrop.

  • Azure gör automatiskt kontrollpunkter för en funktions förlopp när funktionen väntar. Azure kan välja att dehydrera funktionen och spara dess tillstånd medan funktionen väntar på att bevara resurser och minska kostnaderna. När funktionen börjar köras igen rehydrerar Azure den och återställer dess tillstånd.

Funktionstyper

Du kan använda tre hållbara funktionstyper: Klient, Orchestrator och Aktivitet.

Klientfunktioner är startpunkten för skapandet av en instans av Durable Functions-orkestrering. De kan köras som svar på en händelse från många källor, till exempel en ny HTTP-begäran som mottas, ett meddelande som skickas till en meddelandekö eller en händelse som skickas till en händelseström. Du kan skriva dem i vilket som helst av de språk som stöds.

Orchestrator-funktioner beskriver hur åtgärder körs och i vilken ordning de körs. Du skriver orkestreringslogik i kod (C# eller JavaScript).

Aktivitetsfunktioner är de grundläggande arbetsenheterna i en Durable Functions-orkestrering. En aktivitetsfunktion innehåller det faktiska arbete som utförs av de uppgifter som orkestreras.

Programmönster

Du kan använda Durable Functions för att implementera många vanliga arbetsflödesmönster. Dessa mönster omfattar:

  • Funktionslänkning: I det här mönstret kör arbetsflödet en sekvens med funktioner i en angiven ordning. En funktions utdata tillämpas på nästa funktions indata i sekvensen. Den slutliga funktionens utdata används för att generera ett resultat.

    Diagram illustrating a function chaining pattern.

  • Fläkta ut/fläkta in: Det här mönstret kör flera funktioner parallellt och väntar på att alla funktioner ska slutföras. Du kan aggregera resultatet av de parallella körningarna eller använda dem för att beräkna ett slutligt resultat.

    Diagram illustrating a fan out/fan in pattern.

  • Asynkrona HTTP-API:er: Det här mönstret åtgärdar problemet med att samordna tillståndet för långvariga åtgärder med externa klienter. Ett HTTP-anrop kan utlösa den tidskrävande åtgärden och sedan omdirigera klienten till en statusslutpunkt. Klienten kan lära sig när åtgärden är klar genom att avsöka den här slutpunkten.

    Diagram illustrating an async HTTP API pattern.

  • Övervakare: Det här mönstret implementerar en återkommande process i ett arbetsflöde, eventuellt letar efter en ändring i tillståndet. Du kan till exempel använda det här mönstret för att avsöka tills särskilda villkor uppfylls.

    Diagram illustrating a monitor pattern.

  • Mänsklig interaktion: Det här mönstret kombinerar automatiserade processer som också involverar viss mänsklig interaktion. Det är knepigt att ha en manuell process i en automatiserad process eftersom människor inte är lika snabba eller responsiva som de flesta datorer. Du kan införliva mänsklig interaktion med timeouter och kompensationslogik som körs om människan inte interagerar korrekt inom en angiven svarstid. En godkännandeprocess är ett exempel på en process som inbegriper mänsklig interaktion.

    Diagram illustrating a human interaction pattern.

Jämförelse med Logic Apps

Durable Functions och Logic Apps är båda Azure-tjänster som möjliggör serverlösa arbetsbelastningar. Azure Durable Functions är avsett som ett kraftfullt alternativ för serverlös beräkning för körning av anpassad logik. Azure Logic Apps lämpar sig bättre för integrering av Azure-tjänster och komponenter. Du kan använda endera tekniken för att skapa komplexa orkestreringar. Med Azure Durable Functions utvecklar du orkestreringar genom att skriva kod och använda Durable Functions-tillägget. Med Logic Apps skapar du orkestreringar genom att använda designytan eller redigera konfigurationsfiler.

I följande tabell visas några av de viktigaste skillnaderna mellan Azure Durable Functions och Azure Logic Apps.

Uppgift Azure Durable Functions Azure Logic Program-program
Utveckling Kod först (imperativt) Design först (deklarativt)
Anslutning Ett dussintal inbyggda bindningstyper. Du kan skriva kod för anpassade bindningar. En stor samling med anslutningsappar. Enterprise-integrationspaket för B2B. Du kan även bygga anpassade anslutningsprogram.
Åtgärder Varje aktivitet är en Azure-funktion. Du skriver koden för aktivitetsfunktioner. En stor samling med färdiga åtgärder. Du integrerar anpassad logik via anpassade anslutningsappar.
Övervakning Azure Application Insights Azure-portalen och Azure Monitor-loggar
Hantering REST API, PowerShell, Visual Studio Azure-portalen, REST API, PowerShell, Visual Studio, Visual Studio Code-tillägget

Testa dina kunskaper

1.

Vad är Durable Functions?

2.

Vilket av följande beskriver bäst rollen för funktionen Orchestrator (orkestrerare) i ett arbetsflöde?

3.

Vilket av följande alternativ förklarar bäst varför programmönstret Mänsklig interaktion kan dra nytta av Durable Functions?