Vous pouvez créer un gestionnaire qui distribue le travail comme fejesjoco dit ou vous pouvez faire vos applications assez intelligent pour saisir seulement un certain nombre d'unités de travail à traiter sur. Quand ils ont terminé le traitement de ces unités, demandez-leur de contacter le serveur DB pour obtenir le lot suivant. Rincer et répéter jusqu'à cuisson complète.
En tant que systèmes note côté des travailleurs les plus distribués gérés par:
- travail est mis en attente dans le serveur par lots
- processus de travail vérifier avec serveur pour obtenir un lot pour fonctionner sur, le lot disponible est marqué comme étant traité par ce travailleur.
- (facultatif) Les processus de travail réintègrent le serveur avec le rapport d'état (c.-à-d. 10% terminé, 20% terminé, etc.)
- Le processus de travail termine le travail et soumet les résultats.
- Passez à l'étape 2.
Une autre option est d'avoir traiter 3 travailleurs le même jeu de données exactes. Cela vous permettrait de comparer les résultats. Si 2 ou plus ont des résultats identiques, vous acceptez ces résultats. Si tous les 3 ont des résultats différents, alors vous savez qu'il y a un problème et vous devez inspecter les données/code. Habituellement, cela se produit uniquement lorsque les travailleurs sont hors de votre contrôle (comme SETI) ou que vous exécutez des calculs massifs et que vous souhaitez corriger les problèmes matériels potentiels.
Parfois, il y a une application de gestion qui affiche nombre actuel de travailleurs et de progrès avec l'ensemble complet. Si vous savez à peu près combien de temps un lot individuel prend alors vous pouvez détecter quand un travailleur est mort et peut laisser un nouveau processus obtenir le même lot.
Cela vous permet d'ajouter ou de supprimer autant de travailleurs individuels que vous voulez sans avoir à recoder quoi que ce soit. Pourquoi ne pas déployer l'application à l'aide d'une infrastructure distribuée?