Какова на самом деле модель параллелизма Эрланга? - PullRequest
3 голосов
/ 25 апреля 2010

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

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

/ Arun

Ответы [ 2 ]

14 голосов
/ 26 апреля 2010

Модель параллелизма Erlang основана на следующих предпосылках:

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

  • Асинхронная связь . Все взаимодействие между процессами происходит через асинхронную передачу сообщений, вот и все, ничего больше, нада.

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

  • Изоляция процесса . Между процессами вообще нет общего состояния, единственный способ связи - передача сообщений. Это имеет основополагающее значение для возможности создания надежных систем, поскольку позволяет сбоям процессов, не разрушая их для других процессов. Конечно, они могут получать информацию о том, что процесс завершился с помощью механизма обработки ошибок, но сбой никогда не приведет к противоречивому состоянию в других процессах. Следствием этого является отсутствие глобальных данных.

Это фундаментальные предпосылки для модели параллелизма Эрланга. Вы можете часто видеть их выраженными по-разному, но в основном они одинаковы. Erlang также имеет неизменные данные, которые являются БОЛЬШИМ ВЫИГРЫШОМ, но это не является частью модели параллелизма, достаточно передачи сообщений и изоляции процесса. В некоторых кругах это можно считать еретической точкой зрения.

Как видите, актеры - это только часть модели. Обработка ошибок является фундаментальной, но часто упускается из виду. Пропуск этого означает, что вы пропустили часть пункта.

N.B. Процессы Эрланга - это правильные процессы / потоки, поскольку они имеют собственную жизнь и являются не просто формой сопрограмм, управляемых событиями. Процесс может с радостью заниматься своим бизнесом и изменять свое внутреннее состояние, не руководствуясь внешними событиями.

12 голосов
/ 25 апреля 2010

Я думаю, это называется Актерская модель .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...