Какая реальная выгода от отказоустойчивости Эрланга для веб-проекта? - PullRequest
3 голосов
/ 13 октября 2011

Предположим, у нас есть веб-проект, в котором мы хотим подключить к серверу ~ 10000 веб-клиентов одновременно.Предположим также, что один клиентский сеанс длится около 25 минут.

Если мы сравним стек LAMP или любой другой популярный веб-стек / фреймворк (Ruby on Rails с Apache в Linux и т. Д.) С веб-проектом, созданным на Erlang/ OTP - что Erlang / OTP имеет с точки зрения отказоустойчивости, чего нет у других платформ?

Какое событие может произойти с клиентом, что приведет к краху всего стека LAMP, в то время какErlang / OTP будет стоять на своем месте?

Ответы [ 2 ]

7 голосов
/ 13 октября 2011

Обратите внимание, что типичный стек LAMP использует некоторую отказоустойчивость.В частности, если запрос в стеке LAMP потерпит неудачу, будет выполняться только этот запрос, а остальная часть кода будет выполняться.Этот тип защиты позволяет вам иметь сбои в одном запросе, не затрагивая при этом другие запросы.

Эрланг предлагает эту идею "способности справляться с небольшими непредвиденными ошибками" в гораздо более мелком масштабе.У вас могут быть другие подсистемы в приложении, и на них может распространяться тот же тип допуска к ошибкам.Вы не получите его «бесплатно», но есть инструмент для создания надежной системы.Представьте себе ошибку клиента в стеке LAMP.Это часто приводит к отключению этого клиента.Это может быть не так в Erlang, и клиент может продолжать работать.

Для системы из 10000 клиентов, Erlang обеспечивает то преимущество, что вы можете иметь процесс для каждого клиента.Или, возможно, 10 процессов на клиента.Это намного сложнее во многих языках, так как процесс / поток довольно тяжелый и дорогой.Обратите внимание, что межпроцессное взаимодействие между клиентами является простым, даже если некоторые клиенты находятся на другом компьютере (представьте себе, что когда-нибудь будете расширяться до распределенного кластера).

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

3 голосов
/ 13 октября 2011

что Erlang / OTP имеет с точки зрения отказоустойчивости, чего нет у других платформ?

Теперь Erlang / OTP имеет очень минимальные, если не нулевые побочные эффекты. Благодаря своему параллелизму веб-сервер, такой как yaws, буквально порождает небольшой веб-сервер для каждого соединения. Если какой-либо пользователь затронут какой-либо ошибкой веб-службы в вашем приложении, все остальные пользователи никогда этого не заметят, и только пользовательский процесс может выйти.

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

Дистрибуция Эрланга позволяет нам писать распределенные приложения. Я лично использовал yaws web server при создании веб-приложения.

По моему опыту, любой веб-сервер, который вы можете выбрать, скажем, <a href="https://github.com/basho/mochiweb" rel="nofollow">Mochiweb</a>, обучающее руководство, найденное здесь: http://alexmarandon.com/articles/mochiweb_tutorial/,, весьма впечатляет по производительности. Фактически, несколько лет назад самая старая версия веб-сервера yaws была отмечена самой новой (тогда) версией Apache, а результаты теста очень пробуждают . Когда я прошел через кометное приложение миллионов пользователей с Mochiweb , которое имеет Часть 2 и Часть 3 , я был впечатлен. Вот некоторые из немногих примеров мощных веб-фреймворков, созданных для Интернета.

И, кстати, вы слышали об этих новых NO SQL Databases с REST (HTTP) interface, разработанных в Erlang / OTP, например Сервер Membase [домашняя страница здесь: http://www.couchbase.com/products-and-services/membase-server], Диван DB и Riak , их производительность очень впечатляет, это означает, что их веб / REST интерфейс очень стабилен, и благодаря их впечатляющей, документированной сквозной передаче, они доказали, что их базовая технология (Erlang / OTP) была построена не только для систем высокой доступности и отказоустойчивости, но и для Интернета! Просто прочитайте этот документ: http://blog.couchbase.com/why-membase-uses-erlang

Многие другие веб-фреймворки, встроенные в erlang и очень впечатляющие, можно найти в списке на вики-странице здесь: http://en.wikipedia.org/wiki/Erlang_(programming_language). Возможно, можно найти более подробное описание его функций, которые делают его мощным в сети. здесь: http://cs.nyu.edu/~lerner/spring10/projects/Erlang.pdf

...