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 di lavoro che possono essere eseguite in modo indipendente, al di fuori del flusso della tua applicazione principale, e di inviarle per l'elaborazione in modo asincrono, utilizzando i gestori che crei. Questi lavori indipendenti sono chiamati attività. Ad esempio, è necessario aggiornare un database nell'ambito dell'elaborazione di una richiesta dell'utente, ma gli aggiornamenti possono richiedere molto tempo. L'offload di questi dettagli come attività ti permette di tornare dalla richiesta più rapidamente.
L'attività non caricata viene aggiunta a una coda, che persiste per un'esecuzione finché non viene eseguita correttamente. In base alla configurazione iniziale, la coda può anche fungere da controllo del flusso di invio. Puoi creare e configurare la coda, che è poi gestita dal servizio Cloud Tasks. Una volta aggiunte le attività, la coda le invia e assicura che i worker vengano elaborati in modo affidabile. Le complessità associate a questo processo, come costi di latenza rivolti agli utenti, arresti anomali del server, limitazioni del consumo di risorse e 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. Ora gli utenti dei runtime di seconda generazione dell'ambiente standard di App Engine, dell'ambiente flessibile e di altre piattaforme possono utilizzare l'API Cloud Tasks.
Per accedere al servizio Cloud Tasks utilizzando l'API Cloud Tasks , devi avere un progetto Google Cloud.
Casi d'uso
I casi d'uso tipici includono:
- Accelerare i tempi di risposta degli utenti delegando le operazioni in background potenzialmente lente come gli aggiornamenti dei database per un worker
- Preservare le richieste nel contesto di incidenti di produzione imprevisti.
- Agevolare i picchi di traffico rimuovendo le attività non rivolte all'utente dal flusso utente principale
- Gestione delle tariffe per le 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, 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, a seconda della configurazione dell'attività. Queste code inviano le richieste con una frequenza affidabile e configurabile. Garantiscono un'esecuzione affidabile delle attività: dopo il completamento, 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 se non viene ricevuta alcuna risposta, l'attività viene tentata di nuovo.
Il target deve gestire la scalabilità dei worker e la pulizia delle attività una volta completate.
Se il tuo target 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 dell'account di servizio client deve essere incluso nella richiesta dell'attività. Per ulteriori informazioni, consulta Creare attività di destinazione HTTP.
Code di Cloud Tasks con destinazioni App Engine
Nel caso di destinazioni App Engine, il servizio Cloud Tasks inoltre inoltra la richiesta di attività al gestore, ma questo worker si trova in App Engine. 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 parametro LOCATION_ID per le tue richieste Cloud Tasks.
Le attività vengono instradate in base alla configurazione dell'attività (o, meno comunemente, alla coda stessa). Le code inviano le richieste a una tariffa affidabile e configurabile. Garantiscono l'esecuzione affidabile delle attività: dopo il completamento, 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 servizio di scalabilità delle istanze: 10 minuti per la scalabilità automatica o fino a 24 ore per la scalabilità manuale. Se viene inviata una risposta diversa o se non viene ricevuta alcuna risposta, l'attività viene tentata di nuovo.
Poiché i gestori fanno parte di App Engine, il servizio Cloud Tasks stesso può svolgere gran parte della gestione dei processi per l'attività, scalando i worker in alto e in basso in relazione al traffico ed eliminando le attività quando sono completate.
Regioni supportate per target
Se il tuo target è un endpoint HTTP/S, Cloud Tasks è disponibile in tutte le aree geografiche di Google Cloud supportate per Cloud Tasks.
Se il tuo target è un'applicazione App Engine che si trova nel progetto attuale:
Un'attività che ha come target App Engine può essere creata solo nell'area geografica di App Engine del progetto.
Un progetto Google Cloud può contenere una sola app App Engine e la regione in cui si trova non può essere modificata una volta creata l'app.
App Engine è regionale, vale a dire che l'infrastruttura che esegue la tua app si trova in una regione specifica. Se vuoi distribuire calcoli 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 puoi disattivare qualsiasi app App Engine esistente.
Workflows
Il flusso di lavoro generale è il seguente:
- Crei un worker per elaborare le attività.
- Crei una coda.
- Puoi creare le attività in modo programmatico e aggiungerle alla coda.
- Il servizio Cloud Tasks restituisce un OK all'applicazione di origine. Indica che l'attività è stata scritta correttamente nello spazio di archiviazione di Cloud Tasks, rendendo la richiesta di attività altamente disponibile e durevole.
- Le attività vengono trasmesse al worker.
- Il worker elabora l'attività.
- Per completare la sequenza, il worker restituisce un codice di stato 2xx riuscito al servizio Cloud Tasks.
Una volta che l'attività è stata trasferita alla coda, non vengono resi 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 un nuovo comportamento
- Accedere e gestire le singole attività in una coda
- Abilita la deduplicazione delle attività
Termini
La seguente tabella mostra i termini chiave che descrivono gli aspetti del comportamento di Cloud Tasks.
Termine | Definizione |
---|---|
queue | Un insieme di attività con lo stesso tipo di destinazione gestito da un'unica 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 invio | 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 meno. |
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
Con Cloud Monitoring sono disponibili le seguenti metriche predefinite di Google Tasks.
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 BETA Profondità della 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
|
Conteggio dei tentativi di attività suddivisi per codice di risposta.
response_code :
codice di risposta canonico come stringa (ad esempio "ok").
|
queue/task_attempt_delays Ritardi nel tentativo di eseguire l'attività DELTA ,
DISTRIBUTION ,
ms
|
Ritardo tra il tempo di tentativo pianificato e il tempo di tentativo effettivo. |