为什么要使用Mongrel2?

fro*_*oyo 76 lua webserver nginx mongrel2

我很困惑Mongrel2服务/提供的目的是nginx还没有.

(是的,我已经阅读了手册,但我必须要过多的菜鸟才能理解它与nginx的根本区别)

我当前的Web应用程序堆栈是:
- nginx:webserver
- Lua:编程语言
- FastCGI + LuaJIT:将nginx连接到Lua
- Postgres:数据库

Tom*_*Tom 116

如果您只能命名一件事,那么Mongrel2将围绕ZeroMQ构建,这意味着扩展您的Web服务器从未如此简单.

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

现在,神奇的事实是n可以是任何数字,并且n中的每一个都可以用ZeroMQ(20左右)支持的任何语言编写,所有都通过网络,因此每个n都可以是一个专用的盒子,可能在另一个数据中心.

换句话说:使用NginX以及其他所有必须在逻辑层中进行扩展的程序,Mongrel2允许您从请求到达基础架构的那个位置(从请求/响应周期的角度)开始,在httpd而不是httpd而不是让复杂性渗透到你的逻辑层,将复杂性向上推动至少一个数量级.

  • 谢谢!非常好的问题,非常好的答案. (2认同)

lap*_*pax 13

你应该看看每个的优点,并决定使用其中一个或两个,具体取决于你的用例..

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

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

Mongrel2在堆栈中略有变化.如上所述,它的强大之处在于它使用zeromq作为它与后端应用程序之间的传输层.它可以提供动态请求URL(应用程序请求),并使用zeromq将任务的计算部分指向不同的后端.mongrel2允许您不仅提供http,websockets等,还提供其他协议(如果您倾向于这样做) )所有来自同一台服务器.用户永远不会知道应用程序的各个部分是从不同的后端提供的.

如果您对webapp功能的要求不断变化,或者您想添加诸如流媒体之类的内容,能够在后端使用不同语言进行编码等,那么我肯定会看看mongrel2.甚至有一个混合,你使用nginx/haproxy/varnish进行静态文件和缓存,其他一切都是针对mongrel2的.