Mi a Durable Functions?

Befejeződött

A Durable Functions lehetővé teszi összetett állapotalapú függvények implementálását kiszolgáló nélküli környezetben.

A példaforgatókönyvben a vállalat jelenleg a projekttervezési javaslatok manuális jóváhagyási folyamatát követi. A folyamat több lépésből áll, és a folyamat egyes lépéseinek időtartama változó lehet. Egy belső fejlesztésű automatikus folyamat létrehozása összetett és költséges. Az egyes lépések koordinációja nagy erőfeszítést vesz igénybe. Emellett meg kell oldania, hogy egyéni logika is beépíthető legyen a munkafolyamatba.

Ebből a leckében megismerkedhet a Durable Functions előnyeivel. Megismerheti a Durable Functions különböző függvénytípusait és alapfogalmait.

Durable Functions

A Durable Functions az Azure Functions egyik bővítménye. Míg az Azure Functions állapot nélküli környezetben működik, a Durable Functions megtarthatja az állapotot a függvényhívások között. Ezzel a módszerrel leegyszerűsítheti az összetett állapotalapú végrehajtásokat kiszolgáló nélküli környezetben.

A Durable Functions igény szerint méretezhető, és költséghatékony megoldást kínál összetett munkafolyamatok felhőbeli implementálásához. A Durable Functions többek között a következő előnyöket nyújtja:

  • Lehetővé teszi eseményvezérelt kódok írását. A tartós függvények aszinkron módon várakozhatnak egy vagy több külső eseményre, majd több feladatot is végrehajthatnak ezekre az eseményekre válaszul.

  • Az egyes függvények láncba kapcsolhatók. Olyan gyakori mintákat implementálhat, mint például a ki-/kifúvatás, amely egy függvénnyel meghívja a többit párhuzamosan, majd összegyűjti az eredményeket.

  • Vezényelhet és koordinálhat függvényeket, és megadhatja a függvények végrehajtásának sorrendjét.

  • Az állapotot kezelését a rendszer végzi Ön helyett. Nem kell saját kódot írnia a hosszú ideig futó függvények állapotinformációinak mentéséhez.

A Durable Functions lehetővé teszi állapotalapú munkafolyamatok definiálását vezénylési függvény használatával. A vezénylési függvény használata a következő extra előnyökkel jár:

  • A munkafolyamatokat kódban adhatja meg. Nincs szükség arra, hogy JSON-leírókat írjon, vagy munkafolyamat-tervező eszközöket használjon.

  • A függvények szinkron és aszinkron módon is hívhatók. A hívott függvények kimenete változókban, helyben kerülnek mentésre, így felhasználhatók a további függvényhívásoknál is.

  • Ha a függvény várakozni kezd, az Azure automatikusan rögzíti a függvény folyamatának állapotát. Az Azure dönthet úgy, hogy dehidratálja a függvényt, és menti az állapotát, miközben a függvény az erőforrások megőrzésére és a költségek csökkentésére vár. Amikor pedig a függvény újból futni kezd, az Azure újrahidratálja a függvényt, és visszaállítja állapotát.

Függvénytípusok

Három tartós függvénytípust használhat: Ügyfél, Vezénylő és Tevékenység.

Az Ügyfél típusú függvények belépési pontként szolgálnak egy Durable Functions vezénylési példány létrehozásánál. Futtatásukat kiválthatja egy számos forrás egyikéből érkező esemény is, például egy beérkező HTTP-kérelem, egy üzenetsorban közzétett új üzenet, vagy egy eseménystreambe beérkező új esemény. A függvényeket a támogatott nyelvek bármelyikében megírhatja.

Az Orchestrator függvények a műveletek végrehajtását és a futtatás sorrendjét írják le. A vezénylési logikát kódban kell megírni (C# vagy JavaScript nyelven).

A tevékenységfüggvények a Durable Functions vezénylésének alapvető munkaegységei. A tevékenységfüggvények tartalmazzák a vezényelt feladatok tényleges munkát végző részeit.

Alkalmazásminták

A Durable Functions segítségével számos gyakori munkafolyamat-minta megvalósítható. A minták többek között a következőket is lefedik:

  • Függvényláncolás: Ebben a mintában a munkafolyamat függvénysorozatot hajt végre egy megadott sorrendben. Az egyik függvény kimenete a következő függvény bemenetére lesz alkalmazva a sorozatban. A végső függvény kimenete az eredmény létrehozásához használatos.

    Diagram illustrating a function chaining pattern.

  • Kifúvatás/ventilátor: Ez a minta több függvényt futtat párhuzamosan, és megvárja, amíg az összes függvény befejeződik. Összesítheti a párhuzamos végrehajtások eredményeit, vagy felhasználhatja őket a végeredmény kiszámításához.

    Diagram illustrating a fan out/fan in pattern.

  • Aszinkron HTTP API-k: Ez a minta a hosszú ideig futó műveletek külső ügyfelekkel való összehangolásának problémáját kezeli. A HTTP-hívások aktiválhatják a hosszan futó műveletet, majd átirányíthatják az ügyfelet egy állapotvégpontra. Az ügyfél ezután a végpont lekérdezésével szerezhet tudomást arról, hogy a művelet befejeződött.

    Diagram illustrating an async HTTP API pattern.

  • Monitorozás: Ez a minta egy ismétlődő folyamatot valósít meg egy munkafolyamatban, esetleg állapotváltozást keres. A mintát például arra is használhatja, hogy ismétlődő lekérdezéseket indítson, amíg a meghatározott feltételek nem teljesülnek.

    Diagram illustrating a monitor pattern.

  • Emberi interakció: Ez a minta olyan automatizált folyamatokat kombinál, amelyek emberi interakciót is magukban foglalnak. Egy automatizált folyamaton belüli manuális beavatkozást igénylő folyamat azért körülményes, mert a számítógépekhez képest az emberek nem annyira készségesek, és rendelkezésre állásuk sem olyan kiszámítható. Az emberi interakciókat időtúllépésekkel és kompenzációs logikával is beépítheti, amelyek akkor futnak, ha az ember nem működik megfelelően egy adott válaszidőn belül. Ilyen emberi beavatkozást is magukba foglaló folyamatok például a jóváhagyási folyamatok is.

    Diagram illustrating a human interaction pattern.

Összehasonlítás a Logic Apps-szel

Mind a Durable Functions, mind a Logic Apps olyan Azure-szolgáltatások, amelyek kiszolgáló nélküli feladatokhoz nyújtanak támogatást. Az Azure Durable Functions egyéni logikát futtató hatékony kiszolgáló nélküli számítások létrehozását teszi lehetővé. Az Azure Logic Appst pedig inkább az Azure-szolgáltatások és összetevők integrálására érdemes használni. Mindkét technológiával összetett vezénylések hozhatók létre. Az Azure Durable Functions használata esetén a vezénylések fejlesztése kód írásával és a Durable Functions bővítmény használatával történik. A Logic Apps esetében a vezénylések a grafikus felhasználói felület használatával, illetve konfigurációs fájlok szerkesztésével hozhatók létre.

Az alábbi táblázat az Azure Durable Functions és az Azure Logic Apps közötti főbb különbségeket sorolja fel.

Feladatok Azure Durable Functions Azure Logic Apps
Fejlesztés Kódközpontú (imperatív) Tervezőközpontú (deklaratív)
Kapcsolatok Körülbelül egy tucat beépített kötési típus. Kód írásával egyéni kötések hozhatók létre. Összekötők széles választéka. Enterprise Integration Pack B2B-hez. Egyéni összekötőket is készíthet.
Műveletek Minden egyes tevékenység, egy Azure-függvény. Tevékenységfüggvények kódját Ön írhatja meg. Használatra kész műveletek széles választéka. Az egyéni logika egyéni összekötők segítségével integrálható.
Figyelés Azure Application Insights Azure Portal, Azure Monitor-naplók
Kezelés REST API, PowerShell, Visual Studio Azure Portal, REST API, PowerShell, Visual Studio, Visual Studio Code-bővítmény

Tesztelje tudását

1.

Mi a Durable Functions?

2.

A következők közül melyik írja le egy vezénylési függvény munkafolyamatban betöltött szerepét?

3.

A következők közül melyik leírás indokolja meg a legjobban azt, hogy miért a Durable Functionst érdemes használni az Emberi beavatkozás tervezési minta esetében?