Как стать автором
Обновить
0

Erlang/OTP *

Функциональный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Архитектура WhatsApp, которую Facebook купил за $19 миллиардов

Время на прочтение20 мин
Количество просмотров88K

В очередной раз хочу предложить свой перевод статьи, на этот раз автор Тодд Хофф, и его статья посвященна архитектуре WhatsApp на момент его покупки Facebook.


Ремарка: в начале статьи содержится рассуждение автора оригинала о том, зачем Facebook купил WhatsApp за баснословные 19 миллиардов. Если это вам не интересно — просто пролистайте, описание архитектуры будет ниже.


Рик Рид в его предстоящем мартовском докладе, озаглавленном "Миллиард с большой 'М': Следующий уровень масштабирования в WhatsApp" раскрывает сногсшибательную статистику WhatsApp:


Что имеет сотни узлов, тысячи ядер, сотни терабайт RAM и надеется обслужить миллиарды смартфонов, которые вскоре станут реальностью по всему миру? Основанная на Erlang и FreeBSD архитектура WhatsApp. Мы столкнулись со многими трудностями при удовлетворении постоянно растущего спроса на наш сервис обмена сообщениями, но мы продолжаем расширять нашу систему с точки зрения размера (> 8000 ядер) и с точки зрения скорости (>70М сообщений Erlang в секунду).
Читать дальше →
Всего голосов 66: ↑62 и ↓4+58
Комментарии58

Информация для адмиралов космических флотилий

Время на прочтение4 мин
Количество просмотров16K


Докладная записка


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

В условиях субсветовых скоростей и огромных расстояний нас подстерегает новый враг. На этот раз технический. Этого врага зовут «временной разрыв» (Time Warp). Что это такое и как с ним бороться (используя Erlang версии 18 и выше), изложено в данной докладной записке. Записка основана на технической документации — Time and Time Correction in Erlang.
Читать дальше →
Всего голосов 37: ↑36 и ↓1+35
Комментарии27

Быстрые TCP сокеты на Erlang

Время на прочтение10 мин
Количество просмотров12K
Обработка TCP соединений может запросто оказаться узким местом, когда скорость приближается к 10 тыс запросов в секунду: эффективное чтение и запись становится отдельной проблемой, а большая часть вычислительных ядер простаивает.

В этой статье я предлагаю оптимизации, которые позволяют улучшить три составляющие работы с TCP: приём соединений, получение сообщений и ответ на них.

Статья адресована как Erlang программистам, так и всем, кто просто интересуется Erlang. Глубокие знания языка не требуются.
Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии14

Elixir: начинаем работу с Plug

Время на прочтение5 мин
Количество просмотров9.4K

В мире Elixir, Plug представляет собой спецификацию, позволяющую различным фреймворкам общаться с различными web-серверами, работающими в Erlang VM.
Если вы знакомы с Ruby, то можете провести аналогию с Rack: Plug пытается решать те же проблемы, но только другим способом. Понимание основ работы Plug позволит лучше разобраться как с работой Phoenix, так и других web-фреймворков, созданных на языке Elixir.



Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии10

Истории

Erlang в Wargaming

Время на прочтение9 мин
Количество просмотров38K
Язык Erlang известен не очень широко, хотя это довольно интересная технология, очень сильная в своей нише. Последние несколько лет Erlang все чаще применяется в веб-разработке.

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

В компании Wargaming Erlang применяется более 3 лет. Есть около десятка разработчиков и несколько проектов, работающих под большими нагрузками. И в этой статье мы поделимся своим опытом и видением Erlang.


Читать дальше →
Всего голосов 52: ↑49 и ↓3+46
Комментарии155

Эрланг для веб-разработки (2) -> БД и деплой;

Время на прочтение10 мин
Количество просмотров13K

В первой статье мы познакомились с Эрлангом и фреймворком n2o. В этой части мы продолжим делать наш блог:
  • добавим авторизацию через фейсбук, для этого будем из клиента вызывать функции на сервере;
  • будем сохранять комментарии и посты в NoSQL базе;
  • развернем наш блог на DigitalOcean и замерим производительность (спойлер — 1300 запросов в секунду).


Код из статей https://github.com/denys-potapov/n2o-blog-example, готовый проект можно посмотреть по адресу http://46.101.118.21:8001/.

Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии13

Эрланг для веб-разработки (1) -> Знакомство;

Время на прочтение7 мин
Количество просмотров29K

Продолжение о базе данных и деплое во второй статье.

Я начинаю публиковать серию статей о веб-разработке на Эрланге. Многие хотят попробовать Эрланг, но сталкиваются с проблемой, что вводные курсы в основном касаются Эрланга как функционального языка и далеки от реальных проектов (Learn You Some Erlang for great good! — хорошая и подробная книга). С другой стороны все обучающие материалы по веб-разработке подразумевают, что читатель уже хорошо знает Эрланг.

Эта серия статей рассчитана для разработчиков, у которых есть опыт в веб-разработке (PHP, Ruby, Java), но не имеют опыта разработки на Эрланге.

Задачей будет сделать блог. Код из статей https://github.com/denys-potapov/n2o-blog-example, готовый проект можно посмотреть по адресу http://46.101.118.21:8001/. Особенности проекта:
  • обновление комментариев в реальном времени;
  • авторизация через фейсбук;
  • данные храним в mnesia.

В основе проекта феймворк n2o. Выбор довольно субъективен, но из живых Эрланг фреймворков, n2o мне показался наиболее «эрлангоподобным», в тоже время ChicagoBoss больше похож на MVC фреймворки в других языках.
Читать дальше →
Всего голосов 32: ↑29 и ↓3+26
Комментарии121

Кластерный сервис на Эрланге: от идеи до deb-пакета

Время на прочтение13 мин
Количество просмотров13K

Задача


Нужно написать настоящий сервис на эрланге, который будет работать в кластере. Кроме того, нужно максимально упростить жизнь тем, кто будет обслуживать сервис.
Требования:
  • У сервиса будет RESTful интерфейс (это модно и современно)
  • основные настройки сервиса должны быть вынесены в маленький файл с понятным синтаксисом
  • сервис должен писать опциональный access-лог
  • сервис должен запускаться через upstart

Для простоты сервис будет представлять собой счетчик, который каждому клиенту выдает увеличивающееся с каждым запросом на 1 целое число (уникальное до перезапуска счетчика).

Технологии


Выберем все самое модное и современное:

Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии22

N2O: Erlang Web-фреймворк на WebSockets

Время на прочтение8 мин
Количество просмотров32K
N2O Erlang Framework

ВВЕДЕНИЕ


Данный пост подразумевает хорошее интро в N2O на русском.

Что такое Erlang/OTP Web Framework N2O и в чём его фишка для веб-разработки, можно узнать на странице в github и официальном сайте SynRC. Там всё как вы любите с графиками и презентациями.

А здесь рассмотрим принципы работы фреймворка и поговорим о вечном.
Читать дальше →
Всего голосов 45: ↑42 и ↓3+39
Комментарии24

Вышел Erlang/OTP 17.0

Время на прочтение2 мин
Количество просмотров8.8K
9 апреля вышел мажорный релиз платформы Erlang/OTP 17.0.

Erlang — функциональный язык программирования со строгой динамической типизацией, предназначенный для создания распределённых вычислительных систем.

Читать дальше →
Всего голосов 42: ↑39 и ↓3+36
Комментарии5

2048 на Erlang

Время на прочтение15 мин
Количество просмотров22K
imageНаверное на неделю игры 2048 на хабре уже не успеваю, но статья не столько о игре сколько о websocket сервере на Erlang. Небольшая предыстория. Когда начал играть в 2048, то просто не мог прекратить. В ущерб работе и семье. Поэтому принял решение, что играть за меня должен бот. Но загвоздка в том, что игра клиентская, из-за чего не ведется глобальный рейтинг и не так удобно играть без браузера. Поэтому я и решил сделать серверную часть, где был бы рейтинг. И где мог бы играть мой бот без браузера.
Читать дальше →
Всего голосов 40: ↑35 и ↓5+30
Комментарии19

YAWNDB — time series база данных

Время на прочтение7 мин
Количество просмотров12K


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

Наиболее простым и наглядным способом представления статистических данных является построение графиков. Существует много специализированных программных решений, предназначенных для анализа статистических данных с последующей визуализацией.Мы стали искать подходящий инструмент; основным требованием при этом была высокая производительность. В результате этих поисков… Впрочем, обо всем по порядку. Начнем с небольшого теоретического вступления.
Читать дальше →
Всего голосов 40: ↑38 и ↓2+36
Комментарии8

Facebook покупает WhatsApp за $16 млрд

Время на прочтение2 мин
Количество просмотров54K


Корпорация Facebook известила Комиссию по ценным бумагам о покупке мобильного сервиса передачи сообщений WhatsApp за $16 млрд.

Сделка предусматривает выплату $4 млрд деньгами, $12 млрд акциями и дополнительно $3 млрд опционов на протяжении четырёх лет для удержания немногочисленных сотрудников WhatsApp, среди которых 32 программиста и 0 специалистов по PR и маркетингу. Выделенный пакет — это примерно 7,9% всех акций Facebook и 35% имеющихся денег.
Читать дальше →
Всего голосов 82: ↑66 и ↓16+50
Комментарии123

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн

Erlang для самых маленьких. Глава 3: Базовый синтаксис функций

Время на прочтение6 мин
Количество просмотров22K
imageДоброй ночи, Хабр! Мы продолжаем изучение Erlang для самых маленьких.

В прошлой главе мы рассмотрели как объявлять функции и как объединять их в модули. В этой главе мы рассмотрим синтаксис функций более подробно.


Хм, это интересно...
Всего голосов 31: ↑30 и ↓1+29
Комментарии4

Хекслет: Erlang, логика, операционные системы, Java 2

Время на прочтение3 мин
Количество просмотров18K
Привет, Хабр!

Прошло уже больше полугода с момента старта проекта Хекслет. Напомню: мы проводим бесплатные онлайн-курсы по программированию и смежным дисциплинам. По традиции сегодня мы расскажем про новые курсы.

Статистика


  • Завершено четыре курса (всего – больше 100 уроков)
  • Сейчас в процессе – еще три курса, + запланирован старт двух курсов
  • 19 000 студентов зарегистрировано
  • Они сдали более 450 000 тестов
  • Просмотров лекций – больше 277 000 (не считая подкастов в iTunes и раздачи через битторрент)
  • 444 000 посетителей и 1.6M просмотров страниц


Новые курсы


Erlang / OTP


Читать дальше →
Всего голосов 66: ↑63 и ↓3+60
Комментарии8

Erlang для самых маленьких. Глава 2: Модули и функции

Время на прочтение6 мин
Количество просмотров30K
imageДоброго вечера, дорогие Хабровчане. Мы продолжаем изучение Erlang для самых маленьких.

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

В этой главе мы поднимемся на следующую ступень и рассмотрим модули и функции.


Хочу узнать больше
Всего голосов 56: ↑51 и ↓5+46
Комментарии15

Erlang для самых маленьких. Глава 1: Типы данных, переменные, списки и кортежи

Время на прочтение8 мин
Количество просмотров66K

Добрый день, дорогие хабражители.

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


Если интересно - давайте начнем...
Всего голосов 95: ↑88 и ↓7+81
Комментарии65

Erlang plugin для IntelliJ IDEA версии 0.5

Время на прочтение1 мин
Количество просмотров6.8K
Привет, хабр!

Сегодня появилась новая версия Erlang плагина для IntelliJ IDEA.

Что нового?


C выхода прошлого релиза прошло уже 7 месяцев, а значит вас ждёт много нового:
  • Новые и улучшенные рефакторинги: introduce function, extract/inline variable и другие
  • Новые инспекции: unresolved include/include_lib, unresolved function и другие
  • Навигация по коду: включенные файлы, результаты тестов, callbacks
  • Улучшения совместимости с IntelliJ-based средами разработки
  • Расширена поддержка цветовых схем и форматирования, в том числе поддержка comma-first style
  • Поддержка EUnit: запуск тестов из редактора, перезапуск упавших тестов
  • Улучшено автодополнение для аттрибутов, функций и модулей
  • Улучшена сборка проекта: debug_info, parse_transforms, behaviours, сборка с помощью Rebar
  • Дебаггер (experimental)
  • И многое другое


Читать дальше →
Всего голосов 36: ↑36 и ↓0+36
Комментарии13

Почему Erlang?

Время на прочтение6 мин
Количество просмотров20K
Оригинал статьи: smyck.net/2012/04/22/why-erlang

Шансы, что вы читаете эту статью на устройстве с многоядерным процесcором, растут каждый день, вот почему все постоянно говорят про параллелизм (concurrency). Параллелизм для наших web приложений и API бэкендов, это когда вывод htop выглядит примерно как на картинке:

Concurrente htop

Я недавно был на великолепной Ruby конференции и три или четыре доклада были про параллелизм. Сообщество Ruby достаточно открыто и обсуждалось достаточно много возможностей: использовать потоки, использовать различные среды выполнения Ruby, чтобы обойти GIL, использовать больше процессоров, использовать модель акторов через библиотеки как Celluloid или даже использовать Akka через JRuby.

В то время как модель акторов, кажется, хорошо подходит для создания сетевых параллельных приложений, которые часто страдает от проблем, если среда выполнения, на которой реализовано приложение не имеет нативной поддержки. Существуют реализации для Ruby, Python и Java, но все они должны подстраиваться, чтобы достичь нормальной работы и не обязательно результат даёт наилучшую производительность. Это одна из многих причин, почему Erlang был бы намного лучшим выбором, но сначала, давайте немного уделим время модели акторов, чтобы понять, почему это так хорошо работает.

Читать дальше →
Всего голосов 50: ↑43 и ↓7+36
Комментарии62

Web-сервер на базе Cowboy

Время на прочтение10 мин
Количество просмотров34K
Привет!
В этом туториале я планирую показать тем, кто еще не знаком с веб-сервером Cowboy, как им пользоваться. Для людей, которые имеют опыт работы с ним, данный туториал врядли будет интересен, а вот для тех, кто знает о Ковбое лишь по наслышке — welcome!

Что мы будем делать:
  1. Простейшая установка и запуск сервера
  2. Краткий обзор роутинга, обслуживание статики
  3. Шаблонизация с помощью ErlyDTL (Django Template Language для Erlang)

Читать дальше →
Всего голосов 42: ↑37 и ↓5+32
Комментарии41

Вклад авторов