Informazioni su Cloud Tasks

Questa pagina descrive cosa sono le attività e le code di Cloud Tasks, nonché quando e come utilizzarle. Cloud Tasks ti consente di separare parti del lavoro che possono essere eseguite in modo indipendente, al di fuori del flusso principale dell'applicazione, e di inviarle per l'elaborazione in modo asincrono utilizzando i gestori che crei. Questi lavori indipendenti vengono chiamati attività. Ad esempio, è necessario aggiornare un database nell'ambito dell'elaborazione di una richiesta utente, ma gli aggiornamenti possono richiedere molto tempo. L'eliminazione di questi dettagli come attività ti consente di tornare dalla richiesta più rapidamente.

L'attività scaricata viene aggiunta a una coda e l'attività persiste finché non viene eseguita correttamente. In base alla configurazione iniziale, la coda può anche fungere da controllo del flusso di invio. Crei e configuri la coda che sarà gestita dal servizio Cloud Tasks. Una volta aggiunte le attività, la coda le invia e assicura che vengano elaborate in modo affidabile dai tuoi worker. Le complessità associate a questo processo, come i costi di latenza rivolti all'utente, gli arresti anomali del server, le limitazioni relative al consumo delle risorse e la gestione dei nuovi tentativi sono gestite dal servizio.

Le attività stesse sono composte da un nome univoco e da informazioni di configurazione e, facoltativamente, da qualsiasi dato della richiesta iniziale, chiamato payload, necessario 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.

Gli utenti dei runtime di prima generazione dell'ambiente standard di App Engine devono accedere al servizio Cloud Tasks tramite l'API App Engine TaskQueue. Per ulteriori informazioni sull'utilizzo di questo metodo, consulta la documentazione di Java 8, Python 2.7, Go 1.11 o PHP 5.5. Gli utenti dei runtime di seconda generazione dell'ambiente standard di App Engine, dell'ambiente flessibile e di altri piattaforme possono ora utilizzare l'API Cloud Tasks.

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 operazioni in background potenzialmente lente come gli aggiornamenti dei database a un worker
  • Conservazione delle richieste nel contesto di incidenti di produzione imprevisti
  • Aiutare a ridurre i picchi di traffico rimuovendo le attività non rivolte all'utente dal flusso principale
  • Gestione delle tariffe per le chiamate API di terze parti

Code di Cloud Tasks con destinazioni HTTP

Nel caso di target HTTP generici, il servizio Cloud Tasks inoltra la richiesta di attività al worker, situata in qualsiasi endpoint HTTP generico, in base alla configurazione dell'attività. Questo endpoint potrebbe trovarsi su Cloud Functions, Cloud Run, GKE, Compute Engine o anche su un server web on-prem, in base a come l'attività è configurata. Queste code inviano le richieste a una tariffa configurabile e affidabile. Garantiscono un'esecuzione affidabile delle attività. Al termine dell'operazione, 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, l'attività viene ripetuta.

Code basate su HTTP

La destinazione deve gestire i worker di scalabilità e ripulire le attività una volta completate.

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

Code di Cloud Tasks con destinazioni App Engine

Nel caso di destinazioni App Engine, anche il servizio Cloud Tasks inoltra la richiesta di attività al gestore, ma questo worker si trova all'interno di App Engine. Perciò tutte le code che hanno come target i gestori di 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 di Cloud Tasks.

Il routing delle attività viene eseguito in base alla configurazione dell'attività (o, meno di frequente, alla coda stessa). Le code inviano le richieste a una frequenza affidabile e configurabile. Garantiscono un'esecuzione affidabile delle attività: dopo l'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 basata sul tipo di scalabilità 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, l'attività viene ripetuta.

Code basate su App Engine

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

Aree supportate per target

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

Se il target è un'applicazione App Engine che si trova all'interno del progetto attuale:

  • Un'attività che ha come target App Engine può essere creata solo nell'area geografica di App Engine del progetto.

  • Un progetto Cloud 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 è a livello di area geografica, ossia l'infrastruttura che esegue la tua app si trova in un'area geografica specifica. Se vuoi distribuire code di calcolo e code in più aree geografiche, devi scegliere come target un endpoint HTTP/S.

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

Workflows

Il flusso di lavoro generale è il seguente:

  1. Crei 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à è stata messa in coda, non sono disponibili dati per la richiesta iniziale.

Funzionalità

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

  • Pianificare tempi di consegna specifici
  • Gestisci le tariffe di consegna
  • Configura nuovo comportamento
  • Accedere a e gestire le singole attività in una coda
  • Attiva la deduplicazione delle attività

Termini

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

Termine Definizione
coda Un insieme di attività con lo stesso tipo di target gestito da una singola configurazione.
tipo di target Dove e come viene elaborata un'attività.
worker Un servizio che elabora le attività.
tentativo Un tentativo di eseguire un'attività.
tentativo di spedizione Il momento in cui Cloud Tasks ha inviato l'attività alla sua destinazione.
tentativo di risposta Una risposta da un worker che indica che il lavoro associato all'attività è stato completato correttamente o non è riuscito.
retry Più tentativi per eseguire 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 di Tasks predefinite sono disponibili con Cloud Monitoring.

Tipo di metrica
Nome visualizzato
Tipo, Tipo, Unità
Descrizione
Etichette
api/request_count
Richieste API
DELTA, INT64, 1
Numero di 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
BETA Profondità coda
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 attività
DELTA, INT64, 1
Numero di tentativi di attività suddivisi per codice di risposta.
response_code: codice di risposta canonico come stringa (ad es. 'ok').
queue/task_attempt_delays
Ritardi nel tentativo di eseguire l'attività
DELTA, DISTRIBUTION, ms
Ritardo tra ogni tempo pianificato o effettivo.