2011-05-12 4 views
3

Les besoins de mon entreprise sont assez simples: Nous avons un programme informatique .Net multithread qui lit beaucoup de fichiers binaires, traite des calculs massifs et stocke les résultats dans une base de données SQL Server. Nous aimerions le faire sur le cloud pour effectuer cette tâche récurrente dans les plus brefs délais.
Nous sommes donc dans le cloud computing/grid/cluster computing.Amazon Web Services: quelles solutions pour le calcul de réseau .Net sur un cloud EC2?

Je pensais qu'il y aurait des tonnes de ressources sur le sujet et beaucoup d'alternatives disponibles. J'étais simplement stupéfait de comprendre à quel point j'étais mal. Tandis que le montage/l'exécution d'instances EC2 était un jeu d'enfant, trouver un moyen relativement simple et direct de paralléliser et d'agréger la puissance de traitement de ces instances EC2 n'était pas facile. Le service clientèle d'Amazon ne cesse d'esquiver et je n'ai tout simplement pas pu obtenir de réponse concrète de leur part.

J'ai trouvé utilify ce qui semble prometteur. Il est développé par les alchemi personnes. Cependant, le documentation link est cassé et je n'avais pas de réponse à mes emails quand j'ai contacté le support donc ce n'était pas très rassurant. Nous avons choisi Amazon sur Azure car les AMI sont de simples machines virtuelles sans soudure (pas besoin de "regrouper" l'application ou autre) et parce que EBS est un stockage plus pratique car c'est un "vrai" système de fichiers. D'autre part, Azure semble HPC prêt pour Windows, alors que AWS offre que pour les AMI alimentés par Linux seulement.

Toute aide et propositions sont plus que bienvenus

EDIT:
L'application .Net est multi-thread et se composent de centaines de travailleurs parallèles qui font exactement la même tâche de manière asynchrone.

+0

Azure dispose actuellement d'un accès au système de fichiers natif, je crois qu'il s'appelle "Cloud Drive". Deuxièmement, il n'y a pas de solution évidente pour la paralleisation, tout dépend de votre application. Je recommanderais de travailler d'abord sur la mise en parallèle de votre application, puis de la développer en grille de calcul. Essayer de passer d'une application synchrone ** directement ** à une application de calcul de grille paralellisée est «folie». –

+0

@Chris Marisic: S'il vous plaît Voir modifier. Je pensais que dire multi-thread était suffisant pour souligner notre application est asynchrone. De plus, le déploiement d'une application sur Azure est invasif comparé à un VM simple, donc nous ferions mieux de nous en tenir à EC2 à moins que nous n'ayons pas le choix. –

+1

De la formulation de la question, il m'a semblé que vous essayiez de prendre une application normale et de la calculer immédiatement. En ce qui concerne vos déclarations à propos d'Azure, il semble que vous soyez largement conscient de la plate-forme actuelle et que vous ayez un point de vue biaisé par rapport aux versions précédentes. Je recommande de réévaluer Azure pour ce rôle car le scénario que vous décrivez est la raison exacte pour laquelle Azure a été créé. –

Répondre

3

Amazon EC2 est en soi une infrastructure en tant que système de service (IaaS), ce qui signifie que EC2 donnera vous le matériel et l'OS, mais ne résoudra pas votre problème de calcul de grille pour vous.Cela contraste avec Windows Azure, qui est un système Platform as a Service (PaaS) qui nécessite l'utilisation d'une architecture différente dans laquelle votre application est répartie dans différents rôles (rôle Web, rôle de travail, etc.) qui peuvent facilement être étendus dans un environnement la grille. Voir cette question pour plus de détails sur IaaS vs PaaS. La différence pour le déploiement sur Azure vs EC2 est précisément parce qu'Azure vous oblige à penser à plus grande échelle que EC2. Si vous voulez mettre à l'échelle sur EC2 vous devez le faire vous-même ou utiliser leur Elastic Bean Stalk, qui actuellement ne supporte que Java sur Apache Tomcat. En ce qui concerne la conception du système, je recommande de trouver un moyen de décomposer le problème en blocs pouvant être traités sur des machines individuelles et de charger un message dans une file d'attente décrivant comment effectuer le travail. Vous devez alors avoir des instances EC2 ou des rôles Azure tirer le travail hors de la file d'attente, effectuer les calculs requis, puis stocker les résultats directement dans la destination ou envoyer le résultat à une file d'attente de sortie qui agrège les résultats. C'est la méthode la plus simple pour effectuer un calcul Grid sans complètement re-concevoir quelque chose comme MapReduce. Vous devez toujours vous inquiéter de ce qui se passe si une VM meurt avant de valider les résultats, mais cela peut être géré en ne supprimant pas l'entrée de la file d'attente tant que les résultats n'ont pas été validés.

0

Si vous pouvez revenir à Azure plutôt que EC2, puis:

Désolé - n'ont pas de références similaires pour EC2 - bien que vous pourriez être en mesure d'obtenir un peu d'inspiration de projets Dryad de Microsoft (je pense que ce sont currentl y uniquement disponible sous la rubrique « éducation » licence non commerciale)

Questions connexes