9

Estoy planeando escribir una aplicación que tendrá procesos de trabajo distribuidos. Uno de ellos será Leader que asignará tareas a otros procesos. Diseñar el proceso de elección de Leader es bastante simple: cada proceso intenta crear un nodo efímero en la misma ruta. Quien sea exitoso, se convierte en el líder.Cómo diseñar la distribución de tareas con ZooKeeper

Ahora, mi pregunta es cómo diseñar el proceso de distribución de las tareas de manera uniforme? ¿Alguna receta para esto?

voy a elaborar un poco en la configuración del entorno:

Supongamos que hay 10 Maschines trabajador, cada uno ejecuta un proceso, uno de ellos convertido en líder. Las tareas se envían en la cola, el líder las toma y asigna a un trabajador. El proceso de trabajo se notifica siempre que se envía una tarea.

Respuesta

8

no estoy seguro de entender su algoritmo para la elección del líder, pero la forma recomendada de implementar este es el uso de nodos efímeras secuenciales y utilizar el algoritmo en http://zookeeper.apache.org/doc/r3.3.3/recipes.html#sc_leaderElection que explica cómo evitar el efecto "manada".

La distribución de tareas se puede hacer con una cola distribuida simple y no necesita estrictamente un Líder. El productor encola las tareas y los consumidores vigilan el nodo de tareas: un reloj desencadenado llevará al consumidor a tomar una tarea y eliminar el znode asociado. Hay ciertas condiciones de borde a considerar con las tareas de recarga de consumidores fallidos. http://zookeeper.apache.org/doc/r3.3.3/recipes.html#sc_recipes_Queues

0

Considere utilizar un patrón de servicio de actor único. Por ejemplo, en Scala hay Akka que resuelve esta clase de problema con menos código.

+1

La pregunta está relacionada específicamente con ZooKeeper. Entonces, ¿por qué le estás sugiriendo a todos juntos una solución diferente? – shaILU

1

Yo recomendaría la sección Example: Master-Worker Application de este libro ZooKeeper Distributed Process Coordinationhttp://shop.oreilly.com/product/0636920028901.do

El ejemplo demuestra la distribución de tareas a los trabajadores que utilizan znodes y comandos comunes zookeeper.

Cuestiones relacionadas