Procesador singleton de alta disponibilidad en Tomcat

Tengo un servicio analítico de procesamiento de trabajos que trabaja contra RDBMS que, debido a la necesidad de un almacenamiento en caché complejo, la lógica de actualización de la memoria caché debe ser un singleton en un clúster de alta disponibilidad. Los trabajos están llegando como mensajes JMS (a través de ActiveMQ). Es parte de la aplicación alojada en el clúster de Tom Tom HA con front-end web.

El problema es que el servicio en sí debe poder recuperarse en segundos si falla un nodo donde se está ejecutando. La falla podría significar que el sistema no funcione o solo una CPU lenta, es decir, si el nodo se recupera después de la demora de la CPU, pero el procesamiento se entrega, no puede continuar.

Por experiencia, cuál sería la solución más adecuada aquí:

bloqueos basados ​​en la base de datos y verificación de bloqueos antes de que comience cada trabajo (no podría encontrar fácilmente una solución a prueba de balas aquí, ¿alguna recomendación?)Algún tipo de algoritmo de Paxos? ¿Conoces algún marco delgado para ese propósito, ya que el algoritmo en sí toma tiempo para hacerlo bien y luego en el control de calidad?¿Algo más?

No me importa si la recuperación de fallos es lenta, pero me gustaría minimizar una sobrecarga para cada trabajo.

Algunos antecedentes adicionales: el trabajo no implica nada más que leer los datos de la base de datos, masajearlos con varios algoritmos (pareciéndose a encontrar rutas más cortas) y devolver las soluciones óptimas para que los diferentes actores sigan adelante. Los actores interactúan con el mundo real y devuelven algunos comentarios, basados ​​en los pasos subsiguientes que son optimizados por el mismo procesador de trabajo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta