Ich bin auf der Suche nach einem skalierbaren "at" Ersatz, mit hoher Verfügbarkeit. Es muss das Hinzufügen und Entfernen von Jobs zur Laufzeit unterstützen.Auf der Suche nach einer skalierbaren "at" Implementierung
Einige Hintergrund: Ich habe eine Anwendung, wo ich Millionen von Ereignissen auslösen, jedes Ereignis tritt nur einmal auf. Ich brauche keine cronähnlichen Mechanismen (erster Sonntag im Monat, etc.), einfach Datum, Zeit und Kontext.
Derzeit verwende ich die Quartz scheduler, und obwohl es ein sehr gutes Projekt ist, hat es Schwierigkeiten, die Menge der Ereignisse, die wir werfen, auch nach vielen Feinabstimmungen (Sharting, Erhöhung der Abfrageintervall, etc.)) aufgrund der Grundsperrung in der Unterstreichungsdatenbank ausgeführt wird. Außerdem ist es für uns etwas übertrieben, da wir im Grunde Millionen von Einmalauslösern und eine relativ kleine Anzahl von Jobs haben.
würde ich jeden Vorschlag
Was sind Ihre Anforderungen rund um Scheitern? Wenn zum Beispiel eine Maschine ausfällt, möchten Sie, dass die "verpassten" Ereignisse ausgelöst werden, wenn ein Ersatz ausgelöst wird? –
Ja, ähnlich wie Quarz. Außerdem liefere ich Quartz in einem Cluster, so dass immer eine warme Maschine wartet (in Quartz konkurrieren alle Knoten jedes Mal, wenn sie die DB nach Jobs abfragen müssen) –
Ich habe mich gerade gefragt, wie einfach wir Dinge * ohne * Quartz machen können. Wenn jedoch jeder Auftrag bestätigt werden muss, ist das schwieriger. Was ist die Strafe, wenn ein Job zweimal ausgeführt wird? (Könnten Sie beispielsweise alle Jobs, die in der letzten Minute ausgeführt wurden, einmal pro Minute bestätigen?) –