2011-05-22 21 views
73

Estoy confundido qué propósito Mongrel2 sirve/proporciona que nginx aún no lo hace.¿Por qué usar Mongrel2?

(Sí, he leído el manual pero debo ser demasiado de un novato para entender cómo es fundamentalmente diferente de nginx)

Mi pila de aplicaciones Web actual es:
- nginx: servidor web
- Lua: el lenguaje de programación
- FastCGI + LuaJIT: nginx para conectar a Lua
- Postgres: base de datos de

+1

hace lo mismo, simplemente diferente. elige el que te gusta – Javier

Respuesta

116

Si sólo podría nombrar una cosa, entonces sería que Mongrel2 está construido alrededor de ZeroMQ lo que significa que, para ampliar su servidor web nunca ha sido más fácil.

Si llega una petición, Mongrel2 lo recibe (nada inusual aquí, los mismos que para Nginx y cualquier otro httpd). Lo siguiente que ocurre es que Mongrel2 distribuye la tarea de compilar una respuesta a n (ZeroMQ-habilitado) backends, los espera para hacer el trabajo, recibe los resultados, compila la respuesta y lo envía al cliente.

Ahora, la magia está en el hecho de que n puede ser cualquier número y que cada uno de n puede escribirse en cualquier idioma como es compatible con ZeroMQ (20 o más), todo va a través de la red para que cada n ser una caja dedicada, posiblemente en otro centro de datos.

En otras palabras: con Nginx y todo lo demás que tiene que hacer escalabilidad en su capa de lógica, Mongrel2 le permite iniciar (desde un punto de vista ciclo de petición/respuesta) este derecho en que la solicitud llegue a su infraestructura, por lo el httpd en lugar de dejar que la complejidad penetre en tu nivel lógico, lo que hace que la complejidad suba al menos un orden de magnitud imo.

+2

¡Gracias! Muy buena pregunta y muy buena respuesta. – malkia

+0

@MarkusGattol ¿Cuál es el propósito de fastcgi? Puedo hacer eso con eso. En cualquier idioma, no? –

13

Usted debe mirar los puntos fuertes de cada uno y decidir usar uno o ambos dependiendo de sus casos de uso ..

Mientras, parece que todo lo que hace nginx mongrel2 proporciona en la superficie, que encontrará allí son las principales diferencias de enfoque entre los dos.

Nginx brilla como un servidor web front-end, que las solicitudes de lata de proxy a sus servidores web backend/appservers y también sirven contenido estático.

Mongrel2 es un ligero cambio en la pila. Como se mencionó, su poder proviene de su uso de zeromq como la capa de transporte entre él y los servidores de aplicaciones back-end. Puede servir urls dinámicas solicitud (solicitudes de aplicaciones) y dirigir la parte de cálculo de la tarea a diferentes backends usando zeromq .. mongrel2 le permite servir no sólo http, websockets etc, pero otros protocolos (si está inclinado a hacer entonces) todo desde el mismo servidor. el usuario nunca sabría que porciones de la aplicación están siendo servidas desde diferentes backends.

Si sus requisitos para la funcionalidad de su aplicación web siguen cambiando o si desea agregar cosas como la transmisión, la capacidad de codificar en diferentes idiomas en la parte de atrás, etc., entonces definitivamente miraría mongrel2.O incluso tiene un híbrido donde se usa nginx/haproxy/barn para los archivos estáticos y el almacenamiento en caché, y todo lo demás se dirige a mongrel2.