Какие проблемы способствуют использованию параллельных / параллельных архитектур? - PullRequest
4 голосов
/ 12 февраля 2009

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

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

  • Реализовали ли вы что-нибудь достаточно большое в стеке, эрланге или другом?
  • Почему это был хороший выбор? Это был хороший выбор? Вы бы сделали это снова?
  • Какие характеристики вашей проблемы означали, что параллелизм / параллель был правильным?
  • Пересмотрели ли вы существующую проблему, чтобы воспользоваться преимуществами параллелизма / параллелизма? и
  • если да, то как?

Кто-нибудь какой-нибудь опыт, которым они готовы поделиться?

Ответы [ 4 ]

4 голосов
/ 13 февраля 2009

в прошлом, когда настольные машины имели один ЦП, распараллеливание применялось только к «специальному» параллельному оборудованию. Но в наши дни настольные компьютеры обычно имеют от 2 до 8 ядер, поэтому теперь параллельное оборудование является стандартом. Это большая разница, и поэтому дело не только в том, какие проблемы предлагают параллелизм, но также в том, как применить параллелизм к более широкому набору проблем , чем прежде.

Чтобы воспользоваться преимуществами параллелизма, вам обычно нужно каким-то образом пересмотреть свою проблему. Параллелизм меняет игровую площадку во многих отношениях:

  • У вас проблемы с согласованностью данных и блокировкой. Поэтому вам нужно попытаться организовать свою проблему так, чтобы у вас были полунезависимые структуры данных, которые могут обрабатываться различными потоками, процессами и вычислительными узлами.
  • Параллелизм также может внести недетерминизм в ваши вычисления, если относительный порядок, в котором параллельные компоненты выполняют свою работу, влияет на результаты. Возможно, вам придется защититься от этого и определить параллельную версию вашего алгоритма, которая устойчива к различным порядкам планирования.
  • Когда вы преодолеваете параллелизм внутри материнской платы и переходите к сетевым / кластерным / сетевым вычислениям, вы также получаете проблемы пропускной способности сети, сбоя сети и правильного управления неисправными вычислительными узлами . Возможно, вам придется изменить свою проблему, чтобы стало легче обрабатывать ситуации, когда часть вычислений теряется при выходе из строя сетевого узла.
2 голосов
/ 13 февраля 2009

До того, как у нас появились операционные системы, люди, создававшие приложения, садились и обсуждали такие вещи, как:

  • как мы будем хранить данные на дисках
  • какую структуру файловой системы мы будем использовать
  • с каким оборудованием будет работать наше приложение
  • и т. Д., И т. Д.

Операционные системы появились из коллекций «библиотек разработчиков».

Прелесть операционной системы в том, что ваше НЕПИСАННОЕ программное обеспечение обладает определенными характеристиками:

  • разговор с постоянным хранилищем
  • общение с сетью
  • запустить в командной строке
  • использоваться в партии
  • общение с GUI
  • и т. Д., И т. Д.

Как только вы перешли на операционную систему - вы не вернетесь к существующему состоянию ...

Erlang / OTP (т.е. не Erlang) - это система приложений - она ​​работает на двух или более компьютерах.

Прелесть СИСТЕМЫ ПРИЛОЖЕНИЙ в том, что ваше НЕПИСАННОЕ программное обеспечение обладает определенными характеристиками:

  • переключение между двумя машинами
  • работа в кластере
  • и т. Д., И т. Д. *

Угадай, что, как только ты перешел на Прикладную Систему - ты не вернешься ни ...

Вам не нужно использовать Erlang / OTP, у Google хорошая прикладная система в их движке приложений, поэтому не зацикливайтесь на синтаксисе языка.

Вполне могут быть веские коммерческие причины для того, чтобы использовать стек Erlang / OTP, а не Google App Engine - парни из вашей фирмы-разработчика сделают этот вызов за вас.

1 голос
/ 12 февраля 2009

Проблемы останутся почти такими же в будущем, но базовое оборудование для реализации меняется. Чтобы использовать это, способ соединения между объектами (компонентами, процессами, сервисами, как бы вы это ни называли) изменится. Сообщения будут отправляться асинхронно, без ожидания прямого ответа. Вместо этого после выполнения задания процесс перезвонит отправителю с ответом. Это как люди, работающие вместе.

В настоящее время я разрабатываю легковесную управляемую событиями архитектуру на основе Erlang / OTP. Это называется Tideland EAS. Я описываю идеи и принципы здесь: http://code.google.com/p/tideland-eas/wiki/IdeasAndPrinciples. Это не готово, но, возможно, вы поймете, что я имею в виду.

1007 * КУП *

0 голосов
/ 13 февраля 2009

Эрланг заставляет вас думать о проблеме параллельно. Вы не забудете это ни секунды. Через некоторое время вы адаптируетесь. Не большая проблема. За исключением того, что решение становится параллельным в каждом маленьком уголке. Все остальные языки вам нужно настроить. Быть одновременно. И это не кажется естественным. Тогда ты в конечном итоге ненавидишь свое решение. Не весело.

Самым большим преимуществом Erlang является то, что он не имеет глобального сбора мусора. Это никогда не сделает перерыв. Это очень важно, когда у вас 10000 просмотров страниц в секунду.

...