Mam wielowątkową symulację C# C#, aplikacja jest już zorganizowana w taki sposób, że może być podzielona na grupy zadań, które wykonują niezależnie, TaskController wykonuje Zadania , agreguje wyniki pośrednie, sprawdza zbieżność (kryteria wczesnego zakończenia), a następnie zwraca wyniki końcowe, co jest obecnie realizowane za pomocą ThreadPool..net rozproszona migracja obliczeń gridowych, zalecenia dla bibliotek, architektura
Chciałbym, aby wykorzystywał więcej niż jeden komputer do pomocy w obliczeniach. Nie mam aprobaty ani infrastruktury do korzystania z IIS (ta zasada się nie zmieni), ale mogę użyć na przykład WCF z wiązaniem punktu końcowego NetTcpBinding, przetestowałem tę komunikację na serwerze i ma ona odpowiednie uprawnienia i Prace.
Aby rozpocząć myślę jeden exe głównego (APP konsola) i kilka niewolników na innych serwerach dedykowanych pracowników (jak powinny one być? Eks lub usługi Windows?), W końcu mogę mieć ten zestaw do uruchomienia na setek stacji roboczych (a także serwerów) wewnątrz firmy podczas bezczynności (lub gdy aktywny jest wygaszacz ekranu).
Mogę napisać to sam, ale muszę poradzić sobie z komunikacją, 1, 2-drożny? przedterminowe zakończenie (pośrednie sprawdzanie wyniku konwergencji), anulowanie zadań, które nie są już potrzebne, wdrożenie pracy, odkrycie dostępnych i gotowych Maszyn do wdrażania pracy, dławienie/wstrzymywanie pracy, jeśli stacja robocza nie jest już bezczynna? wszystko inne, co dzieje się w systemie rozproszonym?
Czy kapitan (kontroler zadań) powinien znać adresy (ip) wszystkich pracowników-niewolników i nakazać im pracę (jeśli są dostępni) lub czy pracownicy-podawcy po prostu znają adres główny i żądanie pracy, gdy są w stanie to zrobić, czy komunikacja powinna płynąć w obie strony? To będzie działać na zegar 24-godzinny z około 9 uruchomień rozpoczęte dziennie w celu wspierania różnych regionów biznesowych.
Poszukuję rekomendacji dla . Sieci grid/biblioteki rozproszone, które mogą pomóc i pewne porady dotyczące architektury w tym przedsięwzięciu.
Aktualizacja
ma ktoś doświadczenia z wykorzystaniem dowolnego z poniższych?
http://www.digipede.net/ (commercial)
http://www.gridbus.org/~alchemi/
http://ngrid.sourceforge.net/
http://www.osl.iu.edu/research/mpi.net/
lub używane JavaSpaces, Jini z .net .net lub znajdując równoważnych technologii
http://java.sun.com/developer/technicalArticles/tools/JavaSpaces/
http://www.jini.org
Thanks
Technologia Jini i Javaspaces wygląda naprawdę interesująco. Czy są łatwe do obsługi w infrastrukturze Windows? czy są to usługi Windows? Równoważnik .net byłby bardzo miły. – m3ntat
Potrzebna jest tylko standardowa maszyna wirtualna Java i można ją zawijać jako usługę przy użyciu http://wrapper.tanukisoftware.org/doc/english/download.jsp (wersji bezpłatnej lub profesjonalnej). Nie wiem na temat .net, niestety, ale możesz łatwo dostać się do .net MC impl, by być napędzanym z procesu Java rozmawiającego ze spacjami. Twoje obiekty w Javaspace mogą być agnostyczne dla języka - np. XML - aby ułatwić proste przejście do świata .net. –