Масштабируемость Mochiweb - PullRequest
2 голосов
/ 25 мая 2010

Из всех статей, которые я до сих пор читал о Mochiweb, я слышал это снова и снова, что Mochiweb обеспечивает очень хорошую масштабируемость. Мой вопрос, как именно Mochiweb получает свойство масштабируемости? Это из внутренних свойств масштабируемости Эрланга, или у Mochiweb есть какой-либо дополнительный код, который явно позволяет ему хорошо масштабироваться? Иными словами, если бы я сам написал простой HTTP-сервер на Erlang с простой «петлей» (рекурсивной функцией) для обработки запросов, имел бы ли он такой же уровень масштабируемости, как простой веб-сервер, построенный с использованием инфраструктуры Mochiweb?

ОБНОВЛЕНИЕ: Я не планирую внедрять полноценный веб-сервер, поддерживающий все возможные функции. Мои требования очень специфичны - обрабатывать POST-данные из HTML-формы с фиксированными элементами управления.

Ответы [ 2 ]

2 голосов
/ 25 мая 2010

Возможно. : -)

Если бы вы написали веб-сервер, который обрабатывал бы каждый запрос в отдельном процессе (легковесный поток в Erlang), вы могли бы легко достичь такого же «масштабируемости». Конечно, набор функций будет другим, если вы не реализуете все, что есть у Mochiweb.

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

0 голосов
/ 17 августа 2010

MochiWeb не масштабируется сам, насколько я понимаю. Это быстрая, крошечная серверная библиотека, которая может обрабатывать тысячи запросов в секунду. То, как он это делает, не имеет ничего общего с «масштабируемостью» (кроме корректировки количества mochiweb_acceptor s, которые слушают в любой момент времени).

Что вы получаете с MochiWeb - это надежная библиотека веб-сервера и функции масштабируемости Erlang. Если вы хотите запустить один сервер MochiWeb, при поступлении запроса вы все равно можете перенести работу по обработке этого запроса на любую машину, какую захотите, благодаря инфраструктуре распределенных узлов Erlang и дешевой передаче сообщений. Если вы хотите запустить несколько серверов MochiWeb, вы можете поместить их за балансировщиком нагрузки и использовать распределенные функции mnesia для синхронизации данных сеанса между компьютерами.

Дело в том, что MochiWeb маленький и быстрый (достаточно) . Erlang - это мощный инструмент для масштабирования.


Если вы создадите свое собственное серверное решение, вы, вероятно, сможете достичь или превзойти эффективность и «масштабируемость» MochiWeb «из коробки». Но тогда вам придется переосмыслить все, о чем они уже думали, и вам придется самим испытать это в бою.

...