Mi a Durable Functions?
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.
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.
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.
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.
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.
Ö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 |