Wprowadzenie
Asynq to framework zadań asynchronicznych dla języka Go, który wykorzystuje Redis jako kolejkę wiadomości i posiada skalowalność i prostotę.
Rozwiązanie zadań asynchronicznych Asynq:
- Klient umieszcza zadania w kolejce.
- Serwer pobiera zadania z kolejki i uruchamia wątek roboczy (goroutine) dla każdego zadania.
- Wielokrotne wątki robocze przetwarzają zadania równolegle.
Kolejka zadań to mechanizm do rozprowadzania pracy na wiele maszyn. System może składać się z wielu serwerów roboczych i agentów, aby osiągnąć wysoką dostępność i skalowalność horyzontalną.
Funkcje
- Zapewnia co najmniej jednokrotne wykonanie zadania
- Planowanie zadań
- Ponowienie nieudanych zadań
- Automatyczne przywracanie zadań po awarii wątku roboczego
- Waga kolejki priorytetowej
- Ścisła kolejka priorytetowa
- Niskie opóźnienie w dodawaniu zadań z powodu szybkich operacji zapisu w Redis
- Zadania duplikatowe za pomocą unikalnych opcji
- Pozwala ustawić limity czasowe i terminy dla każdego zadania
- Umożliwia agregację grupy zadań do wykonania wielu kolejnych operacji partiami
- Elastyczny interfejs obsługi z obsługą pośredników
- Pozwala pauzować kolejkę, aby zatrzymać przetwarzanie zadań z kolejki
- Okresowe zadania
- Obsługuje Redis Cluster do automatycznego klastrowania i wysokiej dostępności
- Obsługuje Redis Sentinel dla wysokiej dostępności
- Integracja z Prometeuszem do zbierania i wizualizacji metryk kolejki
- Interfejs sieciowy do inspekcji i zdalnego sterowania kolejkami i zadaniami
- Interfejs wiersza poleceń do inspekcji i zdalnego sterowania kolejkami i zadaniami