Erlang – лекарство при высоких нагрузках

Preview:

Citation preview

Erlang – лекарство при высоких нагрузках

Александр Дубовиков

Агнер Краруп Эрланг 1878 - 1929 г.г.

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

На самом деле системы на Erlang вовсе не масштабируемые и не надежные. Это системы на Java такие. Системы на Erlang просто непробиваемы как скалы.

Вячеслав Ахмечет

Yaws против Apache (Кб/cек. / нагрузка)

Аpache - локальная FS

Apache – NFS

Yaws – NFS

Apache умирает на 4000 конкурентных запросах

Yaws функционирует даже на 80000 конкурентных запросах

Erlang: Язык функционального программирования

Все вычисления – изолированные функции

Требования Конкурентные процессыSoft-RealtimeРаспределенная системаБольшие объемы кодаКомплексная функциональностьБеспрерывная работаHot UpdateОтказоустойчивость

КОНКУРЕНЦИЯ

Водить автомобиль просто, не правда ли?

Только если на трассе ты один!

Конкурентное программирование

Тяжеловесные процессыНеизолированные нити

Традиционные технологии

Erlang

Изолированные легкие процессы

Конкурентный подход Erlang

Большое количество процессовПолная изоляция процессовНикаких общих данныхПрозрачность места исполненияОбмен сообщениями

Легковесные процессы Erlang

Структура процесса

Обработка ошибок

Многоуровневая обработка ошибок

Пример: Интернет-мессенджер

Open Teleсom Platform – дизайн приложений

Линейная схема организации

Главное правило

First make it right,

then (if necessary) make it fast.

AND/OR Схема организации

MNESIA

Распределенная система управления базами данных для телекоммуникационных приложений и приложений с требованиями по близким к реальному времени скоростям получения информации.

MNESIA

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

DISCO – MAP/REDUCE

Open Source Map/Reduce фрэймворк для распределенных вычислений.

Вычислительные функции пишутся на Python

Web-приложение мониторинга

Разработан в NOKIA Research Center!

DISCO – MAP/REDUCE

Инструментарий

Web-Серверы: Yaws, MochiWeb, Pico

Фрэймворки: erlyWeb, Eblog, ErlHive

Приложения: efcgi, Cacherl и множество других

http://cean.process-one.net

Comprehensive Erlang Archive Network

Success story

eJabberd

Что почитать

http://erlang.orghttp://forum.trapexit.org/http://www.reddit.com/search?q=erlanghttp://defun.ruhttp://erlang.dmitriid.com/

Google Erlang

Спасибо за внимание :)

Дубовиков Александрad@dreamless.ru

ООО “Дремучий лес”http://diphost.ru

ВОПРОСЫ?

Recommended