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