В чем секрет Эрланга в масштабируемости? - PullRequest
13 голосов
/ 05 февраля 2009

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

Скажем, в качестве мысленного эксперимента я хотел перенести Erlang ejabberd на комбинацию Python и C, чтобы дать мне ту же скорость и масштабируемость. Какие структуры или шаблоны я должен был бы понять и реализовать? (Twisted Python уже делает это?)

Ответы [ 4 ]

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

Как / почему функциональные языки (в частности, Erlang) хорошо масштабируются? (для обсуждения почему)

http://erlang.org/course/course.html (для учебной цепочки)

Что касается портирования на другие языки, систему передачи сообщений было бы легко сделать на большинстве современных языков. Получить функциональный стиль в Python можно довольно легко, хотя вы не получите функции внутренней диспетчеризации Erlang «бесплатно». Stackless Python может воспроизводить большую часть функций параллелизма Erlang, хотя я не могу говорить о деталях, так как я не использовал его много. Если это кажется гораздо более «явным» (в том смысле, что вам необходимо определить параллелизм в коде в тех местах, где дизайн Эрланга позволит параллельности происходить внутри).

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

Erlang - это не только масштабируемость, но в основном

.
  • надежность
  • мягкие характеристики в реальном времени (включаются с помощью мягкого ГХ в реальном времени, что возможно благодаря неизменности [без циклов] и ничего общего и т. Д.)
  • производительность в параллельных задачах (дешевый переключатель задач, дешевый процессный порог, модель актеров, ...)
  • Масштабируемость - спорно в текущем состоянии, но быстро развивается (около 32 ядер хорошо, это лучше, чем у большинства конкурентов, но должны быть лучше в ближайшем будущем)
2 голосов
/ 08 февраля 2009

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

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

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

...