Introduzione

Asynq è un framework per attività asincrone per il linguaggio Go, che utilizza Redis come coda dei messaggi e dispone di scalabilità e semplicità.

Soluzione per attività asincrone di Asynq:

  • Il client inserisce le attività nella coda.
  • Il server recupera le attività dalla coda e avvia un thread worker (goroutine) per ogni attività.
  • Più goroutine worker processano le attività in parallelo.

Una coda di attività è un meccanismo per distribuire il lavoro su più macchine. Il sistema può essere composto da più server worker e agenti per ottenere un'alta disponibilità e scalabilità orizzontale.

Diagramma della coda delle attività

Caratteristiche

  • Garantisce l'esecuzione dell'attività almeno una volta
  • Pianificazione delle attività
  • Ripetizione delle attività fallite
  • Ripristino automatico delle attività quando un thread worker si interrompe
  • Coda di priorità ponderata
  • Coda di priorità rigorosa
  • Basso ritardo nell'aggiunta di attività grazie a operazioni di scrittura veloci in Redis
  • Duplica attività utilizzando opzioni uniche
  • Consente di impostare timeout e scadenze per ciascuna attività
  • Consente di aggregare un gruppo di attività per eseguire più operazioni consecutive in batch
  • Interfaccia del gestore flessibile con supporto per middleware
  • Consente di mettere in pausa la coda per interrompere l'elaborazione delle attività dalla coda
  • Attività periodiche
  • Supporta Redis Cluster per sharding automatico e alta disponibilità
  • Supporta Redis Sentinel per l'alta disponibilità
  • Integrazione con Prometheus per raccogliere e visualizzare le metriche della coda
  • Interfaccia web per ispezionare e controllare in remoto le code e le attività
  • Interfaccia a riga di comando per ispezionare e controllare in remoto le code e le attività