Я хотел бы знать список наиболее распространенных приложений / веб-сайтов / решений, где Erlang используется, успешно или нет .
Объяснение того, почему оно используется в конкретном решении, а не в других языках программирования, также будет очень полезно.
Перечисление BAD Erlang тематических исследований (случаев, когда Erlang используется не по назначению) также было бы интересно.
erlang
case-study
Роберто Алои
источник
источник
Ответы:
Из программирования Erlang :
альтернативный текст
Многие компании используют Erlang в своих производственных системах:
• Amazon использует Erlang для реализации SimpleDB, предоставляя услуги базы данных как часть Amazon Elastic Compute Cloud (EC2).
• Yahoo! использует его в своем сервисе социальных закладок, Delicious, который имеет более 5 миллионов пользователей и 150 миллионов закладок.
• Facebook использует Erlang для поддержки серверной части своего чата, обслуживающего более 100 миллионов активных пользователей.
• WhatsApp использует Erlang для запуска серверов обмена сообщениями, обеспечивая до 2 миллионов подключенных пользователей на сервер.
• T-Mobile использует Erlang в своих системах SMS и аутентификации.
• Motorola использует Erlang в продуктах обработки вызовов в сфере общественной безопасности.
• Ericsson использует Erlang в своих узлах поддержки, используемых в мобильных сетях GPRS и 3G по всему миру.
Наиболее популярные приложения Erlang с открытым исходным кодом:
• 3D-модельер Wings 3D , используемый для моделирования и текстурирования полигональных сеток.
• Система Ejabberd , которая предоставляет сервер приложений обмена мгновенными сообщениями (IM) на основе расширяемого обмена сообщениями и протокола присутствия (XMPP).
• Документно-ориентированная база данных CouchDB «без схемы», обеспечивающая масштабируемость между многоядерными и многосерверными кластерами.
• Библиотека MochiWeb , обеспечивающая поддержку создания облегченных HTTP-серверов. Он используется для питания таких сервисов, как MochiBot и MochiAds, которые ежедневно предоставляют динамически генерируемый контент миллионам зрителей.
• RabbitMQ , реализация протокола обмена сообщениями AMQP. AMQP - это новый стандарт высокопроизводительных корпоративных сообщений.
источник
ejabberd - одно из самых известных приложений на эрланге, с которым я выучил эрланг.
Я думаю, что это один из самых интересных проектов по изучению эрланга, потому что он действительно опирается на силу эрланга. (Однако некоторые будут утверждать, что это не OTP, но не волнуйтесь, внутри все еще есть масса отличного кода ...)
Зачем ?
Сервер XMPP (например, ejabberd) можно рассматривать как маршрутизатор высокого уровня, маршрутизирующий сообщения между конечными пользователями. Конечно, есть и другие функции, но это самый важный аспект сервера обмена мгновенными сообщениями. Он должен одновременно маршрутизировать много сообщений и обрабатывать множество TCP / IP-соединений.
Итак, у нас есть 2 функции:
Это примеры, где эрланг сияет.
обрабатывать много соединений
С помощью erlang очень легко создавать масштабируемые неблокирующие серверы TCP / IP. Фактически, это было разработано, чтобы решить эту проблему. И, учитывая, что он может порождать сотни тысяч процессов (а не потоков , это подход без разделения ресурсов, который проще проектировать), ejabberd разработан как набор процессов erlang (которые могут быть распределены по нескольким серверам):
Все они обмениваются сообщениями.
Маршрут сообщений с учетом некоторых аспектов сообщения
Еще одна привлекательная особенность erlang - это сопоставление с образцом . Он используется во всем языке.
Например, в следующем:
Это 5 разных версий
access
функции. Эрланг выберет наиболее подходящую версию с учетом полученных аргументов. (Config
это структура типа,#config
которая имеетtype
атрибут).Это означает, что это очень просто и намного понятнее, чем создание цепочки
if/else
илиswitch/case
создание бизнес-правил.Упаковать
Написание масштабируемых серверов - вот и весь смысл Erlang. Все разработано, чтобы сделать это легко. К двум предыдущим функциям я бы добавил:
mnesia
Распределенная реляционная база данных (входит в базовый дистрибутив)mochiweb
, на котором основано большинство серверов http erlangejabberd
,couchdb
но такжеwebmachine
,riak
и убивание библиотеки очень легко врезать)Меньше LOCs
Есть также эта статья от Ричарда Джонса. Он переписал приложение с C ++ на erlang: на Erlang на 75% меньше строк.
источник
Список наиболее распространенных приложений для Erlang, как было описано (CouchDb, ejabberd, RabbitMQ и т. Д.), Но я хотел бы добавить следующее.
Причина, по которой он используется в этих приложениях, заключается в основной силе Erlang: управлении доступностью приложений .
Erlang был создан с нуля для телекоммуникационной среды, требующей, чтобы системы соответствовали доступности как минимум 5x9 (99,999% годового времени безотказной работы). Эта цифра не оставляет много места для простоя в течение года! По этой причине, в первую очередь, Erlang поставляется со следующими функциями (не исчерпывающими):
Горизонтальная масштабируемость (способность легко распределять рабочие места между машинами за счет непрерывного взаимодействия внутри и между машинами). Встроенная база данных (Mnesia) также распространяется по своей природе.
Вертикальная масштабируемость (возможность распределять задания между ресурсами обработки на одном компьютере): SMP обрабатывается изначально.
Горячая замена кода : возможность обновлять / обновлять код в реальном времени во время операций
Асинхронный : реальный мир асинхронный, поэтому Erlang был создан для учета этой основной природы. Одна особенность, которая способствует этому требованию: «свободные» процессы Эрланга (> 32000 могут работать одновременно).
Надзор : множество различных стратегий для надзора за процессом со стратегиями перезапуска, пороговыми значениями и т. Д. Помогает легче восстанавливаться после угловых случаев / перегрузок, сохраняя при этом следы проблем для последующего устранения неполадок, посмертного анализа и т. Д.
Управление ресурсами : стратегии планирования, мониторинг ресурсов и т. Д. Обратите внимание, что планировщик процессов по умолчанию работает с масштабированием O (1).
Отладка в реальном времени : возможность «входить» в действующие узлы по желанию помогает устранять неполадки. Отладка может быть осуществлена в режиме реального времени с полным доступом к состоянию выполнения любого процесса. Также встроенные инструменты сообщения об ошибках очень полезны (но иногда неудобны в использовании).
Конечно, я мог бы рассказать о его функциональных корнях, но этот аспект несколько ортогональн к основной цели (высокая доступность). Основным компонентом функционального характера, который щедро способствует достижению поставленной цели, является ИМО: «ничего не делиться». Эта характеристика помогает сдерживать «побочные эффекты» и снижает потребность в дорогостоящих механизмах синхронизации.
Я предполагаю, что все эти характеристики помогают расширить возможности использования Erlang в критически важных бизнес-приложениях.
Одна вещь, которую Эрланг не очень хорошо умеет : обрабатывать большие блоки данных.
источник
Erlang происходит от Ericsson и используется в некоторых их телекоммуникационных системах.
Вне телекоммуникаций CouchDb (база данных, ориентированная на документы), возможно, является самым известным приложением Erlang на сегодняшний день.
Почему Эрланг? Из обзора (стоит прочитать полностью):
источник
Мы построили биржу ставок (рынок прогнозирования), используя Erlang. Мы выбрали Erlang вместо некоторых более традиционных финансовых языков (C ++, Java и т. Д.) Из-за встроенного параллелизма. Рынки функционируют очень похоже на телефонные биржи. Наш технический директор выступил с докладом о том, как мы используем Erlang на конференции .
Мы также используем CouchDB и RabbitMQ как часть нашего стека.
источник
Я сталкивался с этим в процессе написания отчета: Erlang в Acoustic Ray Tracing .
Это отчет о попытках исследовательской группы использовать Erlang для Acoustic Ray Tracing. Они обнаружили, что, хотя писать программу проще, меньше глючить и т. Д. Она масштабировалась хуже и работала в 10 раз медленнее, чем сопоставимая программа на Си. Таким образом, одна из областей, где он может не подходить, это сценарии с интенсивным использованием процессора.
Обратите внимание, что люди, написавшие статью, находились на стадии первого изучения Erlang и, возможно, не знали надлежащих процедур разработки для интенсивного использования Erlang.
источник
Судя по всему, Yahoo использовала Erlang для создания чего-то, что называется Harvester. Статья об этом здесь: http://www.ddj.com/architect/220600332
источник
Чем хорош эрланг?
http://beebole.com/en/blog/erlang/why-erlang/
http://www.aquabu.com/2008/2/15/erlang-pragmatic-studio-day-3-notes
http://www.reddit.com/r/programming/comments/9q0lr/erlang_and_highfrequency_trading/ (ответ Джерфа)
Важно понимать, что 4 части Erlang: сам язык, стандартные библиотеки виртуальных машин (BEAM, hipe) (плюс модули на github, CEAN и т. Д.) И среда разработки постоянно обновляются / расширяются / улучшаются. Например, я помню, как читал, что производительность с плавающей запятой улучшилась, когда автор Wings3d понял, что нужно улучшить (я не могу найти источник для этого). И этот парень только что написал об этом:
http://marian-dan.com/wordpress/?p=324
Пару лет назад популярность Тима Брея в Wide Finder и все, кто начал делать каркасы веб-приложений и HTTP-серверы, привели (по крайней мере частично) к улучшению обработки регулярных выражений и двоичных файлов. И еще есть работа по интеграции HiPE и SMP, проекта диализатора, множественного модульного тестирования и сборки библиотек, ..
Таким образом, его сладкое пятно расширяется. Сложность в том, что официальные документы не могут идти в ногу со временем, а список рассылки и объем блогосферы erlang быстро растут
источник
Мы используем Erlang, чтобы обеспечить мощную мускулатуру для нашей многопользовательской браузерной игры Pixza в реальном времени . Мы не используем Flash или другие сторонние плагины, хотя игра многопользовательская в режиме реального времени. Вместо этого мы используем чистые методы JS и COMET. И Erlang поддерживает «действительно актуальную» Pixza.
источник
Я работаю в wooga, компании, занимающейся социальными играми, и мы используем Erlang для некоторых наших игровых бэкэндов (в основном, http apis для миллионов пользователей в день) и вспомогательных сервисов, таких как ios push-уведомления, оплата и т. Д.
Я думаю, что это действительно хорошо подходит для задач, связанных с сетью, и делает его довольно простым для структурирования и реализации в нем простых и сложных сетевых сервисов. Распределение, отказоустойчивость и производительность легко достижимы, потому что в Erlang уже встроены некоторые ключевые компоненты, и они долгое время используются в критически важной производственной инфраструктуре. Так что это не похоже на «новую хип-технологию 0.0.2 alpha».
Я знаю, что другие игровые компании также используют Erlang. Вы должны быть в состоянии найти презентации на Slideshare об этом.
источник
Erlang черпает силу в том, что является функциональным языком без общей памяти. Следовательно, IMO, Erlang не подойдет для приложений, которые требуют манипуляций с памятью. Редактирование изображений, например.
источник