Verteilte, fehlertolerante Job-Queue
- Hatchet ersetzt bestehende, schwer zu verwaltende Queue- oder Pub/Sub-Systeme und ermöglicht die Gestaltung dauerhafter Workloads, die sich von Ausfällen erholen und Probleme wie Konkurrenz, Fairness und Rate Limiting lösen können.
- Anstatt eine eigene Job-Queue oder ein eigenes Pub/Sub-System zu verwalten, kann man mit Hatchet Funktionen mit minimaler Konfiguration oder Infrastruktur auf eine Reihe von Workern verteilen.
Vorteile von Hatchet
- Scheduling mit extrem niedriger Latenz und hohem Durchsatz
- Hatchet basiert auf einer Low-Latency-Queue mit einer durchschnittlichen Startzeit von
25ms und bietet damit eine ausgewogene Kombination aus Echtzeit-Interaktionsfähigkeit und der für unternehmenskritische Jobs nötigen Zuverlässigkeit.
- Konkurrenz, Fairness, Rate Limiting
- Strategien wie FIFO, LIFO, Round Robin und Priority Queues sind als integrierte Strategien in Hatchet umgesetzt, sodass sich gängige Skalierungsprobleme mit minimaler Konfiguration umgehen lassen.
- Resilienz by Design
- Mit benutzerdefinierten Retry-Richtlinien und integrierter Fehlerbehandlung stellt Hatchet sicher, dass Jobs sich schnell von temporären Fehlern erholen können.
Verbesserte Sichtbarkeit und Kontrolle
- Observability
- Alle Ausführungen sind vollständig durchsuchbar, sodass sich Probleme schnell identifizieren lassen.
- (Praktisch) durable execution
- Ereignisse lassen sich erneut abspielen, und Ausführungen können an bestimmten Schritten eines Workflows manuell neu gestartet werden.
- Cron
- Funktionsausführungen lassen sich wiederkehrend planen.
- Einmaliges Scheduling
- Funktionsausführungen lassen sich zu einer bestimmten Uhrzeit und an einem bestimmten Datum planen.
- Spike-Schutz
- Dämpft plötzliche Traffic-Spitzen und führt nur das aus, was das System verarbeiten kann.
- Progressives Streaming
- Updates können entsprechend dem Fortschritt von Hintergrund-Workern abonniert werden.
Beispielhafte Einsatzfälle
- Fairness für Generative AI
- Mit Hatchet lassen sich Anfragen fair auf Worker verteilen, damit stark ausgelastete Nutzer das System nicht überlasten.
- Batch-Verarbeitung für die Dokumentenindizierung
- Hatchet kann große Batch-Verarbeitungen von Dokumenten, Bildern und anderen Daten übernehmen und bei Fehlern mittendrin wieder ansetzen.
- Workflow-Orchestrierung für multimodale Systeme
- Hatchet kann multimodale Ein- und Ausgaben koordinieren und komplette Ausführungen im DAG-Stil verarbeiten.
- Korrektheit für ereignisgesteuerte Verarbeitung
- Es kann auf externe oder interne Systemereignisse reagieren und Ereignisse automatisch erneut abspielen.
Schnellstart
- Hatchet unterstützt Open-Source-SDKs für Python, Typescript und Go.
- Zum Einstieg kann man die Hatchet-Dokumentation lesen oder das Quickstart-Repository ansehen.
SDK-Repositories
- Hatchet bietet standardmäßig ein Go-SDK an.
- Ein Typescript-SDK ist ebenfalls verfügbar.
- Wenn Probleme im Zusammenhang mit den SDKs auftreten, können im jeweiligen Repository Issues eingereicht werden.
Gibt es eine gemanagte Cloud-Version von Hatchet?
- Ja, während der Beta-Phase wird einigen Unternehmen eine Cloud-Version angeboten, die beim Aufbau und der Weiterentwicklung des Produkts helfen.
Gibt es eine Self-Hosted-Version von Hatchet?
- Ja, Anleitungen für Open-Source-Docker-Container zur Selbst-Hosting-Nutzung finden sich in der Dokumentation.
Wie schneidet das im Vergleich zu Alternativen ab? (Celery, BullMQ)
- Warum wurde noch eine weitere gemanagte Queue entwickelt?
- Ziel war es insbesondere, die Vorteile eines vollständigen transaktionalen Queueings zu bieten, das sich auf Ausführungen im DAG-Stil stützt, und es besteht die starke Überzeugung, dass Postgres die meisten Queueing-Anwendungsfälle ersetzen kann.
- Viele Queues basieren auf Redis, was bei Unachtsamkeit zu Datenverlust durch OOM führen kann, während sich solche Probleme mit PG vermeiden lassen.
Probleme
- Über Github-Issues können gefundene Bugs gemeldet werden.
- Da sich das Projekt noch in einer frühen Phase befindet, ist es besser, vor komplexen Feature-Requests zunächst über Discord Kontakt aufzunehmen.
Wenn du beitragen möchtest
- Sieh dir die Beitragsdokumentation an und teile im Discord-Kanal #contributing mit, woran du arbeiten möchtest; das hilft, die Projektrichtung mitzugestalten und die Zusammenarbeit zu erleichtern.
Meinung von GN⁺
- Hatchet scheint eine Lösung zu sein, die die Komplexität der Verwaltung von Job-Queues in verteilten Systemen reduziert und hohe Verfügbarkeit sowie Fehlertoleranz bietet, was besonders für groß angelegte Datenverarbeitung und Echtzeitdienste nützlich sein dürfte.
- Im Vergleich zu anderen derzeit am Markt verwendeten Queue-Systemen ist die durch den Einsatz von Postgres gewonnene Stabilität und Skalierbarkeit ein bemerkenswerter Vorteil.
- Bei der Einführung von Hatchet sollten die Kompatibilität mit der bestehenden Infrastruktur, die Datenmigration und die technischen Fähigkeiten des Teams berücksichtigt werden.
- Die erweiterten Funktionen für Sichtbarkeit und Kontrolle, die Hatchet bietet, können Performance-Monitoring und Fehlerbehebung erleichtern und so die Arbeitslast von Entwicklern und Betriebsteams verringern.
- Da Hatchet sich noch in der Beta-Phase befindet, ist eine ausreichende Validierung hinsichtlich Stabilität und Funktionalität erforderlich, und vor dem Einsatz in großen Systemen sind umfassende Tests nötig.
1 Kommentare
Hacker-News-Kommentare
contextals Argument annehmen. Er sagte, das fühle sich so an, als müsse man beim Schreiben von Funktionen viel Boilerplate-Code verfassen.SKIP LOCKEDzu verwenden, habe dann aber den Job gewechselt. Er fragte, ob Hatchet für einen solchen Use Case geeignet sei.