Einführung

Asynq ist ein asynchrones Task-Framework für die Go-Sprache, das Redis als Nachrichtenwarteschlange verwendet und über Skalierbarkeit und Einfachheit verfügt.

Asynq asynchrone Task-Lösung:

  • Der Client legt Aufgaben in die Warteschlange.
  • Der Server ruft Aufgaben aus der Warteschlange ab und startet einen Arbeits-Thread (Goroutine) für jede Aufgabe.
  • Mehrere Arbeits-Goroutinen verarbeiten Aufgaben parallel.

Eine Task-Warteschlange ist ein Mechanismus zur Verteilung von Arbeit auf mehrere Maschinen. Das System kann aus mehreren Worker-Servern und Agenten bestehen, um eine hohe Verfügbarkeit und horizontale Skalierbarkeit zu erreichen.

Aufgabewarteschlangendiagramm

Funktionen

  • Stellt sicher, dass eine Aufgabe mindestens einmal ausgeführt wird
  • Terminplanung von Aufgaben
  • Wiederholung fehlgeschlagener Aufgaben
  • Automatische Wiederherstellung von Aufgaben, wenn ein Arbeits-Thread abstürzt
  • Gewichtete Prioritätswarteschlange
  • Strenge Prioritätswarteschlange
  • Geringe Verzögerung beim Hinzufügen von Aufgaben aufgrund schneller Schreibvorgänge in Redis
  • Dupliziert Aufgaben mithilfe eindeutiger Optionen
  • Ermöglicht das Festlegen von Timeouts und Fristen für jede Aufgabe
  • Ermöglicht die Aggregation einer Gruppe von Aufgaben, um mehrere aufeinanderfolgende Operationen in Chargen auszuführen
  • Flexible Handler-Schnittstelle mit Unterstützung für Middleware
  • Ermöglicht das Anhalten der Warteschlange, um die Verarbeitung von Aufgaben aus der Warteschlange zu stoppen
  • Periodische Aufgaben
  • Unterstützt Redis Cluster für automatisches Sharding und hohe Verfügbarkeit
  • Unterstützt Redis Sentinel für hohe Verfügbarkeit
  • Integration mit Prometheus zur Erfassung und Visualisierung von Warteschlangenmetriken
  • Webinterface zur Überprüfung und Fernsteuerung von Warteschlangen und Aufgaben
  • Befehlszeilenschnittstelle zur Überprüfung und Fernsteuerung von Warteschlangen und Aufgaben