Веб-сервисы Amazon: какие решения для .Net Grid Computing в облаке EC2? - PullRequest
3 голосов
/ 12 мая 2011

Потребности моей компании довольно просты: у нас есть многопоточная вычислительная программа .Net, которая считывает много ГБ двоичных файлов, обрабатывает массивные вычисления и сохраняет результаты в базе данных SQL Server. Мы хотели бы сделать это в облаке, чтобы выполнить эту повторяющуюся задачу в кратчайшие сроки.
Итак, мы находимся в облачных / сеточных / кластерных вычислениях.

Я думал, что на эту тему будет множество ресурсов и множество доступных альтернатив. Я был просто ошеломлен, чтобы понять, насколько я был неправ. Хотя установка / запуск экземпляров EC2 была легкой задачей, найти относительно простой и простой способ распараллеливания и агрегирования вычислительной мощности этих экземпляров EC2 было нелегко. Служба поддержки клиентов Amazon постоянно копается, и я просто не смог получить от них конкретного ответа.

Я нашел , используйте , что звучит многообещающе. Он разработан алхимиками людьми. Однако ссылка на документацию не работает, и я не получил ответа на свои электронные письма, когда обратился в службу поддержки, так что это не очень обнадеживало.

Мы выбрали Amazon вместо Azure, поскольку AMI являются прямыми бесшовными виртуальными машинами (не нужно «связывать» приложение или другое) и потому, что EBS является более удобным хранилищем, поскольку представляет собой «настоящую» файловую систему. С другой стороны, кажется, что Azure HPC готов для Windows, тогда как AWS предлагает это только для AMI на базе Linux.

Любая помощь и предложения приветствуются

РЕДАКТИРОВАТЬ:
Приложение .Net является многопоточным и состоит из сотен параллельных рабочих, выполняющих одну и ту же задачу асинхронно.

Ответы [ 3 ]

3 голосов
/ 13 мая 2011

Amazon EC2 по своей сути является системой «Инфраструктура как сервис» (IaaS), что означает, что EC2 предоставит вам оборудование и операционную систему, но не решит проблему сетевых вычислений за вас. Это отличается от Windows Azure, которая представляет собой систему «Платформа как услуга» (PaaS), для которой необходимо использовать другую архитектуру, в которой ваше приложение разбито на разные роли (веб-роль, рабочая роль и т. Д.), Которые можно легко масштабировать в сетка. См. Этот вопрос для более подробной информации о IaaS против PaaS .

Разница в развертывании в Azure против EC2 заключается именно в том, что Azure требует от вас мыслить в большем масштабе, чем EC2. Если вы хотите масштабировать на EC2, вы должны сделать это самостоятельно или использовать их Elastic Bean Stalk , который в настоящее время поддерживает только Java на Apache Tomcat.

Что касается проектирования системы, то я рекомендую найти способ разбить проблему на куски, которые можно обрабатывать на отдельных машинах, и загрузить сообщение в очередь, описывающую, как выполнить работу. Затем вам нужно будет, чтобы экземпляры EC2 или роли Azure извлекали работу из очереди, выполняли необходимые вычисления, а затем либо сохраняли результаты непосредственно в месте назначения, либо отправляли результат в очередь вывода, которая затем агрегирует результаты. Это самый простой способ выполнения Grid-вычислений без полного перепроектирования для чего-то вроде MapReduce . Вам по-прежнему нужно беспокоиться о том, что произойдет, если виртуальная машина умрет перед передачей результатов, но это можно сделать, не удаляя запись очереди, пока ее результаты не будут зафиксированы.

0 голосов
/ 13 мая 2011

Вы должны смотреть на Windows HPC

Microsoft усердно работает над тем, чтобы доставить узлы HPC на Windows Azure, а это именно то, что вы ищете.Вот белая бумага на нем:

http://download.microsoft.com/download/4/5/C/45C520F4-424C-41CF-A115-E76A38ADB280/Windows_HPC_Server_and_Windows_Azure.docx

отсюда: http://www.microsoft.com/hpc/en/us/default.aspx

http://www.networkworld.com/news/2010/111610-microsoft-hpc-server.html

0 голосов
/ 13 мая 2011

Если вы можете вернуться к Azure, а не к EC2, то:

  • Дэвид Паллман создал пример Grid-проекта для Azure - http://azuregrid.codeplex.com/
  • в проекте Lokad.Cloudнекоторый интересный фреймворковый код, в том числе простой пример Map-Reduce - http://lokadcloud.codeplex.com/

Извините - у вас нет аналогичных ссылок на EC2 - хотя вы можете получить некоторое вдохновение от проектов Microsoft Dryad(Я думаю, что в настоящее время они доступны только по «образовательной» некоммерческой лицензии)

...