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.
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à