LINUX.ORG.RU

Хочется понять говно ли эрланг

 , ,


2

9

Эрланг, как утвердается очень крут для телекома. А в телекоме активно используется протокол DIAMETER. В эрланге есть его поддержка даже http://www.erlang.org/doc/man/diameter.html

Меня удивило, что эриксон сделал свою софтину, которая активно использует диаметр на С++ и жава, а не на родном эралнге. И есть пдозрение, что реализвация диаметра в эранге полное говно. Меня бы разубедили бы бенчмарки, но их не найти. Может кто-то понимающий в эрланге помог бы? Сбацали бы тест, сравнили ли бы с реализацией на С/C++? С меня реализация на С++ и тула для создания нагрузки (seagull)

Перемещено mono из talks

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

И то что реализация диамитера на эрланге говно ни разу не говорит о том что эрланг говно.

mono ★★★★★ ()

Хочется понять говно ли эрланг

benchmark

Способ детектирования говна не очень

vertexua ★★★★★ ()

да r в соседнем треде где-то приводил ссылки на сравнение с плюсами. ерланг сливает сильно в плане производительности.

nanoolinux ★★★★ ()
Ответ на: комментарий от nanoolinux

Там скорее вычислительные или струтуростроительные задачи а тут чисто сетевая. Утверждается ведь, что эрланг крут именно в этом

vromanov ★★ ()
Ответ на: комментарий от ates

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

vromanov ★★ ()

ты неправильно вопрос ставишь - будут всегда мучить сомнения )

swwwfactory ★★ ()
Ответ на: комментарий от vromanov

Стукнись на контакт в профиле. Завтра попробуем сделать

ates ()
Ответ на: комментарий от nanoolinux

Nif может скрешить всю vm. Так что тут нужна особая осторожность. Лучше уже port. В любом случае без тестов нечего говорить о тормознутости, надо проверять.

ates ()

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

gh0stwizard ★★★★★ ()

Эрланг — это не про бенчмарки, это про другое. И в телекоме считается крутым за другие особенности.

Представьте себе интерпретатор, например, перла (да, считает он небыстро), который запускает одновременно миллионы скриптов. При этом не даёт процессору простаивать сразу подставляя вместо заблокированного какой-нибудь другой. Присутствует миграция как между потоками ОС, так и между разными хостами. Т.е. не хватает производительности — добавь в кластер ещё один сервер.

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

На практике. Диаметр мне никогда не был нужен. Эксплуатирую amqp. 2-сокетный сервер способен с некоторым скрипом перемалывать 50k сообщений/сек (приём, маршрутизация, отдача). За 2 года был один инцидент со вставшим в интересную позицию кластером (т.е. наиболее популярная реализация — beam.smp — таки не безгрешна в плане кластеризации).

Всё руки не доходят погонять это дело под jit-ом llvm.

// тот самый анонимус, который считает, что вы нихрена не знаете кресты :)

anonymous ()

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

с прямыми руками, любая задача на С++ всегда будет в выиграше

anonymous ()

Знаешь, меня тоже по-началу удивляло, что в AT&T часто рекомендуют использовать язык Си и рекомендуют НЕ использовать язык Си++, хотя вроде бы оба вышли из стен ее лабораторий (Bell Labs). По крайней мере, Си++ точно вышел оттуда.

dave ★★★★★ ()
Последнее исправление: dave (всего исправлений: 2)

Конечно же говно. Чего там понимать-то? Все очевидно.

anonymous ()

Что такое «реализация диаметра» в твоём понимании?
Это всего лишь протокол, а не какой-то набор алгоритмов

zolden ★★★★★ ()
Ответ на: комментарий от pulo

15-20 раз в секунду? Вот вам и ПРАИЖВАДИТЕЛЬНОШТЬ говняшной.

anonymous ()

А в телекоме активно используется протокол DIAMETER

в слове «DIAMETER» очень много ошибок. «RADIUS» - вот так правильней будет.

Deleted ()
Ответ на: комментарий от vromanov

ТС, ты путаешь тёплое с зелёным.
Во-первых, не DIAMETER, а Diameter
Во-вторых, он работает на Application layer, то есть эффективность зависит от приложения его использующего, именно в нём должны настраиваться все таймеры, буферы и тд

zolden ★★★★★ ()
Ответ на: комментарий от ates

Всегда можно взять с++ и написать nif! хаха.
xaxa

Это как бы зловещий смех был. Походу ты не понял, всей иронии.

nanoolinux ★★★★ ()
Ответ на: комментарий от zolden

Спасибо, что ты мне это рассказал, а то я не знаю что такое Diameter! Речь идет о простейшем бенчмарке? когда приложение принимает команду, например CCR и отвечает CCA, просто перекладывая большинство полей из запроса. Таймеры в этом случае особо не должны влиять. Буфера, в случае не кривой реализации тоже.

vromanov ★★ ()
Ответ на: комментарий от vromanov

Речь идет о простейшем бенчмарке?

Вот и я пытаюсь понять о какой эффективности реализации идёт речь.
Обычно всё сожрёт либо транспорт (TCP), либо I/O в DB биллинга.

zolden ★★★★★ ()
Ответ на: комментарий от zolden

TCP практически не жрет. Базы данных бывают разные.. Мне интересно, потянет ли эрланг несколько десятков тысяч сообщений в секунду.

vromanov ★★ ()
Ответ на: комментарий от anonymous

Мне эрланг на первый взгляд непонраился отсутвием классов и структур. Мне кажется, что это замедлит разработку и увеличит количество ошибок. У нас для каждой диаметровой команды заведен класс (точнее 2 - один для входящих, другой для исходящих). У этого класа есть поля, каждое поле имеет свой тип. Т.е. если это enum, то это enum. У тебя без особых ухищрений нет способа добавить avp которой нет в описании команды. Даже просто редактор дает автоподстановку методов.

vromanov ★★ ()
Ответ на: комментарий от vromanov

я бы так не сказал. в диаметр заложен дюже большой оверхед. циски вон, вполне себе отлично реализовали ISG на базе радиуса и вполне себе хорошо живет. более того, диаметр работает в tcp стеке, что накладывает существенный отпечаток в производительности, чего не сказать про радиус. кстати, автор freeradius по этому поводу тоже писал, что за диаметр не возьмется, покуда он сильно перегружен и из простого ААА из него пытаются сделать монстра. это то же самое, как с SOAP - круто, но аццки тяжеловесно и трудоемко в разработке. зато да, ынтерпрайзненько :). диаметр пользуется популярностью лишь у мобильных оперов. там да, его юзают во все поля, но обычные интернет провайдеры обходятся обычным радиусом.

PS: знаю это потому как ШПД билайна я разрабатывал (там мобила пользует диаметр, а вот домашний инет - исключительно на радиусе).

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Нам никуда не деться, мы используем стандартные протоколы. если оборудование (PCEF, DPI) хочет диаметер, значит будет он.

vromanov ★★ ()
Ответ на: комментарий от nerdogeek

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

next_time ★★★★★ ()
Ответ на: комментарий от vromanov

Ок. Сформируем по другому, если в диваметр в эрланге говно, он будет говном для моей задачи, где диаметер важен

Прицепи к Эрлангу парсер/генератор протокола, написанный на C++, делов-то. Вы ведь на плюсах веб-морду и скрипты сценариев писать не будете?

Или будете?..

mv ★★★★★ ()
Ответ на: комментарий от anonymous

Ёпланг - динамически типизированная какашка. Не пачкайся об нее.

Как-будто C++ какие-то гарантии даёт?

mv ★★★★★ ()
Ответ на: комментарий от anonymous

структуры там есть

Там все есть для удобного решения подходящих задач. ТС просто «ниасилил» или не захотел «асилить».

gensym ★★ ()
Ответ на: комментарий от gensym

У меня нет задачи изучить все языки программирования

vromanov ★★ ()
Ответ на: комментарий от mv

Как-будто C++ какие-то гарантии даёт?

не обращай внимание, мальчик на паскале вырос :)

Deleted ()
Ответ на: комментарий от vromanov

Утверждается ведь, что эрланг крут именно в этом

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

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