为什么要使用Mongrel2?


76

我很困惑Mongrel2服务/提供的目的是nginx尚未实现的。

(是的,我已经阅读了该手册,但是我必须是一个新手,以了解它与nginx的根本区别)

我现在的Web应用程序堆栈是:
- nginx的:Web服务器
-的Lua:与编程语言
-的FastCGI + LuaJIT:nginx的连接到Lua
- Postgres的:数据库


1
一样,只是不同。选择一个您喜欢的人
哈维尔

Answers:


116

如果您只能说一件事,那就是Mongrel2是围绕ZeroMQ构建的,这意味着扩展您的Web服务器从未如此简单。

如果有请求进入,则Mongrel2会收到请求(这里没有什么异常,与NginX和任何其他httpd相同)。接下来发生的事情是Mongrel2将编译响应的任务分发给n个(启用ZeroMQ的)后端,等待它们完成工作,接收结果,编译响应并将其发送给客户端。

现在,神奇的是,n可以是任何数字,并且n的每一个都可以用ZeroMQ(大约20种)支持的任何语言编写,而且都遍及网络,因此每个n可以是专用盒,可能在另一个数据中心。

换句话说:使用NginX以及所有其他必须在逻辑层中进行可伸缩性的功能,Mongrel2允许您(从请求/响应周期的角度)从httpd而不是httpd处开始请求到达您的基础结构的权限让复杂性深入到您的逻辑层,从而使复杂性至少增加一个数量级imo。


@MarkusGattol fastcgi的目的是什么?我可以做到这一点。用任何语言都可以吗?
Abdala Cerqueira 2014年

13

您应该查看每种方法的优势,并根据用例决定使用其中一种还是两种。

虽然看起来nginx可以完成mongrel2在表面上提供的所有功能,但您会发现两者之间在焦点上存在重大差异。

Nginx闪耀为前端Web服务器,它可以将请求代理到您的后端Web服务器/应用服务器,还可以提供静态内容。

Mongrel2是堆栈中的一个细微变化。如前所述,它的强大之处在于将Zeromq用作它和后端应用服务器之间的传输层。它可以提供动态请求url(应用程序请求),并使用zeromq将任务的计算部分定向到不同的后端。.mongrel2不仅可以提供http,websockets等服务,还可以提供其他协议的服务(如果您愿意这样做) )全部来自同一台服务器。用户将永远不会知道该应用程序的各个部分是从不同的后端提供服务的。

如果您对Web应用程序功能的需求不断变化,或者您想添加诸如流传输,在后端以不同语言编写代码等功能,那么我肯定会关注mongrel2。甚至还有一种混合方式,其中您使用nginx / haproxy / varnish进行静态文件和缓存,而其他所有内容都指向mongrel2。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.