procesor singleton o wysokiej dostępności w Tomcat

Mam usługę analityczną przetwarzania pracy działającą w oparciu o RDBMS, która ze względu na potrzebę złożonego buforowania i aktualizacji pamięci podręcznej musi być singletonem w klastrze wysokiej dostępności. Zadania przychodzą jako wiadomości JMS (przez ActiveMQ). Jest częścią aplikacji hostowanej w klastrze HA Tomcat z interfejsem WWW.

Problem polega na tym, że sama usługa musi być w stanie odzyskać dane w ciągu kilku sekund, jeśli węzeł, w którym działa, zawiedzie. Awaria może oznaczać wyłączenie systemu lub po prostu powolny procesor - tzn. Jeśli węzeł powróci do działania po opóźnieniu procesora, ale przetwarzanie zostanie przekazane, nie można kontynuować.

Z doświadczenia, jakie byłoby najbardziej odpowiednie rozwiązanie tutaj:

blokowanie baz danych i sprawdzanie blokady przed rozpoczęciem każdego zadania (nie mogłem tutaj łatwo znaleźć rozwiązania kuloodpornego - jakieś zalecenia?)jakiś rodzaj algorytmu Paxos? Czy znasz jakieś wąskie ramy do tego celu, ponieważ sam algorytm potrzebuje czasu, aby uzyskać prawidłowy, a następnie QA?coś jeszcze?

Nie mam nic przeciwko temu, że odzyskiwanie po awarii jest powolne, ale chciałbym zminimalizować obciążenie dla każdego zadania.

Pewne dodatkowe tło: zadanie nie obejmuje niczego więcej niż czytanie danych z bazy danych, masowanie go różnymi algorytmami (nieco przypominającymi znajdowanie najkrótszych tras) i odkładanie optymalnych rozwiązań dla różnych aktorów. Aktorzy wchodzą w interakcję ze światem rzeczywistym i odkładają pewne opinie, na podstawie których kolejne kroki są optymalizowane przez ten sam procesor pracy.

questionAnswers(1)

yourAnswerToTheQuestion