Distributed Computing Framework (.NET) — специально для операций с интенсивным использованием ЦП

В настоящее время я изучаю доступные варианты (как с открытым исходным кодом, так и коммерческие) для разработки распределенного приложения.

«Распределенная система состоит из нескольких автономных компьютеров, которые обмениваются данными через компьютерную сеть». Википедия

Приложение ориентировано на распределение операций с высокой интенсивностью ЦП (в отличие от операций с интенсивным использованием данных), поэтому я уверен, что решения MapReduce не отвечают всем требованиям.

Буду очень признателен за любой фреймворк, который вы можете порекомендовать (+ дать краткий обзор любого опыта или сравнения с другими фреймворками).


person holsee    schedule 18.11.2009    source источник
comment
Я активно работаю над этой темой, поэтому мне не стыдно добавить свои собственные ответы на этот вопрос, и все для общего блага!   -  person holsee    schedule 18.11.2009
comment
Я сделал все свои ответы сообществом Wiki (кажется единственным правильным), чтобы позволить добавлять дополнительные интересные примечания по усмотрению сообщества.   -  person holsee    schedule 24.11.2009
comment
Итак, спустя несколько лет, как вы думаете, MPAPI по-прежнему будет правильным ответом?   -  person Andreas    schedule 09.01.2013
comment
Андреас, я не уверен. MPAPI все еще работает, возможно, сейчас есть лучшие варианты. Было бы несложно свернуть свой собственный, вот что бы я сделал, столкнувшись с той же проблемой сейчас. Это просто планирование работы и передача сообщений.   -  person holsee    schedule 01.02.2013
comment
Я думаю, что это не должно быть закрыто. как это реальный вопрос.   -  person ariso    schedule 04.02.2016
comment
akka.net - единственное хорошее решение, которое я нашел для   -  person Gomes    schedule 08.08.2016


Ответы (8)


Структура MPAPI — http://www.codeplex.com/MPAPI

Мои мысли

  • Кажется, это одно из самых простых решений.
  • Я не вижу никаких доказательств отказоустойчивости.
  • Является открытым исходным кодом =] и совместим с МОНО YAY!
  • Использует фреймворк RemotingLite, что обеспечивает моносовместимость.
  • Написание однокомпьютерных или многокомпьютерных (кластерных) приложений одинаково просто.
  • Философия разработчика: «Производительность превыше всего». Так что можно с уверенностью сказать, что он оптимизировал.
  • Постоянно обновляемый фреймворк.
person Community    schedule 18.11.2009
comment
Мне очень нравится МПАПИ. Он сделал почти все, что я хотел, но не все, поэтому я создал DuoVia.MpiVisor, вдохновленный по работе Франка. Для меня это проще в использовании, но это, вероятно, потому, что я написал это. ;-) - person Tyler Jensen; 24.04.2013

Я был одним из ведущих разработчиков Alchemi. Нам пришлось изменить курс и начать заново, и результатом стала Utilify Platform. Концептуально похожая на Alchemi, платформа Utilify основана на уроках, извлеченных из Alchemi, и обеспечивает более гибкую модель программирования для создания распределенных приложений .NET в сети Windows.

Пожалуйста, посетите www.utilify.com для получения дополнительной информации. В настоящее время доступна для скачивания бесплатная бета-версия.

С уважением, Кришна.

person Krishna    schedule 09.03.2010
comment
Я попытался установить Utilify Manager и получил ошибку. Поэтому я не мог продолжать дальше. Ошибка говорит, что пакет поврежден. - person dotcoder; 04.01.2012

Платформа Appistry CloudIQ http://www.appistry.com

  • Сотни машин будут выглядеть как один вычислительный ресурс.
  • В настоящее время используется в производстве в FedEx для запуска алгоритмов маршрутизации.
  • Позволяет писать приложения на C, C++, Java и .Net.
  • Нет единой точки отказа
  • Автоматическое восстановление/повтор неудачных задач
person Community    schedule 04.12.2009
comment
Как это работает конкретно? Это похоже на балансировщик нагрузки сетевого трафика? Мы использовали applyalgo.com, который занимается планированием, управлением выполнением (постоянство + отслеживание истории/параметров/результатов выполнения), балансировкой нагрузки. Их реализация балансировки нагрузки вычисляет оценку хоста на основе использования ЦП/памяти и активности диска (также с переопределением), а также с помощью простого API-интерфейса расширения, доступного как для клиентов .NET, так и для Java. Самое главное, это полностью автономное серверное приложение с собственным графическим интерфейсом, поэтому вы можете вызывать параметры выполнения и результаты и быстро сравнивать их. - person Swab.Jat; 02.01.2014
comment
Вы сказали, что на сайте applyalgo.com они поддерживают и Java, и .NET, но работают только в Windows? Кроме того, как насчет С++? А линукс? - person ; 02.01.2014
comment
В нашей фирме есть только рабочие места, написанные на .NET, Java и некоторые на SQL, ничего на C++, и я не уверен, поддерживают ли они клиентов на C++. С помощью AppliedAlgo вы кодируете свои пакеты через Extension API — интерфейс на основе WCF, доступный через WsHttpBinding для .NET и BasicHttpBinding для Java. Однако там нет упоминания о C ++. Кроме того, их балансировка нагрузки работает путем распределения по подключенным узлам (NodeController, который работает только в Windows, а не в Linux). - person Swab.Jat; 02.01.2014
comment
Нет, я думаю, возможно, вы используете более раннюю версию. Я говорю на своем веб-сайте, что они поддерживают неуправляемый C++, но да, только для Windows. - person ; 17.01.2014
comment
Applied Algo ETL Suite предоставляет Extension API через WCF (любое задание, созданное на языке, который может взаимодействовать с WCF, может взаимодействовать с ним) и RabbitMQ (RabbitMQ имеет API для многих языков, таких как Perl/Python... и т. д.). Они объединили образец для неуправляемого C++/.NET и Java. Но это не ограничивается этим. - person ; 08.02.2014

Alchemi ".NET Grid Computing Framework"

http://www.gridbus.org/~alchemi/publications.html

http://sourceforge.net/projects/alchemi/files/

Alchemi — это среда распределенных вычислений .NET, которая позволяет безболезненно объединять вычислительную мощность машин, подключенных к интрасети и Интернету, в виртуальный суперкомпьютер (вычислительную сетку) и разрабатывать приложения для работы в сетке.

Быстрые заметки:

  • Перестал обновляться в 2007 году версии 1.0.6 (.NET 2.0).
  • Хорошо задокументировано, официально сделано так.
  • Использует XML для определения заданий. (В 2007 году было модно использовать XML для всего)
  • Относительно сложный по сравнению с MPAPI, но не воспринимайте это как большой минус.
  • Потребуется немало времени, чтобы набрать скорость.
  • Является открытым исходным кодом =).
  • Является расширяемым и может использоваться вместе с другими кластерными технологиями через брокера Gridbus (http://www.gridbus.org)
  • Кажется, широко используется (см. публикации http://www.gridbus.org/~alchemi/publications.html) =)
person Community    schedule 18.11.2009


DryadLINQ – исследовательский проект Microsoft, позволяющий Запросы LINQ должны быть распределены между несколькими компьютерами, а не только между несколькими ядрами, как это делает Parallel LINQ.

Запись в блоге с кратким примером.

person Joel Mueller    schedule 19.11.2009

SDK AWS для .NEThttp://aws.amazon.com/sdkfornet/

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

person Community    schedule 19.11.2009

NGrid – http://ngrid.sourceforge.net/

Обзор

NGrid — это среда распределенных вычислений с открытым исходным кодом (LGPL), написанная на C#.

  • не зависит от платформы через проект Mono.
  • прозрачная модель многопоточного программирования для программирования сетки.
  • структура физической сетки и некоторые реализации сетки.
  • общие утилиты как для программирования сетки, так и для реализации сетки.
  • последнее обновление: май 2008 г.
person Community    schedule 18.11.2009
comment
NGrid все еще находится в стадии разработки? - person ; 02.01.2014