Utilizzo delle code in modalità pull in Go

Questa pagina fornisce una panoramica delle code pull nell'ambiente standard di App Engine.

Nelle code push le attività vengono inviate a un servizio di worker in base alla configurazione della coda. Nelle code pull, il servizio worker deve chiedere alla coda le attività. La coda risponde consentendo a questo worker l'accesso esclusivo per elaborare l'attività per un periodo di tempo specificato, chiamato lease.

L'applicazione esegue il offload dell'attività nel servizio coda di attività, che poi la concede in leasing al worker

Utilizzando le code pull, puoi anche raggruppare le attività correlate utilizzando i tag e poi configurare il worker in modo da estrarre più attività con un determinato tag contemporaneamente. Questa procedura è chiamata batching.

Se un worker non riesce a elaborare un'attività prima della scadenza del lease, può rinnovarlo o lasciarlo scadere, a quel punto un altro worker può acquisirlo. Una volta completato il lavoro associato a un'attività, l'operatore deve eliminarla.

L'utilizzo delle code pull richiede che il codice gestisca alcune funzioni automatiche nelle code push:

Scalabilità dei worker
Il tuo codice deve scalare il numero di worker in base al volume di elaborazione. Se il codice non gestisce la scalabilità, rischi di sprecare risorse di calcolo se non ci sono attività da elaborare e rischi anche di avere latenza se hai troppe attività da elaborare.
Eliminazione delle attività
Il codice deve anche eliminare esplicitamente le attività dopo l'elaborazione. Nelle code push, App Engine elimina le attività per te. Se il tuo worker non elimina le attività della coda in modalità pull dopo l'elaborazione, un altro worker le rielaborerà. Ciò comporta uno spreco di risorse di calcolo e rischia di generare errori se le attività non sono idempotenti.

Le code pull nell'ambiente standard di App Engine vengono create impostando una proprietà in un file di configurazione denominato queue.yaml.

Flusso di lavoro della coda in modalità pull

I worker che elaborano le attività dalle code pull devono essere definiti all'interno di un servizio in esecuzione nell'ambiente standard di App Engine.

Il flusso di lavoro è il seguente:

  1. Crea una coda in modalità pull utilizzando queue.yaml.
  2. Crei attività e le aggiungi alla coda.
  3. Il worker che hai creato noleggia l'attività utilizzando TaskQueue.
  4. App Engine invia i dati dell'attività al worker nella risposta del lease.
  5. Il worker elabora l'attività. Se l'attività non viene eseguita prima della scadenza del contratto di locazione, il collaboratore può modificarne la durata. Se il leasing scade, la tâche potrà essere concessa in leasing a un altro lavoratore.
  6. Una volta elaborata correttamente, l'attività viene eliminata dal worker.

Passaggi successivi