синглтонный процессор высокой доступности в Tomcat

У меня есть аналитическая служба обработки заданий, работающая с RDBMS, которая из-за необходимости сложного кэширования и логики обновления кэша должна быть одиночной в кластере высокой доступности. Задания приходят в виде сообщений JMS (через ActiveMQ). Это часть приложения, размещенного в кластере HA Tomcat с веб-интерфейсом.

Проблема в том, что сама служба должна быть в состоянии восстановиться в течение нескольких секунд, если отказывает узел, на котором она работает. Отказ может означать отключение системы или просто медленный процессор - то есть, если узел восстанавливается после задержки процессора, но обработка передается, он не может продолжаться.

Из опыта, что было бы наиболее подходящим решением здесь:

блокировки на основе базы данных и проверка блокировок перед началом каждого задания (я не мог легко найти здесь пуленепробиваемое решение - какие-нибудь рекомендации?)какой-то алгоритм Паксоса? Знаете ли вы какие-либо тонкие рамки для этой цели, так как сам алгоритм требует времени, чтобы правильно и затем QA?что-нибудь еще?

Я неЯ не возражаю, если восстановление после сбоя происходит медленно, но я бы хотел минимизировать накладные расходы для каждой работы.

Некоторый дополнительный фон: задание не включает ничего, кроме чтения данных из базы данных, массирования их с помощью различных алгоритмов (чем-то напоминающих поиск кратчайших маршрутов) и возвращения оптимальных решений для разных участников. Актеры взаимодействуют с реальным миром и возвращают некоторую обратную связь, основываясь на которой последующие шаги оптимизируются одним и тем же обработчиком заданий.

Ответы на вопрос(1)

Ваш ответ на вопрос