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

Diagram kolejki zadań

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