2012-05-16 21 views
7

Poszukuję ogólnej biblioteki do planowania wielu zadań. Biblioteka musi zapewniać możliwość dzielenia zadań między węzłami w klastrze, przeprowadzania równoważenia obciążenia i odporności na awarie - tak więc, jeśli jakiś węzeł ulegnie awarii, zadania węzła muszą zostać rozdzielone między pozostałe węzły.Biblioteka zbiorczego planowania rozproszonego ogólnego przeznaczenia dla języka Java

Spojrzałem na Hadoop - ale wygląda na to, że będzie dobrze działać w przypadku zadań zmniejszających mapę. W moim przypadku zadania są po prostu nadawcami powiadomień, kontrolerów stanu obiektu itp.

Kwarc wydaje się być świetny - ale nie jest jasne, jak dobrze jest, gdy przychodzi do wysyłania zdarzeń do węzłów.

Jakieś inne opcje?

Odpowiedz

7

Brzmi jak przypadek użycia dla Akka.

+1

lub dla [usługi harmonogramu Redisson] (https://github.com/mrniko/redisson/wiki/9-distributed-services/#94-distributed-scheduled-executor-service) –

0

Albo można też spróbować Quartz może obsłużyć prawie wszystko co chcesz :)

+0

co o rozproszonym przetwarzaniu zadań i przypadkach, gdy jeden węzeł przestaje działać? Wygląda na to, że nie ma rozwiązania out of box. – jdevelop

3

zgadzam się z Christian że Akka wydaje się lepsze dopasowanie. Mechanizm kwarcowy doskonale nadaje się do tego, co robi, ale jego podstawowym blokiem konstrukcyjnym jest zadanie, które powinno zostać wykonane. To nie pomoże ci rozłożyć twojej pracy na komponenty, które można dystrybuować.

Jeśli wszystkie twoje zadania mogą zostać rozłożone na zadania, wtedy Quartz może pomóc Ci je zaplanować, to jest to, co robi najlepiej. Ale jeśli zadanie musi się rozłożyć na podzadania, musisz użyć innej struktury.

Inną opcją może być spring batch, w zależności od potrzeb.

+0

Na razie możliwe jest uruchomienie jednego zadania jako "zadania", ale nie widzę, jak kwarc radzi sobie z rozproszonym zarządzaniem zadaniami i obsługuje przypadki, gdy jeden węzeł jest wyłączony. Korzysta z funkcji odpytywania, więc konieczne jest skonfigurowanie bazy danych, w której zadanie ma być przechowywane, jest to potencjalne wąskie gardło. Czy czegoś brakuje? – jdevelop

+0

Baza danych jest rzeczywiście wąskim gardłem. dla zadań rozproszonych możesz skonfigurować tworzenie klastrów, ale jest to nieco ograniczone. –

1

Można wypróbować ProActive, harmonogram przepływu pracy, który dobrze integruje się z Javą (napisaną w Javie). Obsługuje wymienione funkcje. Jest to projekt typu open source, część OW2.

Następujące funkcje na przykład dostępne są:

  • Workflows, czyli zbiór zadań z zależnościami i konstrukcjami, takimi jak pętla/if/replikacja
  • Zadania są wykonywane na węzłach, czyli środki uruchomione na różnych komputerach
  • Zadania mogą być wznowiona automatycznie po awarii węzła

[Disclaimer] Jestem częścią Activeeon, firma zapewnia profesjonalną obsługę Pr oActive [/ disclaimer]

+0

Przeczytaj [odpowiedź], odpowiedź powinna również zawierać wystarczającą ilość informacji, aby była przydatna, nawet jeśli link zginie. –

Powiązane problemy