4

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

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

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

Любой желающий поделиться ими?

+0

К сожалению, для правильного решения ваших вопросов требуются часы обсуждения/объяснения. Для многого для быстрого Q & A. –

ответ

1

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

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

mue

+0

Это не ограничивается тем, как общаются объекты. Все архитектурные рассуждения должны сдвигаться - как и для ООП - в противном случае у вас будут одновременно архивированные серийные приложения, что бессмысленно. Вы правы в отношении аппаратного обеспечения; это уже произошло с двухъядерными процессорами, которые мы не используем. – Simon

+0

Да, это парадигма. Я использовал объекты слова, чтобы они были более знакомы. В некотором смысле процессы Эрланга являются особым видом объектов. На системы актеров влияла передача сообщений Smalltalk, а Erlang - как Smalltalk-72 несколькими способами. – Mue

0

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

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

2

Прежде чем мы имели операционные системы людей, строящие приложение садились и обсуждать такие вещи, как:

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

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

Прелести операционной системы является то, что ваше неписаным программное обеспечение имеет определенные характеристики, он может:

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

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

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

Прелести прикладной системы является то, что ваше неписаным программное обеспечение имеет определенные характеристики, он может:

  • отказоустойчивость между двумя машинами
  • работы в кластере
  • и т.д., и т.д. ...

не думаю, что, как только вы смещенный к системе приложений - вы не вернуться ни ...

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

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

+0

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

3

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

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

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

Вот ссылка на статью Herb Sutter, где он рассказывает о том, как, когда у нас больше возможностей для ее параллелизации, мы можем думать о той же проблеме по-новому (в том числе переопределить исходную область проблемы): http: // drdobbs .com/CPP/205900309 –

Смежные вопросы