Cloud Tasks ti consente di separare le parti di lavoro che possono essere eseguite in modo indipendente, al di fuori del flusso principale dell'applicazione, e di inviarle per l'elaborazione asincrona utilizzando i gestori che crei. Queste parti di lavoro indipendenti vengono chiamate attività. Ad esempio, devi aggiornare un database nell'ambito dell'elaborazione di una richiesta utente, ma gli aggiornamenti possono richiedere molto tempo. Il trasferimento di questo dettaglio come attività ti consente di tornare dalla richiesta più rapidamente.
L'attività scaricata viene aggiunta a una coda, che la mantiene fino a quando non viene eseguita correttamente o il numero di tentativi non viene esaurito, dopodiché viene eliminata. In base alla configurazione iniziale, la coda può fungere anche da controllo del flusso di invio. Crei e configuri la coda, che viene poi gestita dal servizio Cloud Tasks. Una volta aggiunte le attività, la coda le invia e si assicura che vengano elaborate in modo affidabile dai worker. Le complessità associate a questo processo, come i costi di latenza rivolti agli utenti, gli arresti anomali del server, le limitazioni del consumo di risorse e la gestione dei tentativi, vengono gestite dal servizio.
Cloud Tasks è progettato per fornire la consegna "at least once", ovvero, se un'attività viene aggiunta correttamente, la coda la consegnerà almeno una volta. In alcune rare circostanze, è possibile eseguire più attività, quindi il codice deve garantire che non si verifichino effetti collaterali dannosi dell'esecuzione ripetuta. I gestori devono essere idempotenti.
Le attività sono costituite da un nome univoco e informazioni di configurazione e, facoltativamente, da tutti i dati della richiesta iniziale, denominati payload, necessari per elaborare la richiesta. Poiché il payload viene inviato nel corpo della richiesta, le attività che includono payload devono utilizzare POST o PUT come metodo HTTP.
Per accedere al servizio Cloud Tasks utilizzando l'API Cloud Tasks, devi avere un Google Cloud progetto.
Funzionalità
Utilizzando Cloud Tasks, puoi inviare elementi di lavoro asincroni con i seguenti controlli:
- Pianificare orari di consegna specifici
- Gestire le percentuali di pubblicazione
- Configurare il comportamento di ripetizione dei tentativi
- Accedere e gestire le singole attività in una coda
- Abilitare la deduplicazione delle attività
Flusso di lavoro generale
Il flusso di lavoro generale è il seguente:
- Crei un worker per elaborare le attività.
- Crei una coda.
- Crei le attività a livello di programmazione e le aggiungi alla coda.
- Il servizio Cloud Tasks restituisce un OK all'applicazione di origine. Ciò indica che l'attività è stata scritta correttamente nello spazio di archiviazione di Cloud Tasks, rendendo la richiesta di creazione dell'attività sia a elevata disponibilità sia duratura.
- Un'attività viene passata al worker.
- Il worker elabora l'attività.
- Per completare la sequenza, il worker restituisce un codice di stato di successo 2xx al servizio Cloud Tasks.
Una volta che un'attività è stata consegnata alla coda, nessun dato viene reso disponibile alla richiesta iniziale.
Casi d'uso
I casi d'uso tipici includono:
- Velocizzare i tempi di risposta degli utenti delegando a un worker operazioni in background potenzialmente lente, come gli aggiornamenti del database
- Conservare le richieste nel contesto di incidenti di produzione imprevisti
- Aiutare a uniformare i picchi di traffico rimuovendo le attività non rivolte agli utenti dal flusso utente principale
- Gestire le frequenze delle chiamate API di terze parti
Code di Cloud Tasks con target HTTP
Nel caso di target HTTP generici, il servizio Cloud Tasks inoltra la richiesta di attività al worker, che si trova in qualsiasi endpoint HTTP generico, in base alla configurazione dell'attività. Questo endpoint potrebbe trovarsi su Cloud Run Functions, Cloud Run, GKE, Compute Engine o persino su un server web on-premise, in base alla configurazione dell'attività. Queste code inviano le richieste a una frequenza affidabile e configurabile. Garantiscono l'esecuzione affidabile delle attività; in caso di esito positivo, tutti i worker devono inviare un codice di risposta HTTP (200-299) al servizio Cloud Tasks prima della scadenza del timeout predefinito di 10 minuti, con un massimo di 30 minuti. Se viene inviata una risposta diversa o nessuna risposta, viene eseguito un nuovo tentativo per l'attività.

Il target deve gestire il ridimensionamento dei worker e la pulizia delle attività una volta completate.
Se il target richiede l'autenticazione, devi configurare due service account, uno per l'applicazione, il client e uno per la coda stessa. A entrambi gli account devono essere state concesse le autorizzazioni richieste e nella richiesta di attività deve essere incluso un identificatore per il account di servizio client. Per saperne di più, consulta Creare attività target HTTP.
Code di Cloud Tasks con target App Engine
Cloud Tasks è compatibile con i seguenti ambienti App Engine:
- Runtime di seconda generazione dell'ambiente standard di App Engine
- Ambiente flessibile di App Engine
Gli utenti dei runtime di prima generazione di App Engine che utilizzano l' API Task Queue possono eseguire la migrazione a Cloud Tasks. Per scoprire come, consulta Eseguire la migrazione dai servizi in bundle legacy. Gli utenti dei runtime di prima generazione di App Engine che non utilizzano il servizio di attività in bundle possono eseguire l'upgrade ai runtime di seconda generazione per utilizzare Cloud Tasks.
Nel caso dei target App Engine, il servizio Cloud Tasks inoltra anche la richiesta di attività al gestore, ma questo worker si trova all'interno di App Engine. Pertanto, tutte le code che hanno come target i gestori di App Engine devono avere un'app App Engine. I gestori devono essere eseguiti nella regione in cui viene eseguita l' app App Engine. Questa regione funge anche da LOCATION_ID parametro per le richieste di Cloud Tasks.
Le attività vengono instradate in base alla configurazione dell'attività (o, meno comunemente, della coda stessa). Le code inviano le richieste a una frequenza affidabile e configurabile. Garantiscono l'esecuzione affidabile delle attività: in caso di esito positivo, tutti i worker devono inviare un codice di risposta HTTP (200-299) al servizio Cloud Tasks, in questo caso prima di una scadenza basata sul tipo di scalabilità delle istanze del servizio: 10 minuti per la scalabilità automatica o fino a 24 ore per la scalabilità manuale. Se viene inviata una risposta diversa o nessuna risposta, viene eseguito un nuovo tentativo per l'attività.

Poiché i gestori fanno parte di App Engine, il servizio Cloud Tasks stesso può gestire gran parte del processo per l'attività, scalando i worker in base al traffico ed eliminando le attività al termine.
Regioni supportate per target
Se il target è un endpoint HTTP/S, Cloud Tasks è disponibile in tutte le regioni Google Cloud supportate per Cloud Tasks.
Se il target è un'applicazione App Engine che si trova all'interno del progetto corrente:
Un'attività che ha come target App Engine può essere creata solo nella regione App Engine del progetto.
Un Google Cloud progetto può contenere una sola app App Engine, e la regione in cui si trova l'app App Engine non può essere modificata una volta creata l'app.
App Engine è regionale , pertanto l'infrastruttura che esegue la tua app si trova in una regione specifica. Se vuoi distribuire il calcolo e le code in più regioni, devi scegliere come target un endpoint HTTP/S.
Se non utilizzi App Engine come target, non devi eseguire il deployment di un'app App Engine e puoi disabilitare qualsiasi app App Engine esistente.
Deduplicazione di attività
La deduplicazione delle attività viene eseguita assegnando un nome univoco a un'attività. Se tenti di creare un'attività con un nome già esistente nella coda, la richiesta di creazione non andrà a buon fine. In questo modo, la stessa attività non viene aggiunta più di una volta.
Cloud Tasks memorizza i nomi delle attività per un massimo di 24 ore dopo l'eliminazione dell'attività dalla coda. Se tenti di ricreare un'attività con lo stesso nome durante questo periodo, la richiesta non andrà a buon fine.
Se non fornisci un nome quando crei un'attività, Cloud Tasks ne genererà uno univoco e la deduplicazione non è necessaria.
Termini chiave
I seguenti termini descrivono le funzionalità chiave di Cloud Tasks.
| Termine | Definizione |
|---|---|
| tentativo | Un tentativo di eseguire un'attività. |
| invio del tentativo | Il momento in cui Cloud Tasks ha inviato l'attività al suo target. |
| risposta del tentativo | Una risposta da un worker che indica che il lavoro associato al task è stato completato correttamente o non è riuscito. |
| gestore | Il codice dell'applicazione (chiamato anche worker) responsabile dell'elaborazione delle attività. Quando Cloud Tasks invia un'attività dalla coda, invia una richiesta a un servizio target e il codice in quell'endpoint che riceve ed esegue l'attività è il gestore. |
| coda | Un insieme di attività con lo stesso tipo di target gestite da una singola configurazione. |
| limiti di frequenza | Determina la frequenza con cui le attività possono essere inviate da una coda, indipendentemente dal fatto che l'invio sia un primo tentativo di attività o un nuovo tentativo. |
| riprova | Più tentativi di eseguire un'attività. Il numero di tentativi viene impostato utilizzando i parametri di ripetizione. |
| tipo di target | Dove e come viene elaborata un'attività. Puoi scegliere come target un endpoint HTTP o un'applicazione App Engine. |
| attività | L'unità di lavoro fondamentale che vuoi eseguire in modo asincrono. Rappresenta una singola parte di lavoro indipendente che aggiungi a una coda per essere elaborata al di fuori del flusso principale dell'applicazione da Cloud Tasks. |
| worker | Un servizio che elabora le attività. Vedi gestore. |
Osservabilità
Puoi monitorare e analizzare l'attività e la crescita di Cloud Tasks utilizzando gli strumenti di monitoraggio, logging e diagnostici forniti da Google Cloud Observability. Per saperne di più, consulta Osservabilità in Cloud Tasks.