Che cos'è Durable Task?

Durable Task è l'implementazione di Microsoft dell'esecuzione durabile, un approccio a livello di settore per rendere il codice ordinario tollerante ai guasti continuando automaticamente il suo progresso. È un framework per costruire flussi di lavoro e orchestrazioni tolleranti ai guasti come codice ordinario. Invece di gestire logiche di ritenti complesse, state machine o code di messaggi, scrivi la logica di business come funzioni semplici, e Durable Task gestisce la persistenza degli stati, il recupero automatico e il coordinamento distribuito per te.

I flussi di lavoro di Durable Task possono essere eseguiti per ore, giorni o persino mesi, riprendendo in modo affidabile dall'ultimo passaggio completato dopo qualsiasi arresto anomalo, riavvio o ridistribuzione. I casi d'uso comuni includono transazioni distribuite, orchestrazione di intelligenza artificiale multi-agente, pipeline di elaborazione dati e gestione dell'infrastruttura.

Il resto di questo articolo spiega dove si colloca Durable Task, i linguaggi e i modelli di hosting che supporta e come è strutturato, così puoi decidere come costruire applicazioni tolleranti ai guasti con esso.

Cosa include Duratura Compito

Il compito duraturo include:

Casi d'uso di Key Durable Task

Usare Durable Task quando l'applicazione richiede un'orchestrazione affidabile del flusso di lavoro a esecuzione prolungata tra i servizi distribuiti. Gli scenari comuni includono:

  • Processi di lunga durata: Durable Task può gestire lo stato e i progressi per processi che girano per periodi prolungati, nonostante interruzioni o errori. Gli esempi includono l'elaborazione degli ordini, le pipeline di dati, il training del modello di Machine Learning e le simulazioni a esecuzione prolungata.
  • Scenari paralleli e fan-out/fan-in: Durable Task può coordinare il lavoro che si espande tra più lavoratori che girano in parallelo su macchine diverse, e poi aggregare i risultati. Ad esempio, l'elaborazione di immagini, i processi map-reduce e i flussi di lavoro ETL.
  • Orchestrazione di microservizi e API: Durable Task può coordinare il lavoro tra servizi distribuiti, API e computer con un flusso di controllo e una gestione degli errori complessi. Durable Task supporta anche transazioni distribuite che utilizzano il pattern saga, dove ogni passaggio ha una logica compensativa che si attiva automaticamente se un passo successivo fallisce.
  • Automazione dei processi aziendali: Durable Task può automatizzare processi aziendali complessi e deterministici che coinvolgono molteplici fasi, dipendenze, gestione di un uomo nel ciclo e errori su lunghi periodi. Gli esempi includono la gestione della supply chain, la revisione dei documenti, l'onboarding dei clienti e la verifica dell'identità.
  • Automazione dell'infrastruttura: Durable Task può gestire il provisioning, la configurazione e la distribuzione dell'infrastruttura con dipendenze complesse e gestione degli errori. Gli esempi includono la gestione delle risorse cloud e le pipeline CI/CD.
  • Orchestrazione multi-agente: Durable Task può coordinare il lavoro di più agenti IA, garantendo un'adegua affidabile ai compiti su orizzonti lunghi e un uso efficiente dei token per processi AI complessi e a più fasi. Gli esempi includono agenti di intelligenza artificiale per ricerche approfondite, codifica e supporto clienti.

Un tema ricorrente in questi scenari è che coinvolgono lavori troppo complessi, troppo lunghi o troppo distribuiti per essere gestiti in modo affidabile con codice ad hoc. Durable Task fornisce le garanzie sottostanti—persistenza, tolleranza ai guasti e coordinazione con stato—così puoi esprimere quel lavoro come codice semplice.

Linguaggi supportati e modelli di hosting di Durable Task

Durable Task supporta più linguaggi di programmazione in due modelli di hosting: Funzioni di Azure (tramite l'estensione Durable Functions) e self-hosted (tramite gli SDK standalone Durable Task). Il modello di hosting Funzioni di Azure offre un ambiente di calcolo serverless completamente gestito con funzionalità di scala e orchestrazione integrate, mentre il modello self-hosted supporta l'esecuzione di applicazioni durevoli su qualsiasi piattaforma di calcolo, come App contenitore di Azure, servizio Azure Kubernetes, Servizio app di Azure, o virtual machines.

Lingua Funzioni di Azure Autogestito
.NET (C#/F#)
JavaScript/TypeScript
Python
Java
PowerShell No

Annotazioni

Durable Task Go SDK è disponibile anche come opzione open-source supportata dalla community per scenari auto-ospitati, ma è ancora in fase sperimentale e non è ancora raccomandato per l'uso in produzione.

Per indicazioni sulla scelta tra Funzioni di Azure e self-hosted, vedere Scegliere il modello di hosting.

Architettura Task Durable: SDK e backend di archiviazione di stato

Durable Task ha due livelli principali: un SDK usato nel codice dell'applicazione e un back-end di archiviazione dello stato che gestisce lo stato.

SDK di Compiti Durevoli

Usi il Durable Task SDK per creare orchestrazioni, attività ed entità nel codice dell'applicazione. Gestisce internamente le meccaniche dell'esecuzione durevole—riprodurre funzioni dell'orchestratore, gestire il contesto di esecuzione locale e comunicare con il backend di archiviazione di stato. Durable Task offre diverse opzioni SDK tra i linguaggi supportati e i due modelli di hosting: Funzioni di Azure e self-hosted.

Per indicazioni sulla scelta tra queste opzioni, vedere Scegliere il modello di hosting.

Back-end di archiviazione dello stato

Il backend di archiviazione a stati persiste lo stato di orchestrazione, mantiene la cronologia di esecuzione e coordina la scalabilità distribuita tra istanze di calcolo.

L'opzione raccomandata per lo storage di stato è il Durable Task Scheduler—un servizio Azure completamente gestito, progettato appositamente e altamente ottimizzato per i carichi di lavoro Durable Task. Funziona sia con Durable Functions che con gli SDK di Durable Task autonomi e offre il set più ricco di funzionalità senza infrastruttura di archiviazione da gestire.

In alternativa, Durable Functions supporta diverse opzioni di archiviazione BYO (Bring-Your-Own). Queste opzioni ti danno più controllo su dove memorizzare lo stato, ma richiedono che tu fornisca e gestisca personalmente l'infrastruttura sottostante. I back-end di archiviazione BYO sono attualmente disponibili solo con Durable Functions.

Per altre informazioni sulle opzioni di archiviazione, vedere Provider di archiviazione.

Risorse aggiuntive per le attività durevoli

Pubblicazioni di ricerca

Microsoft sviluppa Durable Task in collaborazione con Microsoft Research. Di conseguenza, il team produce articoli di ricerca e reperti, tra cui:

Video introduttivo

Il video seguente evidenzia i benefici di Durable Functions:

Passaggi successivi