Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Durable Functions je rozšíření Azure Functions, které do aplikace funkcí přidává stavové možnosti orchestrace. Aplikace Durable Functions se skládá z různých funkcí Azure, přičemž každá hraje určitou roli: orchestrátor, aktivita, entita nebo klient. Tyto role odpovídají specializovaným typům trigger a vazeb, které poskytuje rozšíření Durable Functions.
Sady SDK durable task umožňují vytvářet stavové aplikace odolné proti chybám na libovolné výpočetní platformě. Vaše aplikace definuje orchestrátory, aktivity a entity jako třídy nebo funkce, které zaregistrujete u pracovníka. Samostatné klientské rozhraní API umožňuje spouštět a spravovat instance orchestrace.
Následující tabulka shrnuje základní programovací komponenty a jejich role:
| Součást | Úloha | Definováno podle |
|---|---|---|
| Orchestrátor | Koordinuje logiku pracovního postupu | Spouštěč orchestrace |
| Activity | Provede jednu jednotku práce. | Aktivace triggeru |
| Entita | Spravuje malou část stavu systému. | Spouštěč entity |
| Klient | Spouští a spravuje orchestrace a entity. | Trvalá vazba klienta |
| Součást | Úloha | Definováno podle |
|---|---|---|
| Orchestrátor | Koordinuje logiku pracovního postupu | Třída nebo funkce zaregistrovaná s pracovníkem |
| Activity | Provede jednu jednotku práce. | Třída nebo funkce zaregistrovaná s pracovníkem |
| Entita | Spravuje malou část stavu systému. | Třída zaregistrovaná u pracovníka |
| Klient | Spouští a spravuje orchestrace a entity. |
DurableTaskClient Rozhraní api |
Orchestrátory
Orchestrátory definují pracovní postup: jaké akce se mají provést, v jakém pořadí a jak zpracovat výsledky. Logiku orchestrátoru napíšete jako běžný kód pomocí standardních řídících struktur, jako jsou například smyčky, podmínkové konstrukce a bloky try/catch.
Orchestrátor může naplánovat několik typů úloh:
- Aktivity pro provádění práce
- Dílčí orchestrace pro vytváření menších pracovních postupů
- Trvalé časovače pro zpoždění a časové limity
- Externí události pro čekání na signály mimo orchestraci
Orchestrátory můžou také komunikovat s entitami.
V Durable Functions definujete orchestrátor pomocí vazby aktivační události orchestration. Trigger poskytuje kontextový objekt, který používáte k naplánování úkolů a přijímání výsledků.
V sadách SDK Durable Task definujete orchestrátor implementací třídy nebo funkce a jeho registrací u pracovního procesu Durable Task. Orchestrátor obdrží kontextový objekt, který použijete k naplánování úkolů a příjmu výsledků.
Důležité
Kód orchestrátoru musí být deterministický. Modul runtime Durable Task používá k opětovnému sestavení stavu orchestrátoru ukládání událostí a přehrávání, takže nedeterministický kód může způsobit selhání nebo zablokování. Podrobné pokyny najdete v tématu Omezení kódu nástroje Orchestrator.
Úplný přehled chování orchestrátoru, včetně přehrání, identity instance a zpracování chyb, najdete v tématu Trvalé orchestrace.
Activities
Aktivity jsou základní jednotkou práce v durabilní orchestraci. Každá aktivita obvykle představuje jeden úkol, například volání webového rozhraní API, zápis do databáze nebo výpočet výsledku. Orchestrátoři volají aktivity, aby dělali svou skutečnou práci.
Aktivity se liší od orchestrátorů klíčovými způsoby:
- Žádná omezení kódu. Orchestrátory musí být deterministické, ale aktivity můžou spouštět jakýkoli kód, včetně nedeterministických nebo dlouhotrvajících operací.
- Zajištění alespoň jednoho spuštění Modul runtime zaručuje, že každá aktivita běží alespoň jednou během orchestrace. Pokud dojde k selhání po dokončení aktivity, ale před zaznamenáným výsledkem, modul runtime ho může spustit znovu.
- Jediná zodpovědnost. Každá aktivita přijímá jeden vstup a vrací jeden výstup. Pokud chcete předat více hodnot, použijte komplexní typ nebo kolekci.
Funkci aktivity definujete pomocí vazby triggeru aktivity. Trigger poskytuje vstup, který orchestrátor předal při plánování aktivity.
Aktivitu definujete implementací třídy nebo funkce a registrací pomocí pracovního procesu Durable Task. Aktivita obdrží vstup, který orchestrátor předal při plánování.
Poznámka:
Protože aktivity zaručují vykonání alespoň jednou, snažte se, aby logika aktivity byla idempotentní, kdykoli je to možné. Například místo vkládání použijte operaci "upsert" nebo zkontrolujte existující výsledky před vytvořením nových prostředků.
Aktivity se můžou spouštět sériově, paralelně nebo v kombinaci obou.
Entitety
Entity spravují malé, odolné části stavu. Každá entita má jedinečnou identitu a sadu pojmenovaných operací, které mohou číst nebo aktualizovat svůj interní stav. Entity se liší od orchestrátorů v tom, že spravují stav explicitně prostřednictvím operací místo implicitně prostřednictvím toku řízení. Liší se také od orchestrátorů v tom, že nemají stejná omezení kódu – operace entit mohou spouštět jakýkoli kód, včetně nedeterministických nebo dlouhotrvajících operací.
Mezi běžné použití entit patří:
- Agregace dat z více zdrojů
- Implementace distribuovaných zámků nebo semaforů
- Modelování stavových objektů, jako jsou nákupní košíky nebo herní relace
Entity spouští operace sériově: pro danou instanci entity se spustí pouze jedna operace najednou. Toto sériové spuštění zabraňuje konfliktům při souběžném zpracování bez nutnosti explicitního zamykání.
Funkci entity definujete pomocí vazby triggeru entity.
Poznámka:
Funkce entit jsou podporované v .NET, JavaScriptu/TypeScriptu, Python a Java, ale ne v PowerShellu.
Entitu definujete implementací třídy a její registrací u Durable Task workeru.
Poznámka:
Podpora entit je dostupná v sadách SDK .NET, JavaScript/TypeScript a Python. Sada Java SDK v současné době nepodporuje entity.
Kompletní průvodce definováním, voláním a správou entit najdete v tématu Durable entity.
Klient
Klientská komponenta je způsob interakce s orchestracemi a entitami mimo orchestraci. Mezi běžné klientské operace patří:
- Plánování nových orchestracčních instancí
- Dotazování na stav spuštěných nebo dokončených orchestrací
- Generování událostí pro čekající orchestraci
- Pozastavení a obnovení instancí orchestrace
- Ukončení instancí orchestrace
- Signaling entity operace a čtení stavu entity
Jakákoli jiná než orchestrátorová funkce může fungovat jako klientská funkce. To, co ho činí klientem, je použití odolné výstupní vazby klienta. Například můžete spustit orchestraci z funkce spuštěné protokolem HTTP, z funkce spuštěné frontou nebo z funkce spuštěné časovačem.
Odolné klientské vázání také poskytuje rozhraní API pro interakci s entitami, včetně signalizace operací entit a čtení stavu entity. Další informace najdete v vazbě klienta entity.
V Durable Task SDK komunikujete s orchestracemi a entitami prostřednictvím třídy DurableTaskClient. V kódu aplikace vytvoříte instanci klienta a zavoláte její metody pro spuštění, dotazování nebo správu orchestrace a instancí entit. Klienta můžete použít z libovolné části aplikace – koncového bodu HTTP, služby na pozadí, konzolové aplikace nebo jakéhokoli jiného kódu.
Podrobné informace o všech operacích správy instancí, včetně ukázek kódu pro každý jazyk, najdete v tématu Správa instancí orchestrace.
Další kroky
Začněte vytvořením první aplikace Durable Function:
Začínáme se sadami SDK Durable Task: