Frage

Ich habe eine c # Multi-Threaded Monte Carlo Simulation ist die Anwendung bereits so strukturiert, dass sie, indem sie in Aufgaben aufgeteilt werden kann, die unabhängig voneinander ausgeführt werden, ein TaskController führt Tasks, aggregiert Zwischenergebnisse, Prüfungen für Konvergenz (vorzeitige Beendigung Kriterien), dann endgültige Ergebnisse zurückgibt, das derzeit ein Threadpool realisiert wird.

Ich würde gerne mehr als einen Computer nutzen, in dieser Berechnung zu unterstützen . Ich habe keine Genehmigung oder Infrastruktur zu verwenden, IIS (dies wird Politik nicht ändern wird), aber ich kann zum Beispiel WCF mit dem NetTcpBinding verwende Endpunkt zu binden, habe ich diese Kommunikation über Server getestet und es hat die entsprechenden Berechtigungen und arbeitet.

So starten ich denke ein Master-exe (Konsolenanwendung) und mehreren Slaves auf anderen Servern als dedizierte Arbeitnehmer haben (sollten diese EXE-Dateien? Oder Windows-Dienste?), Schließlich konnte ich diesen Satz auf laufen haben Hunderte von Arbeitsplätzen (sowie Server) innerhalb des Unternehmens während Leerlaufzeit (oder wenn ein Bildschirmschoner aktiv ist).

Das kann ich mich schreiben, aber ich werde Kommunikation handhaben muß, 1, 2-Wege? vorzeitige Beendigung (Zwischen Konvergenz Ergebniskontrolle), Cancelling Aufgaben nicht mehr erforderlich, dem Einsatz von Arbeit, Entdeckung verfügbar und bereit Maschinen für den Einsatz von Arbeit, Drosselung / Pausieren der Arbeit, wenn ein Arbeitsplatz nicht mehr frei ist? alles andere, was in einem verteilten System geht?

Sollte der Master (Task-Controller) kennen die Adressen (IP) aller Sklavenarbeiter und ihnen sagen, Arbeit zu tun (wenn sie verfügbar sind) oder sollten die Sklavenarbeiter wissen nur die Master-Adresse und die Anfrage der Arbeit, wenn sie in eine Position, so zu tun, oder die Kommunikation in beiden Richtungen fließen soll? Dies läuft auf eine 24 Stunden Uhr mit etwa 9 Läufen pro Tag gekickt verschiedenen Geschäftsbereiche zu unterstützen.

Ich suche nach Empfehlungen für .net grid / verteilen Bibliotheken , das und einige Architektur Beratung in diesem Bestreben helfen.

Aktualisieren

Hat jemand Erfahrung mit einer 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 gefunden äquivalent .net Technologien

http://java.sun.com/developer/technicalArticles/tools/JavaSpaces/
http://www.jini.org

Danke

War es hilfreich?

Lösung

würde ich die Möglichkeit, mit Hilfe eines weltraumbasierte Architektur für diese.

Der Master würde die Arbeitsplätze in einen Raum schreiben (im Wesentlichen einer Objekt-Repository). Die raubend Kunden sind immer auf der Suche nach Jobs und als Jobs verfügbar sind, werden sie aus dem Raum, Prozess ziehen und die Ergebnisse zu diesem Raum zurückschreiben oder eine andere (alle unter einer Transaktion). Sie würden Arbeitsplätze markieren, als um Gruppenergebnisse zu einem bestimmten Laufe gehört.

Der Vorteil hierbei ist, dass diese sehr leicht skaliert (einfach durch mehr Verbraucher hinzufügen). Die Verbraucher müßten bestimmen, wann sie arbeiten können, und einfach mit Informationen über den Raum konfiguriert werden müssen (wie es zu finden). Der Produzent wird vollständig aus der Menge der Verbraucher entkoppelt.

Da das Arbeiten unter der Transaktion verarbeitet wird, wenn ein Verbraucher, die Arbeit wieder in den Raum nicht abgeschlossen werden kann und ist für die Verarbeitung von einem anderen Verbraucher zur Verfügung.

Sie können ganz einfach Zwischenergebnisse behandeln. Der Hersteller nimmt Ergebnisse aus dem Raum und Zwischenprodukte ableiten als Ergebnisse verfügbar sind. Sie können Aufträge leicht abbrechen. entfernen Sie sie einfach aus dem Raum.

Sie können mehr Hersteller ganz einfach hinzufügen. Sie schreiben einfach auf den gleichen Raum, und wenn die Aufträge entsprechend markiert sind, werden die Ergebnisse an den Hersteller gebunden eindeutig.

Ich bin mir nicht sicher, welche Frameworks für .NET verfügbar sind leider (Ich bin aus der Java-Welt und würde verwenden

scroll top