Зачем использовать Mongrel2? - PullRequest
75 голосов
/ 22 мая 2011

Я запутался, что цель Mongrel2 служит / обеспечивает, что nginx еще не делает.

(Да, я прочитал руководство , но я должен быть слишком большим новичком, чтобы понять, чем он в корне отличается от nginx)

Мой текущий вебстек приложения:
- nginx : веб-сервер
- Lua : язык программирования
- FastCGI + LuaJIT : для подключения nginx к Lua
- Postgres : база данных

Ответы [ 2 ]

116 голосов
/ 26 мая 2011

Если бы вы могли назвать только одну вещь, тогда было бы, что Mongrel2 построен на базе ZeroMQ , что означает, что масштабирование вашего веб-сервера никогда не было таким простым.

Если приходит запрос, Mongrel2 получает его (здесь нет ничего необычного, как для NginX и любого другого httpd). Следующее, что происходит, - то, что Mongrel2 распределяет задачу компиляции ответа на n (с включенным ZeroMQ) бэкэндами, ждет, пока они выполнят работу, получает результаты, компилирует ответ и отправляет его клиенту. .

Теперь волшебство заключается в том, что n может быть любым числом, и что каждый из n может быть написан на любом языке, поддерживаемом ZeroMQ (20 или около того) плюс, все идет по сети, поэтому каждый n может быть выделенная коробка, возможно, в другом центре обработки данных.

Другими словами: с NginX и всем остальным, что вам нужно сделать масштабируемостью на уровне логики, Mongrel2 позволяет вам начать (с точки зрения цикла запрос / ответ) именно там, где запрос попадает в вашу инфраструктуру, с httpd вместо того, чтобы позволять сложности проникать вниз на ваш логический уровень, который увеличивает сложность как минимум на один порядок.

13 голосов
/ 04 января 2012

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

Хотя кажется, что nginx делает все, что mongrel2 предоставляет на поверхности, вы найдетемежду ними существуют серьезные различия.

Nginx сияет как интерфейсный веб-сервер, который может передавать запросы на прокси-запросы к вашим серверным веб-серверам / приложениям, а также обслуживать статический контент.

Mongrel2 - этонебольшое изменение в стеке.Как уже упоминалось, его сила заключается в использовании zeromq в качестве транспортного уровня между ним и внутренними серверами приложений.Он может обслуживать динамические URL-адреса запросов (приложения) и направлять вычислительную часть задачи в разные бэкэнды с помощью zeromq. Mongrel2 позволяет обслуживать не только http, websockets и т. Д., Но и другие протоколы (если вы склонны делать это).) все с одного сервера.пользователь никогда не узнает, что части приложения обслуживаются из разных бэкэндов.

Если ваши требования к функциональности вашего веб-приложения постоянно меняются или вы хотите добавить такие вещи, как потоковая передача, возможность кодирования на разных языкахв конце и т. д., то я бы определенно посмотрел на mongrel2.Или даже есть гибрид, где вы используете nginx / haproxy / varnish для статических файлов и кэширования, а все остальное направлено на mongrel2.

...