Distributed Computing Framework(.NET)-Específicamente para operaciones intensivas de CPU
frameworks distributed-computing (8)
Actualmente estoy investigando las opciones disponibles (tanto de código abierto como comercial) para desarrollar una aplicación distribuida.
"Un sistema distribuido consiste en múltiples computadoras autónomas que se comunican a través de una red de computadoras". Wikipedia
La aplicación está enfocada en la distribución de operaciones altamente intensivas de CPU (en lugar de datos intensivos), por lo que estoy seguro de que las soluciones MapReduce no se ajustan a la cuenta.
Cualquier marco que pueda recomendar (+ dar un breve resumen de cualquier experiencia o comparación con otros marcos) sería muy apreciado.
Fui uno de los principales desarrolladores de Alchemi. Hemos tenido que cambiar de rumbo para comenzar de nuevo, y el resultado es la plataforma Utilify. Conceptualmente similar a Alchemi, la plataforma Utilify se basa en las lecciones aprendidas de Alchemi y proporciona un modelo de programación más flexible para construir aplicaciones .NET distribuidas en una red de Windows.
Por favor visite www.utilify.com para más información. Actualmente, hay una versión beta gratuita disponible para descargar.
Saludos, Krishna.
DryadLINQ es un proyecto de Microsoft Research que permite que las consultas LINQ se distribuyan entre varias computadoras, en lugar de solo múltiples núcleos como lo hace Parallel LINQ.
Appistry CloudIQ Platform http://www.appistry.com
- Hará que cientos de máquinas aparezcan como un recurso informático.
- Actualmente se utiliza en la producción en FedEx para ejecutar algoritmos de enrutamiento
- Le permite escribir aplicaciones en C, C ++, Java y .Net
- No hay un solo punto de falla
- Recuperación automática / reintento de tareas fallidas
AWS SDK para .NET : http://aws.amazon.com/sdkfornet/
Creo que esta oferta en la nube y la api .NET también pueden encajar. Amazon ofrece máquinas de alto rendimiento ( ver lista de precios ) que permitirían delegar la ejecución de operaciones altamente intensivas de CPU en gran escala.
Alchemi ".NET Grid Computing Framework"
http://www.gridbus.org/~alchemi/publications.html
http://sourceforge.net/projects/alchemi/files/
Alchemi es un marco informático de .NET grid que le permite agregar sin problemas el poder de cómputo de las máquinas conectadas a Internet e intranet en un supercomputador virtual (grid computacional) y desarrollar aplicaciones para ejecutarse en el grid.
Notas rápidas:
- Dejó de actualizarse en 2007 versión 1.0.6 (.NET 2.0).
- Bien documentado formalmente hecho así.
- Utiliza XML para definir trabajos. (Estuvo de moda en 2007 usar XML para todo)
- Relativamente complejo en comparación con MPAPI, pero no tome esto como un gran negativo.
- Tomaría un poco de tiempo para ponerse al día.
- Es Open Source =).
- Es extensible y se puede utilizar junto con otras tecnologías de clúster a través de un agente Gridbus ( http://www.gridbus.org )
- Parece ampliamente utilizado (ver publicaciones http://www.gridbus.org/~alchemi/publications.html ) =)
Azure Grid - http://azuregrid.codeplex.com/
- Edición comunitaria de Neudesic Grid Computing Framework ( http://www.neudesic.com/insight/Publications/Pages/PUB20090428.aspx )
- Incluye una GUI para iniciar y monitorear las ejecuciones de trabajos.
- Parte 1: Un patrón de diseño para la computación en grilla en Azure.
- Parte 2: Codificación de una aplicación de cuadrícula de Azure.
- Parte 3: Ejecutar una aplicación de Azure Grid.
Marco de trabajo MPAPI - http://www.codeplex.com/MPAPI
Mis pensamientos
- Parece ser una de las soluciones más simples.
- No veo evidencia de soporte de failover.
- Es Open Source =] y es compatible con MONO YAY!
- Utiliza el marco "RemotingLite" para reforzar la compatibilidad mono.
- Escribir aplicaciones de una sola computadora o de varias computadoras (clúster) es igual de simple.
- La filosofía del desarrollador es "El rendimiento es lo más importante". Así que es seguro decir que ha optimizado.
- Marco actualizado continuamente.
NGrid - http://ngrid.sourceforge.net/
Visión general
NGrid es un marco de computación grid de código abierto (LGPL) escrito en C #.
- Plataforma independiente a través del proyecto Mono.
- Un modelo de programación multihilo transparente para la programación en grilla.
- un marco de red físico y algunas implementaciones de red.
- Utilidades comunes tanto para la programación de grillas como para implementaciones de grillas.
- última actualización mayo 2008