2012-05-16 12 views
7

Estoy buscando una biblioteca general para programar muchas tareas. La biblioteca debe proporcionar la capacidad de dividir las tareas en los nodos del clúster, realizar el equilibrio de carga y la tolerancia a fallas, por lo que si algún nodo falla, las tareas del nodo se deben distribuir entre los nodos restantes.Biblioteca de programación distribuida de propósito general para Java

Miré el Hadoop, pero parece que funcionará bien para las tareas de reducción de mapa. En mi caso, las tareas son simplemente remitentes de notificaciones, comprobaciones para el estado del objeto, etc.

El cuarzo parece ser excelente, pero no está claro qué tan bueno es a la hora de enviar eventos a los nodos.

¿Alguna otra opción?

Respuesta

7

Suena como un caso de uso para Akka.

+1

o para [servicio de planificador de Redisson] (https://github.com/mrniko/redisson/wiki/9.-distributed-services/#94-distributed-scheduled-executor-service) –

0

O también se puede intentar Quartz, que puede manejar casi cualquier cosa que desee :)

+0

qué sobre el procesamiento de tareas distribuidas y casos cuando un nodo se cae? Parece que no hay una solución lista para usar. – jdevelop

3

Estoy de acuerdo con Christian que Akka parece ser un mejor ajuste. Quartz es ideal para lo que hace, pero su componente básico es un trabajo que debe ejecutarse. No lo ayudará a descomponer su trabajo en componentes distribuibles.

Si todas sus tareas se pueden descomponer en trabajos, entonces Quartz puede ayudarlo a programarlas, eso es lo que mejor hace. Pero si un trabajo necesita descomponerse en subtareas, entonces necesitará usar otro marco.

Otra opción podría ser spring batch, según sus necesidades.

+0

Por ahora, es posible ejecutar una tarea como "trabajo", pero no veo cómo el cuarzo puede manejar la administración de tareas distribuidas y manejar casos cuando un nodo está inactivo. Y usa encuestas, por lo que es necesario configurar algún tipo de base de datos donde se debe almacenar el trabajo, esto es un posible cuello de botella. ¿Me estoy perdiendo de algo? – jdevelop

+0

la base de datos es de hecho un cuello de botella. para las tareas distribuidas, puede configurar la agrupación en clúster, pero esto es algo limitado –

1

Puede probar ProActive, un planificador de flujo de trabajo que se integra bien con Java (escrito en Java). Es compatible con las características que enumeró. Es un proyecto de código abierto, parte de OW2.

Las siguientes características, por ejemplo están disponibles:

  • flujos de trabajo, es decir, un conjunto de tareas con dependencias y construcciones tales como bucle/Si/replicación
  • tareas se ejecutan en los nodos, es decir, agentes que se ejecutan en máquinas diferentes
  • las tareas se pueden reiniciar automáticamente en caso de fallo de nodo

[aviso legal] soy parte de Activeeon, la empresa que presta apoyo profesional para Pr oActive [/ disclaimer]

+0

Lea [respuesta], la respuesta también debe incluir suficiente información para ser útil incluso si el enlace muere. –

Cuestiones relacionadas