Tengo C# multi-threaded monte carlo simulation, la aplicación ya está estructurada de modo que se puede particionar en Tareas que se ejecutan de forma independiente, un TaskController ejecuta Tareas , agrega resultados intermedios, verifica la convergencia (criterios de terminación anticipada) y luego arroja los resultados finales; esto se implementa actualmente utilizando un ThreadPool..net grid computing computing migration, recomendaciones sobre bibliotecas, arquitectura
Me gustaría como aprovechar más de una computadora para ayudar en este cálculo. No tengo aprobación o infraestructura para usar IIS (esta política no va a cambiar) pero puedo usar, por ejemplo, WCF con el enlace de punto final NetTcpBinding, probé esta comunicación en el servidor y tiene los permisos apropiados y trabajos.
Para empezar estoy pensando en tener un maestro exe (aplicación de consola) y varios esclavos en otros servidores como trabajadores dedicados (¿deberían ser éstos? O servicios de Windows?), Eventualmente podría tener este conjunto ejecutándose en cientos de estaciones de trabajo (así como servidores) dentro de la empresa durante tiempo de inactividad (o cuando un protector de pantalla está activo).
Podría escribir esto yo mismo, pero tendré que manejar las comunicaciones, 1, 2 vías? terminación anticipada (comprobación de resultados de convergencia intermedia), cancelación de tareas que ya no son necesarias, despliegue del trabajo, descubrimiento de máquinas disponibles y listas para el despliegue del trabajo, regulación/pausa del trabajo si una estación de trabajo ya no está inactiva. todo lo demás que entra en un sistema distribuido?
Si el maestro (controlador de tareas) conoce las direcciones (ip) de todos los trabajadores esclavos y les indica que trabajen (si están disponibles) o si los trabajadores esclavos solo conocen la dirección maestra y solicitan trabajo cuando están ¿En una posición para hacerlo, o la comunicación debería fluir en ambos sentidos? Esto se ejecutará en un reloj de 24 horas con aproximadamente 9 ejecuciones iniciadas por día para admitir diferentes regiones comerciales.
Estoy buscando recomendaciones para .net grid/distributed libraries que pueden ayudar y algunos consejos de arquitectura en este empeño.
actualización
tiene experiencia cualquier persona que utilice cualquiera de los siguientes?
http://www.digipede.net/ (commercial)
http://www.gridbus.org/~alchemi/
http://ngrid.sourceforge.net/
http://www.osl.iu.edu/research/mpi.net/
o usados JavaSpaces, Jini de tecnologías .NET .NET o equivalentes que se encuentran
http://java.sun.com/developer/technicalArticles/tools/JavaSpaces/
http://www.jini.org
, gracias
La tecnología de Jini y Javaspaces parece realmente interesante. ¿Son estos fáciles de alojar en la infraestructura de Windows? ¿son servicios de Windows? Un equivalente de .net sería muy agradable. – m3ntat
Solo necesita una VM Java estándar, y puede envolverla como un servicio utilizando http://wrapper.tanukisoftware.org/doc/english/download.jsp (ediciones gratuitas o profesionales). No sé sobre .net, desafortunadamente, pero usted podría obtener fácilmente .net MC impl para ser conducido desde un proceso Java hablando a los espacios. Sus objetos en el espacio de Javaspace podrían ser independientes del idioma, por ej. XML: para facilitar un simple paso al mundo .net. –