Зачем использовать Mongrel2?


Я не понимаю, с какой целью Mongrel2 блюда/предусматривает, что nginx уже не сделать.

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

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

2 74

2 ответа:

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

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

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

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

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

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

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

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

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