Informazioni su Cloud Tasks

Questa pagina descrive cosa sono le attività e le code di Cloud Tasks e quando e come utilizzarle. Cloud Tasks ti consente di separare le parti del lavoro che possono essere eseguite in modo indipendente, al di fuori del flusso dell'applicazione principale, e di inviarle per l'elaborazione in modo asincrono, utilizzando i gestori creati da te. Queste parti indipendenti sono chiamate attività. Ad esempio, devi aggiornare un database durante l'elaborazione di una richiesta utente, ma gli aggiornamenti possono richiedere molto tempo. La riduzione del carico di questi dettagli come attività ti consente di uscire dalla richiesta più rapidamente.

L'attività scaricata viene aggiunta a una coda, che comporta la persistenza dell'attività finché non viene eseguita correttamente. In base alla configurazione iniziale, la coda può fungere anche da controllo del flusso di invio. Puoi creare e configurare la coda, che viene 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 al processo, ad esempio i costi di latenza per gli utenti, gli arresti anomali dei server, i limiti del consumo di risorse e la gestione dei nuovi tentativi, sono gestite dal servizio.

Cloud Tasks è progettato per fornire la consegna "almeno una volta"; ovvero, se un'attività viene aggiunta correttamente, la coda la consegna almeno una volta. In alcune rare circostanze è possibile l'esecuzione di più attività, quindi il codice deve garantire che non si verifichino effetti collaterali dannosi dell'esecuzione ripetuta. I gestori dovrebbero essere idempotenti.

Le attività sono composte da un nome univoco e informazioni di configurazione e, facoltativamente, da tutti i dati della richiesta iniziale, chiamata 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 disporre di un progetto Google Cloud.

Casi d'uso

I casi d'uso tipici includono:

  • Accelerare i tempi di risposta degli utenti delegando a un worker le operazioni in background potenzialmente lente, come gli aggiornamenti
  • Conservazione delle richieste nel contesto di incidenti di produzione imprevisti
  • Aiuta a ridurre i picchi di traffico rimuovendo le attività non rivolte agli utenti dal flusso utente principale
  • Gestione delle tariffe delle chiamate API di terze parti

Code di Cloud Tasks con destinazioni HTTP

Nel caso di destinazioni HTTP generiche, il servizio Cloud Tasks inoltra la richiesta dell'attività al worker, situato su qualsiasi endpoint HTTP generico, in base alla configurazione dell'attività. Questo endpoint potrebbe trovarsi su Cloud Functions, Cloud Run, GKE, Compute Engine o persino su un server web on-prem, a seconda di come è configurata l'attività. Queste code inviano le richieste a una frequenza affidabile e configurabile. Garantiscono un'esecuzione affidabile dell'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 non viene fornita alcuna risposta, l'attività viene riprovata.

Code basate su HTTP

Il target deve gestire la scalabilità dei worker e la pulizia delle attività una volta completate.

Se la tua destinazione richiede l'autenticazione, devi configurare due account di servizio, uno per l'applicazione, il client e uno per la coda stessa. A entrambi gli account devono essere state concesse le autorizzazioni necessarie e un identificatore per l'account di servizio clienti deve essere incluso nella richiesta dell'attività. Per ulteriori informazioni, consulta Creare attività di destinazione HTTP.

Code di Cloud Tasks con destinazioni di 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 App Engine di prima generazione che attualmente utilizzano l'API Tasks Queue possono eseguire la migrazione a Cloud Tasks. Per scoprire come, consulta Eseguire la migrazione dei servizi in bundle legacy. Gli utenti dei runtime di App Engine di prima generazione che non utilizzano il servizio delle attività in bundle possono eseguire l'upgrade ai runtime di seconda generazione per utilizzare Cloud Tasks.

Nel caso delle destinazioni di App Engine, il servizio Cloud Tasks inoltra anche la richiesta dell'attività al gestore, che però si trova all'interno di App Engine. Pertanto, tutte le code che hanno come target i gestori App Engine devono avere un'app App Engine. I gestori devono essere eseguiti nell'area geografica in cui viene eseguita l'app App Engine. Questa regione funge anche da parametro LOCATION_ID per le richieste Cloud Tasks.

Il routing delle attività viene eseguito in base al modo in cui è configurata l'attività (o, meno spesso, la coda stessa). Le code inviano le richieste a una frequenza affidabile e configurabile. Garantiscono un'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 questa istanza prima di una scadenza in base al tipo di scalabilità istanza del servizio: 10 minuti per la scalabilità automatica o fino a 24 ore per la scalabilità manuale. Se viene inviata una risposta diversa o non viene fornita alcuna risposta, l'attività viene riprovata.

Code basate su App Engine

Poiché i gestori fanno parte di App Engine, il servizio Cloud Tasks stesso può svolgere gran parte della gestione del processo per l'attività, facendo lo scale up e lo scale down dei worker in relazione al traffico ed eliminando le attività una volta completate.

Regioni supportate per target

Se la tua destinazione è un endpoint HTTP/S, Cloud Tasks è disponibile in tutte le regioni di Google Cloud supportate per Cloud Tasks.

Se il target è un'applicazione App Engine situata all'interno del progetto corrente:

  • Un'attività che ha come target App Engine può essere creata solo nella regione App Engine del progetto.

  • Un progetto Google Cloud può contenere una sola app App Engine e la regione in cui si trova l'app App Engine non può essere modificata dopo la creazione dell'app.

  • App Engine è a livello di regione, il che significa che l'infrastruttura che esegue la tua app si trova in una regione specifica. Se vuoi distribuire risorse di calcolo e code in più regioni, devi scegliere invece come target un endpoint HTTP/S.

  • Se non utilizzi App Engine come destinazione, non devi eseguire il deployment di un'applicazione App Engine e puoi disabilitare qualsiasi applicazione App Engine esistente.

Flussi di lavoro

Il flusso di lavoro generale è il seguente:

  1. Puoi creare un worker per elaborare le attività.
  2. Crei una coda.
  3. Puoi creare le attività in modo programmatico e aggiungerle alla coda.
  4. Il servizio Cloud Tasks restituisce un OK all'applicazione di origine. Questo indica che l'attività è stata scritta correttamente nello spazio di archiviazione di Cloud Tasks, rendendo la richiesta di creazione dell'attività altamente disponibile e durevole.
  5. Le attività vengono passate al worker.
  6. Il worker elabora l'attività.
  7. Per completare la sequenza, il worker restituisce un codice di stato di operazione riuscita 2xx al servizio Cloud Tasks.

Una volta che l'attività viene trasferita alla coda, non vengono resi disponibili dati per la richiesta iniziale.

Funzionalità

Con Cloud Tasks, puoi inviare elementi di lavoro asincroni con i seguenti controlli:

  • Pianificare tempi di consegna specifici
  • Gestire le tariffe di consegna
  • Configura il comportamento dei nuovi tentativi
  • Accedere e gestire le singole attività in una coda
  • Attiva deduplicazione attività

Termini

La tabella seguente mostra i termini chiave che descrivono aspetti del comportamento di Cloud Tasks.

Termine Definizione
queue Un insieme di attività con lo stesso tipo di target gestito da un'unica configurazione.
tipo di target Dove e come viene elaborata un'attività.
worker Un servizio che elabora attività.
tentativo Tentativo di esecuzione di un'attività.
tentativo di spedizione Il momento in cui Cloud Tasks ha inviato l'attività alla destinazione.
tentativo di risposta Una risposta di un worker, che indica che il lavoro associato all'attività è stato completato correttamente o non è stato completato.
retry Più tentativi di esecuzione di un'attività. Il numero di nuovi tentativi viene impostato tramite RetryConfig.
limiti di frequenza I limiti di frequenza per una coda.

Metriche

Le seguenti metriche predefinite di Google Tasks sono disponibili utilizzando Cloud Monitoring.

Tipo di metrica
Nome visualizzato
Tipo, Tipo, Unità
Descrizione
Etichette
api/request_count
Richieste API
DELTA, INT64, 1
Conteggio delle chiamate API Cloud Tasks.
api_method: Il metodo API chiamato (ad es. CreateTask).
response_code: Codice di risposta canonico come stringa (ad es. "ok").
queue/depth
Profondità coda BETA
GAUGE, INT64, 1
Il numero di attività in coda. Campionamento eseguito ogni 60 secondi. Dopo il campionamento, i dati non sono visibili per un massimo di 120 secondi.
queue/task_attempt_count
Conteggio tentativi di attività
DELTA, INT64, 1
Conteggio del numero di attività che la coda ha tentato di inviare, suddivise per codice di risposta dell'attività.
response_code: codice di risposta canonico come stringa (ad es. "ok").
queue/task_attempt_delays
Ritardi dei tentativi di attività
DELTA, DISTRIBUTION, ms
Ritardo tra ogni ora di tentativo pianificata e la data e l'ora effettiva dei tentativi.