LINUX.ORG.RU

Распределённые приложения на Erlang

 ,


0

0

Продолжение обзора функционального языка программирования Erlang. На этот раз рассматривается создание распределённых (многопоточных) приложений на Erlang. В статье освещаются основы многопоточного программирования на этом языке, а так же приводится пример простейшей программы, работающей с потоками в Erlang.

>>> Подробности

Re: Распределённые приложения на Erlang

Одноколёсный лисапеТ ;)

sS ★★★★★ ()

Re: Распределённые приложения на Erlang

Нечеловеческий какой-то язык...

voidus ()

Re: Распределённые приложения на Erlang

> Одноколёсный лисапеТ ;)

Не совсем.

Это достаточно почтенный проект, проверенный временем. На этом языке конкретно пишут программеры одной конкретной фирмы - рыночного лидера.

Надо отдавать себе отчет в том, что Erlang изначально ортогонален HPC и MPI. Поскольку он функциональный, то он хорошо ложится на "пи-исчисление". Про производительность там рассуждается просто в других терминах. Вообще, он интересен только телекоммуникационщикам.

Die-Hard ★★★★★ ()
Ответ на: Re: Распределённые приложения на Erlang от Die-Hard

Re: Распределённые приложения на Erlang

>Вообще, он интересен только телекоммуникационщикам.

Это не так, на Эрланге интересно писать и другие программы :) Например, Амазоновская SimpleDB - как раз на Эрланге написана.

Про ejabberd я уж вообще молчу.

anonymous ()

Re: Распределённые приложения на Erlang

хороший язык.

не для дельфи-питон-пхп-руби-шарп-ява нубов...

AVL2 ★★★★★ ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

> ...на Эрланге интересно писать и другие программы :) ...

Конечно!

Пипл, вон, на Жабке HPC вовсю гоняет, а некие орлы на ТеХе интепрератор Васика изобразили!

:-)

Die-Hard ★★★★★ ()
Ответ на: Re: Распределённые приложения на Erlang от voidus

Re: Распределённые приложения на Erlang

> Нечеловеческий какой-то язык...

Вообще-то он на Пролог похож - можно даже диалектом оного обозвать.

Но сейчас, конечно, Пролог мало кто знает.

AlexLorovitch ()

Re: Распределённые приложения на Erlang

> На этот раз рассматривается создание распределённых (многопоточных) приложений на Erlang.

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

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

anonymous ()
Ответ на: Re: Распределённые приложения на Erlang от AlexLorovitch

Re: Распределённые приложения на Erlang

>Вообще-то он на Пролог похож - можно даже диалектом оного обозвать.

Изначально буквально так и было (см. "A History Of Erlang" by Joe Armstrong).

anonymous ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

> если нужно написать непадающую систему от которой зависит судьба человечества - тут есть только один выбор и это erlang

М-да... я бы не стал доверять свою жизнь проге на динамически типизированном языке :)

tailgunner ★★★★★ ()

Re: Распределённые приложения на Erlang

хороший язык, хороший поход к реализации/развитию. если не замочат, то это - БУДУЮЩЕЕ ОТРАСЛИ.

anonymous ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

> ктото класно написал на википедии (ага на той самой) про процессы-камикадзе которые падают и поднимаются.

Кстати, что-то похожее есть в MINIX3 - там это часть ОС

AlexLorovitch ()
Ответ на: Re: Распределённые приложения на Erlang от tailgunner

Re: Распределённые приложения на Erlang

>я бы не стал доверять свою жизнь проге на динамически типизированном языке :)

Есть там типизация (правда, не в буквальнов смысле и необязательная). Но контроль типов и содержимого параметров может быть (и, обычно, так и делают) на порядок жёстче, чем в "модных" языках со статической типизацией.

Led ★★★☆☆ ()

Re: Распределённые приложения на Erlang

Спасибо. Прочитал статью.

Во-первых, слишком замутили то ли с примерами то ли с языком, В функции pong там вообще выглядит как бесконечная рекурсия.

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

В-третьих, идея интересна (может и не нова), но могли бы её лучше в виде поточно-сигнального модуля к тому же Питону прикрутить, больше бы толку было. Жду "import erlang" в Питоне :-)

anonymous ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

> В функции pong там вообще выглядит как бесконечная рекурсия.

У вас комплексы по поводу бесконечной рекурсии? Или человек "уже быдлокодерствовавший на десятке языков, включая лисп" узнать про хвостовую не посчитал нужным?

anonymous ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

> ясен пень что писать одноразоывй скрипт для парсинга какогото лога (привет перлисты) на ерланге никто не станет

а вот хрен, пишут

http://www.tbray.org/ongoing/When/200x/2007/09/20/Wide-Finder

(капча parler)

anonymous ()

Re: Распределённые приложения на Erlang

Ну и чем это лучше MPI?

а в комуникатор можно процессы объединять?
синхронные, асинхронные, по требыванию... всё есть?

а это лучше чем DCOM? callback есть?

p.s. если бы я только дельфи видел, то восхитился бы ;)

anonymous ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

> Ну и чем это лучше MPI?

> а это лучше чем DCOM? callback есть?

пионер, это _безопасно_ и очень хорошо масштабируется, иди смотри, что такое функциональное программирование. Threaded бенчмарки: http://shootout.alioth.debian.org/debian/fulldata.php?test=threadring&p1=...

Joe_Bishop ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

>Ну и чем это лучше MPI?

Легковесность.

>а в комуникатор можно процессы объединять?

Это что такое?

>синхронные, асинхронные, по требыванию... всё есть?

Есть.

>а это лучше чем DCOM? callback есть?

Есть.

Вообще, для понимания что, зачем, почему и как полезно читать http://www.erlang.org/download/armstrong_thesis_2003.pdf

WFrag ★★★★ ()
Ответ на: Re: Распределённые приложения на Erlang от WFrag

Re: Распределённые приложения на Erlang

в MPI есть группы и коммуникатор

сообщения можно посылать в пределах коммуникатора всегда есть коммуникатор COMM_WORLD содержащий все процессы и т.д.

anonymous ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

>В-третьих, идея интересна (может и не нова), но могли бы её лучше в виде поточно-сигнального модуля к тому же Питону прикрутить, больше бы толку было. Жду "import erlang" в Питоне :-)

это ничего, что питон появился позже эрланга?

и что питон, это для падучих подделок, а эрланг для создания надежных приложений?

AVL2 ★★★★★ ()
Ответ на: Re: Распределённые приложения на Erlang от Joe_Bishop

Re: Распределённые приложения на Erlang

>пионер, это _безопасно_ и очень хорошо масштабируется, иди смотри, что такое функциональное программирование.

пионэр, при чём тут функциональное программирование, я про распределённые системы?

p.s. не помню как там у жабы её система распределённого взаимодействия, оно лучше?

anonymous ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

>сообщения можно посылать в пределах коммуникатора всегда есть коммуникатор COMM_WORLD содержащий все процессы и т.д.

Эммм. Не понял. И что тут такого принципиально важного? Посылка сообщений сразу группе?

Можно с таким же успехом брать и по очереди посылать сообщение нескольким процессам (есть, конечно, тонкости, но не зная задачи их можно опустить).

WFrag ★★★★ ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

> пионэр, при чём тут функциональное программирование, я про распределённые системы?

при том, что в императивной парадигме писать распределённые приложения геморно.

> p.s. не помню как там у жабы её система распределённого взаимодействия, оно лучше?

http://www.lshift.net/blog/2006/09/10/erlang-processes-vs-java-threads

Joe_Bishop ()
Ответ на: Re: Распределённые приложения на Erlang от WFrag

Re: Распределённые приложения на Erlang

100 сообщений передать поочереди или одно сразу на 100
или 20 одинаковых сообщений в один коммуникатор, 40 в другой

или 50 одной коммандой, при этом каждому процессу посылается по куску вектора, а потом одной коммандой собрать вектор обратно

anonymous ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

>100 сообщений передать поочереди или одно сразу на 100

У процессов одного коммуникатора общая очередь сообщений или за кулисами оно всё равно раскладывается по 100 очередям?

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

WFrag ★★★★ ()
Ответ на: Re: Распределённые приложения на Erlang от WFrag

Re: Распределённые приложения на Erlang

реализацию организуют разработчики билиотеки, реализующей MPI

когда я в суе вспомнил DCOM и java, я имел ввиду RMI и CORBA и что-то в этом духе, а не создание до_хрена_потоков на одной машине, ну пусть и с 4 ядрами

функционально или как ещё это не важно.

anonymous ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

>реализацию организуют разработчики билиотеки, реализующей MPI

НУ вот, в Эрланге так же можно сделать. А что-то -- уже сделано.

>когда я в суе вспомнил DCOM и java, я имел ввиду RMI и CORBA и что-то в этом духе, а не создание до_хрена_потоков на одной машине, ну пусть и с 4 ядрами

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

WFrag ★★★★ ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

> Ну и чем это лучше MPI?

ЕМНИП MPI слишком низкоуровневый. Вручную прописывать все пересылки, топологии, внимательно чтобы клинчей и race conditions не было.. и получатся тяжеловесные процессы

По-моему, у них разные применения. Или низкоуровневая работа с пересылками, топологиями или высокоуровневая с функциями, STM, кешированием на халяву и т. п.

Как-то по ощущениям, низкоуровневый MPI более детерменирован по времени, обработке сообщений итп. Насколько "ленивость" и функциональщина влияет на латентность обработки сообщений (хотя для расчётных задач это как раз неважно) ?

anonymous ()
Ответ на: Re: Распределённые приложения на Erlang от AVL2

Re: Распределённые приложения на Erlang

> не для дельфи-питон-пхп-руби-шарп-ява нубов...

Да? А я как-то преспокойно писал на яве и занимался эрлангом, в чём фишка? Может проблема в тебе?

Bohtvaroh ★★★★ ()
Ответ на: Re: Распределённые приложения на Erlang от yyk

Re: Распределённые приложения на Erlang

>> Жду "import erlang" в Питоне :-)

> Это с питоньим то "глобал локом"? LOL!

Потому-то о новом модуле и написал, дабы т.н. "функциональность" Эрланга добавить. Или как связать существующие программы на Питоне с Эрлангом?

anonymous ()
Ответ на: Re: Распределённые приложения на Erlang от AVL2

Re: Распределённые приложения на Erlang

> это ничего, что питон появился позже эрланга?

Ничего, если не быть революционером своего независимого интерпретатора. Сейчас популярные языки даже в .NET/Mono встраивают.

anonymous ()
Ответ на: Re: Распределённые приложения на Erlang от AVL2

Re: Распределённые приложения на Erlang

> и что питон, это для падучих подделок, а эрланг для создания надежных приложений?

Мои "поделки" на Питоне почему-то никогда не падали, а сетевые приложения на нём годами без перезапуска и под нагрузкой в области телекомов работают. Не осилили Питон?

anonymous ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

> Мои "поделки" на Питоне почему-то никогда не падали, а сетевые приложения на нём годами без перезапуска и под нагрузкой в области телекомов работают. Не осилили Питон?

питон сложно не осилить, но надо сказать прямо: поделки на нём и вправду падучи. Статическая типизация по нём плачет.

Joe_Bishop ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

2anonymous (*) (03.02.2008 3:39:43):
>но если нужно написать непадающую систему от которой зависит судьба
>человечества - тут есть только один выбор и это erlang

Для этого был создан язык Ada, эланг курит в сторонке...

MrBool ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

>внимательно чтобы клинчей

а на Erlang как не напиши клинчей не бывает???

волшебство или вещества?

anonymous ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

> Мои "поделки" на Питоне почему-то никогда не падали, а сетевые приложения на нём годами без перезапуска и под нагрузкой в области телекомов работают. Не осилили Питон?

Опрос по snmp чуть более 1000 железок: non-thread: порядка 4 минут

thread: python (pysnmp) - 50 сек (и более 15 потоков уже не имеет смысла - GIL одноко), что pool, что не pool.

thread: ruby (snmplib) - 30 сек

anonymous ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

>> В функции pong там вообще выглядит как бесконечная рекурсия.

> У вас комплексы по поводу бесконечной рекурсии? Да. Вырос на принципах классического программирования 10-15 лет давности.

> Или человек "уже быдлокодерствовавший на десятке языков, включая лисп" узнать про хвостовую не посчитал нужным?

Грубиян! Изучаю с удовольствием всё новое, что мне ещё не известно.

anonymous ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

> Опрос по snmp...

Вы говорите о конкретной библиотеке, а не о языке в целом. Библиотеки можно переключать. Я, например, PyXML редко использую, только для тестов, а так в основном внешний lxml подключаю. Я и не пишу систему 100% на Питоне, C++ отлично мне помогает.

Питон же - отличный язык для прототипизации и тестов. Системы на нём отлично работают и развиваются, по мере роста нагрузки можно либо новые серваки ставить или модули в C++ экспортировать (зависит от того что дороже, железо или программисты). Совершенную систему с нуля написать - эти легенды для студентов оставьте.

Возможности Эрланга мне интересны пока в теории. Питон со всем этим в моём случае справляется (телеком, пару сотен клиентов в секунду). Падения системы за несколько лет не переживали.

anonymous ()
Ответ на: Re: Распределённые приложения на Erlang от yyk

Re: Распределённые приложения на Erlang

> Это с питоньим то "глобал локом"? LOL!

1. Есть возможность его обходить.
2. Я использую внешние модули которые сами по себе нужную функциональность реализуют.

anonymous ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

>Про ejabberd я уж вообще молчу.

зря. я вот пытаюсь кластер этого безобразия эксплуатировать. две ноды, так раз или два в день обязательно кластер разваливается...

anonymous ()
Ответ на: Re: Распределённые приложения на Erlang от anonymous

Re: Распределённые приложения на Erlang

>зря. я вот пытаюсь кластер этого безобразия эксплуатировать. две ноды, так раз или два в день обязательно кластер разваливается...

Руки?

WFrag ★★★★ ()
Ответ на: Re: Распределённые приложения на Erlang от tailgunner

Re: Распределённые приложения на Erlang

> М-да... я бы не стал доверять свою жизнь проге на динамически типизированном языке :)

И зря. Ксати, посчитай на нем факториал 1000.

sv75 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.