Ich habe ein C# Multithreaded-Monte-Carlo-Simulation ist die Anwendung bereits so strukturiert ist, dass sie durch in Tasks, die unabhängig voneinander ausgeführt werden partitioniert werden kann, wird eine TaskController ausführt Tasks , aggregiert Zwischenergebnisse, prüft auf Konvergenz (frühe Abbruchkriterien) und gibt dann die endgültigen Ergebnisse zurück, dies wird derzeit mit einem ThreadPool implementiert..net verteilte grid computing Migration, Empfehlungen für Bibliotheken, Architektur
Ich würde gerne mehr als einen Computer in dieser Berechnung helfen. Ich habe keine Genehmigung oder Infrastruktur zur Verwendung von IIS (dies ist keine Richtlinie zu ändern), aber ich kann zum Beispiel WCF mit der NetTcpBinding Endpunktbindung verwenden, ich habe diese Kommunikation über den Server getestet und es hat die entsprechenden Berechtigungen und funktioniert.
Um zu beginnen, ich denke, haben eine Master-EXE (Konsole App) und mehrere Sklaven auf anderen Servern als dedizierte Arbeiter (sollten diese exes sein? Oder Windows-Dienste?), Könnte ich schließlich auf Hunderte laufen lassen von Arbeitsplätzen (sowie Servern) innerhalb der Firma während Leerlaufzeit (oder wenn ein Bildschirmschoner aktiv ist).
Ich könnte das selbst schreiben, aber ich muss mit der Kommunikation umgehen, 1, 2-Wege? vorzeitige Beendigung (Zwischenkonvergenz-Ergebnisprüfung), nicht mehr benötigte Aufgaben abbrechen, Einsatz von Arbeit, Entdeckung von verfügbaren und fertigen Maschinen für den Einsatz von Arbeit, Drosseln/Anhalten von Arbeit, wenn eine Arbeitsstation nicht mehr im Leerlauf ist? alles andere, was in einem verteilten System passiert?
Sollte der Master (Task-Controller) die Adressen (IP) aller Slave-Arbeiter kennen und ihnen sagen, dass sie arbeiten sollen (wenn sie verfügbar sind) oder sollten die Slave-Mitarbeiter die Master-Adresse kennen und die Arbeit anfordern in der Lage, dies zu tun, oder die Kommunikation sollte in beide Richtungen fließen? Dies wird auf einer 24-Stunden-Uhr mit etwa 9 Läufe pro Tag gestartet, um verschiedene Geschäftsregionen zu unterstützen.
Ich bin auf der Suche nach Empfehlungen für . NET-Grid/verteilten Bibliotheken, die helfen können und einige Architektur-Beratung in diesem Bestreben.
aktualisieren
jemand Erfahrung hat eine der folgenden verwenden?
http://www.digipede.net/ (commercial)
http://www.gridbus.org/~alchemi/
http://ngrid.sourceforge.net/
http://www.osl.iu.edu/research/mpi.net/
oder verwendet Javaspaces, Jini von .net oder gleichwertig .net Technologien
http://java.sun.com/developer/technicalArticles/tools/JavaSpaces/
http://www.jini.org
Dank
Die Jini und Javaspaces-Technologie sieht wirklich interessant aus. Sind diese einfach in der Windows-Infrastruktur zu hosten? Sind sie Windows-Dienste? Ein Äquivalent von .net wäre sehr nett. – m3ntat
Sie benötigen nur eine standardmäßige Java-VM, und Sie können sie als Service mithilfe von http://wrapper.tanukisoftware.org/doc/english/download.jsp (kostenlose oder professionelle Editionen) umbrechen. Ich weiß leider nichts über .net, aber Sie könnten leicht Ihre .net MC impl von einem Java-Prozess gesteuert werden, der mit den Räumen kommuniziert. Ihre Objekte im Javaspace könnten sprachunabhängig sein - z. XML - um eine einfache Weitergabe an die .net-Welt zu ermöglichen. –