Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Durable Functions a Azure Functions bővítménye, amely állapotalapú vezénylési képességeket ad hozzá a függvényalkalmazáshoz. A Durable Functions-alkalmazások különböző Azure függvények alkotják, amelyek mindegyike egy adott szerepkört játszik: vezénylő, tevékenység, entitás vagy ügyfél. Ezek a szerepkörök a Durable Functions bővítmény által biztosított speciális trigger- és kötéstípusoknak felelnek meg.
A Durable Task SDK-k segítségével állapotalapú, hibatűrő alkalmazásokat hozhat létre bármely számítási platformon. Az alkalmazás a vezénylőket, tevékenységeket és entitásokat osztályként vagy függvényként határozza meg, amelyeket egy munkásnál regisztrál. Egy különálló kliens API lehetővé teszi az orkestrációs példányok elindítását és kezelését.
Az alábbi táblázat összefoglalja az alapvető programozási összetevőket és azok szerepköreit:
| Komponens | Szerep | Definíció: |
|---|---|---|
| Hangszerelő | Munkafolyamat-logika koordinálása | Vezénylési eseményindító |
| Tevékenység | Egyetlen munkaegységet hajt végre | Tevékenység-eseményindító |
| Entitás | Egy kis állapot kezelése | Entitás-eseményindító |
| Ügyfél | Orchesztációk és entitások indítása és kezelése | Tartós ügyfélkötés |
| Komponens | Szerep | Definíció: |
|---|---|---|
| Hangszerelő | Munkafolyamat-logika koordinálása | A munkafolyamatnál regisztrált osztály vagy függvény |
| Tevékenység | Egyetlen munkaegységet hajt végre | A munkafolyamatnál regisztrált osztály vagy függvény |
| Entitás | Egy kis állapot kezelése | A dolgozónál regisztrált osztály |
| Ügyfél | Orchesztációk és entitások indítása és kezelése |
DurableTaskClient API |
Automatizációs vezérlő
A vezénylők határozzák meg a munkafolyamatot: milyen műveleteket kell végrehajtani, milyen sorrendben és hogyan kell kezelni az eredményeket. Az orchestrator logikát hagyományos kódként írhatja szabványos vezérlési szerkezetek, például ciklusok, feltételes utasítások és try/catch blokkok használatával.
A vezénylők többféle feladatot ütemezhetnek:
- Tevékenységek a munka végrehajtásához
- Részvezénylések kisebb munkafolyamatok írásához
- Tartós időzítők késésekhez és időtúllépésekhez
- Külső események a vezénylésen kívüli jelekre való várakozáshoz
Az vezénylők az entitásokkal is kommunikálhatnak.
A Durable Functions alkalmazásban egy vezénylőt az orchestration trigger kötés használatával definiálhat. Az eseményindító egy környezeti objektumot biztosít, amellyel feladatokat ütemezhet és eredményeket fogadhat.
A Durable Task SDK-kban egy osztály vagy függvény implementálásával és a Durable Task feldolgozónál való regisztrálásával definiálhat vezénylőt. A vezénylő egy környezeti objektumot kap, amellyel feladatokat ütemezhet és eredményeket fogadhat.
Fontos
Az orchestrator-kódnak determinisztikusnak kell lennie. A Durable Task futtatókörnyezet esemény-beszerzést és visszajátszást használ a vezénylési állapot újraépítéséhez, így a nemdeterminisztikus kód hibákhoz vagy holtpontokhoz vezethet. Részletes útmutatásért tekintse meg az Orchestrator kódkorlátozásait.
Az orchestrátor viselkedésének teljes áttekintéséért, beleértve a visszajátszást, a példány identitását és a hibakezelést, tekintse meg a Durable orchestrációkat.
tevékenységek
A tevékenységek a tartós orkesztráció alapvető munkaegységei. Minden tevékenység általában egyetlen feladatot jelöl, például egy webes API meghívását, egy adatbázisba való írást vagy egy eredmény számítását. A vezénylők a valódi munkájuk elvégzésére hívják a tevékenységeket.
A tevékenységek kulcsfontosságú módon különböznek a vezénylőktől:
- Nincsenek kódkorlátozások. A vezénylőknek determinisztikusnak kell lenniük, de a tevékenységek bármilyen kódot futtathatnak, beleértve a nem meghatározott vagy hosszú ideig futó műveleteket is.
- Legalább egyszeri végrehajtás A futtatókörnyezet garantálja, hogy minden tevékenység legalább egyszer fut egy orkestráció során. Ha a tevékenység befejeződése után, de az eredmény rögzítése előtt hiba történik, a futtatókörnyezet újrafuttathatja azt.
- Egyetlen felelősség. Minden tevékenység egy bemenetet kap, és egy kimenetet ad vissza. Több érték átadásához használjon összetett típust vagy gyűjteményt.
Tevékenységfüggvényt a tevékenységindító kötésével definiálhat. Az eseményindító megadja azt a bemenetet, amelyet a vezénylő adott át a tevékenység ütemezése során.
Egy tevékenységet egy osztály vagy függvény implementálásával és a Durable Task feldolgozónál való regisztrálásával határozhat meg. A tevékenység megkapja a vezénylő által az ütemezés során átadott bemenetet.
Megjegyzés:
Mivel a tevékenységek csak legalább egyszer garantálják a végrehajtást, a tevékenységlogika legyen idempotens , amikor csak lehetséges. Használjon például "upserts"-eket beszúrások helyett, vagy ellenőrizze a meglévő eredményeket, mielőtt új erőforrásokat hoz létre.
A tevékenységek sorozatosan, párhuzamosan vagy mindkettő kombinációjában futtathatók.
Entities
Az entitások kis méretű, tartós állapotokat kezelnek. Minden entitás egyedi identitással és elnevezett műveletekkel rendelkezik, amelyek beolvashatják vagy frissíthetik a belső állapotát. Az entitások abban különböznek a vezénylőktől, hogy explicit módon kezelik az állapotot műveleteken keresztül, nem pedig implicit módon a vezérlési folyamaton keresztül. Abban is különböznek a vezénylőktől, hogy nem rendelkeznek ugyanazokkal a kódkorlátozásokkal – az entitásműveletek bármilyen kódot futtathatnak, beleértve a nem meghatározott vagy hosszan futó műveleteket is.
Az entitások gyakori felhasználási módjai a következők:
- Adatok összesítése több forrásból
- Elosztott zárolások vagy szemaphorok implementálása
- Állapotalapú objektumok, például bevásárlókocsik vagy játék munkamenetek modellezése
Az entitások sorosan futtatják a műveleteket: egy adott entitáspéldányhoz egyszerre csak egy művelet fut. Ez a soros végrehajtás explicit zárolás nélkül megakadályozza az egyidejűségi ütközéseket.
Egy entitásfüggvényt az entitás-eseményindító kötésével definiálhat.
Megjegyzés:
Az entitásfüggvények .NET, JavaScript/TypeScript, Python és Java támogatottak, a PowerShellben azonban nem.
Egy entitást úgy határozhat meg, hogy megvalósít egy osztályt, és regisztrálja azt a Durable Task workerben.
Megjegyzés:
Az entitások támogatása a .NET, a JavaScript/TypeScript és Python SDK-kban érhető el. A Java SDK jelenleg nem támogatja az entitásokat.
Az entitások definiálására, meghívására és kezelésére vonatkozó teljes útmutatóért tekintse meg a Durable entitásokat.
Ügyfél
Az klienskomponens az a módszer, ahogyan a vezénylésen kívüli vezénylésekkel és entitásokkal létesítünk interakciót. Gyakori ügyfélműveletek a következők:
- Orkesztrációs új példányok ütemezése
- Futó vagy befejezett vezénylések állapotának lekérdezése
- Események előkészítése várakozási vezénylésekre
- Orchestration példányok felfüggesztése és folytatása
- Orchesztrációs példányok megszüntetése
- Entitásműveletek jelzése és entitásállapot olvasása
A nem vezénylő függvények ügyfélfüggvényként is működhetnek. Az, ami ügyféllé teszi, a tartós ügyfélkimeneti kötés használata. Elindíthat például egy vezénylést EGY HTTP által aktivált függvényből, egy üzenetsor által aktivált függvényből vagy egy időzítő által aktivált függvényből.
A tartós ügyfélkötés api-kat is biztosít az entitásokkal való interakcióhoz, beleértve az entitásműveletek jelzését és az entitás állapotának olvasását. További információkért tekintse meg a kliensentitás-kötést.
A Durable Task SDK-kban a DurableTaskClient osztályon keresztül kezelheti az orchestrationöket és entitásokat. Létrehoz egy ügyfélpéldányt az alkalmazáskódban, és meghívja annak metódusait a vezénylési és entitáspéldányok indításához, lekérdezéséhez vagy kezeléséhez. Az ügyfél az alkalmazás bármely részéből használható – HTTP-végpontból, háttérszolgáltatásból, konzolalkalmazásból vagy bármilyen más kódból.
Az összes példánykezelési művelettel kapcsolatos részletes információkért, beleértve az egyes nyelvekhez tartozó kódmintákat, tekintse meg a vezénylési példányok kezelését ismertető cikket.
Következő lépések
Első lépések az első Durable Function-alkalmazás létrehozásával: