12
votes

Comment concevoir la répartition des tâches avec Zookeper

Je prévois d'écrire une application qui aura des processus de travail distribués. L'un d'entre eux sera leader qui assignera des tâches à d'autres processus. La conception du processus d'élélection du chef est assez simple: chaque processus essaie de créer un nœud éphémère dans le même chemin. Celui qui réussit, devient le chef.

Maintenant, ma question est de concevoir le processus de distribution des tâches uniformément? Toute recette pour cela?

Je vais élaborer un peu sur la configuration de l'environnement:

Supposons qu'il y ait 10 maschines ouvriers, chacun exécute un processus, l'un d'entre eux devient leader. Les tâches sont soumises dans la file d'attente, le leader les prend et attribue à un travailleur. Les processus de travail sont notifiés chaque fois qu'une tâche est soumise.


0 commentaires

3 Réponses :


8
votes

Je ne suis pas sûr de comprendre votre algorithme pour les élections de chef, mais la voie recommandée de la mise en œuvre consiste à utiliser des nœuds éphémères séquentiels et à utiliser l'algorithme à http://zookeeper.apache.org/doc/r3.3/recipes.html#sc_leaderélection qui explique comment éviter le" troupeau " effet.

La distribution des tâches peut être effectuée avec une simple file d'attente distribuée et ne nécessite pas strictement de chef de file. Le producteur s'effectue des tâches et des consommateurs conserve une montre sur le nœud Tâches - une montre déclenchée mènera au consommateur de prendre une tâche et de supprimer le Znode associé. Il existe certaines conditions de pointe à prendre en compte avec des tâches requises des consommateurs défaillants. http://zookeper.apache.org/doc/r3.3/recipes .html # sc_recipes_Quues


0 commentaires

0
votes

Pensez à utiliser un modèle de service Singleton Acteur Singleton. Par exemple, à Scala, il y a akka qui résout cette classe de problème avec moins de code.


1 commentaires

La question est spécifiquement liée au zooveeper. Alors pourquoi vous le suggérez-vous toutes ensemble de solution différente?



1
votes

Je recommanderais la section Exemple: Application maître-travailleur de ce livre Coordination du processus distribué à ZooKEeper http://shop.oreilly.com/product/0636920028901.do

L'exemple démontre pour distribuer des tâches au travailleur à l'aide de Znodes et des commandes communes ZooePer.


0 commentaires