2012-05-16 8 views
7

Ich bin auf der Suche nach einer allgemeinen Bibliothek für die Planung einer Vielzahl von Aufgaben. Die Bibliothek muss die Möglichkeit bieten, Aufgaben über Knoten im Cluster zu verteilen, Lastenausgleich und Fehlertoleranz durchzuführen - wenn also ein Knoten ausfällt, müssen die Aufgaben für den Knoten über die verbleibenden Knoten verteilt werden.Universelle verteilte Planungsbibliothek für Java

Ich schaute auf den Hadoop - aber es sieht so aus, als würde es gut für Map-Reduce-Aufgaben funktionieren. In meinem Fall sind Aufgaben einfach Absender von Benachrichtigungen, Prüfer für Objektstatus usw.

Quarz scheint großartig zu sein - aber es ist nicht klar, wie gut es ist, wenn es darum geht, Ereignisse an Knoten zu senden.

Weitere Optionen?

Antwort

7

Klingt wie ein Anwendungsfall für Akka.

+1

oder für [Redisson Scheduler Service] (https://github.com/mrniko/redisson/wiki/9.-distributed-services/#94-distributed-scheduled-executor-service) –

0

Oder Sie können auch versuchen, Quartz, kann es wollen, fast alles, was Sie anfassen :)

+0

was über verteilte Aufgabenverarbeitung und Fälle, wenn ein Knoten ausfällt? Sieht so aus, als gäbe es keine Out-of-the-Box-Lösung. – jdevelop

3

ich mit Christian darüber einig, dass Akka wie eine bessere Passform zu sein scheint. Quarz ist großartig für das, was es tut, aber sein Grundbaustein ist ein Job, der ausgeführt werden sollte. Es wird Ihnen nicht helfen, Ihren Job in verteilbare Komponenten zu zerlegen.

Wenn alle Ihre Aufgaben in Jobs zerlegt werden können, kann Quartz Ihnen helfen, sie zu planen, das ist es, was es am besten macht. Wenn ein Job jedoch in Teilaufgaben zerlegt werden muss, müssen Sie ein anderes Framework verwenden.

Eine andere Option könnte spring batch sein, je nach Ihren Bedürfnissen.

+0

Für jetzt ist es möglich, eine Aufgabe als "Job" auszuführen, aber ich sehe nicht, wie Quartz mit verteilter Aufgabenverwaltung umgehen und Fälle behandeln kann, wenn ein Knoten ausgefallen ist. Und es verwendet Polling, also ist es notwendig, irgendeine Art von Datenbank zu konfigurieren, wo der Job gespeichert werden muss, dies ist ein potentieller Engpass. Fehle ich etwas? – jdevelop

+0

Die Datenbank ist in der Tat ein Flaschenhals. für verteilte Aufgaben können Sie Clustering konfigurieren, aber dies ist etwas begrenzt –

1

Sie könnten versuchen ProActive, ein Workflow-Scheduler, der gut mit Java integriert (in Java geschrieben). Es unterstützt die Funktionen, die Sie aufgelistet haben. Es ist ein Open-Source-Projekt, Teil von OW2.

Die folgenden Funktionen sind zum Beispiel erhältlich:

  • Workflows, dh Reihe von Aufgaben mit Abhängigkeiten und Konstrukte wie Loop/if/Replikation
  • Tasks auf Knoten ausgeführt werden, dh Mittel auf verschiedenen Maschinen ausgeführt werden
  • Aufgaben können

[Haftungsausschluss] ich bin ein Teil von Activeeon, das Unternehmen bietet professionelle Unterstützung für Pr automatisch auf Knotenausfall neu gestartet werden oActive [/ Disclaimer]

+0

Bitte lesen [Antwort], Antwort sollte auch genügend Informationen enthalten, um nützlich zu sein, auch wenn der Link stirbt. –