J'ai un C# multi-threaded Monte Carlo simulation, l'application est déjà structurée de telle sorte qu'il peut être partitionné par des tâches qui s'exécutent indépendamment, un TaskController exécute des tâches , agrège les résultats intermédiaires, vérifie la convergence (critères de terminaison précoce) puis renvoie les résultats finaux, ceci est actuellement implémenté à l'aide d'un ThreadPool..net migration de grille distribuée, recommandations sur les bibliothèques, architecture
Je voudrais aimer tirer parti de plus d'un ordinateur pour aider dans ce calcul. Je n'ai pas l'approbation ou l'infrastructure pour utiliser IIS (cette politique ne va pas changer) mais je peux utiliser par exemple WCF avec la liaison de point de terminaison NetTcpBinding, j'ai testé cette communication à travers le serveur et il a les permissions appropriées et travaux. Pour commencer je pense avoir un maître exe (console app) et plusieurs esclaves sur d'autres serveurs en tant que travailleurs dévoués (devraient-ils être des services exes ou Windows?), Éventuellement je pourrais avoir cet ensemble pour fonctionner des centaines des postes de travail (ainsi que des serveurs) au sein de l'entreprise pendant temps d'inactivité (ou lorsqu'un économiseur d'écran est actif).
Je pourrais écrire moi-même, mais je vais devoir gérer les communications, 1, 2 voies? terminaison anticipée (vérification de résultat de convergence intermédiaire), annulation de tâches non requises, déploiement de travail, découverte de machines disponibles et prêtes pour le déploiement de travail, limitation/pause du travail si un poste de travail n'est plus inactif? tout ce qui va dans un système distribué? Le maître (contrôleur de tâches) doit-il connaître les adresses (ip) de tous les travailleurs esclaves et leur dire de faire le travail (s'ils sont disponibles) ou les travailleurs esclaves doivent-ils simplement connaître l'adresse maître et demander le travail? en mesure de le faire, ou la communication devrait circuler dans les deux sens? Cela fonctionnera sur une 24 heures avec environ 9 exécutions démarrées par jour pour soutenir différentes régions d'affaires.
Je suis à la recherche de recommandations pour . NET grid/distribué bibliothèques qui peut aider et quelques conseils d'architecture dans cette entreprise.
Mise à jour
a une expérience de toute personne qui utilise l'un des suivants?
http://www.digipede.net/ (commercial)
http://www.gridbus.org/~alchemi/
http://ngrid.sourceforge.net/
http://www.osl.iu.edu/research/mpi.net/
ou utilisés JavaSpaces, Jini de .net ou équivalent technologies .net trouvées
http://java.sun.com/developer/technicalArticles/tools/JavaSpaces/
http://www.jini.org
Merci de
La technologie Jini et Javaspaces est vraiment intéressante. Sont-ils faciles à héberger sur l'infrastructure Windows? sont-ils des services Windows? Un équivalent .net serait très bien. – m3ntat
Vous avez juste besoin d'une VM Java standard, et vous pouvez envelopper un service en utilisant http://wrapper.tanukisoftware.org/doc/english/download.jsp (éditions gratuites ou professionnelles). Je ne connais malheureusement pas .net, malheureusement, mais vous pourriez facilement faire en sorte que votre .net MC impl soit piloté par un processus Java qui parle aux espaces. Vos objets dans le Javaspace pourraient être agnostiques - par ex. XML - pour faciliter une simple transmission au monde .net. –