我很困惑什麼目的Mongrel2服務/提供,nginx還沒有做。爲什麼使用Mongrel2?
(是的,我讀過manual,但我必須要太小白的理解它是如何比nginx的根本不同)
我當前Web應用程序棧是:
- nginx的:Web服務器
- 的Lua:編程語言
- 的FastCGI + LuaJIT:nginx的連接到Lua
- 的Postgres:數據庫
我很困惑什麼目的Mongrel2服務/提供,nginx還沒有做。爲什麼使用Mongrel2?
(是的,我讀過manual,但我必須要太小白的理解它是如何比nginx的根本不同)
我當前Web應用程序棧是:
- nginx的:Web服務器
- 的Lua:編程語言
- 的FastCGI + LuaJIT:nginx的連接到Lua
- 的Postgres:數據庫
如果你只能命名一件事那麼這將是Mongrel2是圍繞打造ZeroMQ這意味着縮放你的Web服務器從未如此簡單。
如果有請求進入,Mongrel2會收到它(這裏沒什麼不尋常的,與NginX和任何其他httpd一樣)。接下來發生的事情是,Mongrel2分配的任務編譯對n(啓用ZeroMQ)後端的響應,等待他們完成工作,接收結果,編譯響應並將其發送給客戶端。
現在,神奇的是,n可以是任何數字,並且每個n可以用任何語言編寫,並由ZeroMQ(20左右)支持,所有語言都通過網絡,因此每個n都可以成爲一個專用的盒子,可能在另一個數據中心。
換句話說:在你的邏輯層中,使用Nginx和所有其他的你必須做可擴展性,Mongrel2允許你從請求到達你的基礎結構的時候開始(從請求/響應週期的角度來看) httpd而不是讓複雜性滲透到你的邏輯層,這會使複雜性向上複雜化至少一個數量級。
謝謝!非常好的問題,非常好的答案。 – malkia 2011-05-31 04:49:46
@MarkusGattol fastcgi的用途是什麼?我可以用它做到這一點。在任何語言中,不是? – 2014-04-09 22:15:25
你應該看看各的長處,並決定一方或雙方根據您的使用情況下使用..
雖然,似乎nginx的做一切mongrel2提供在表面,你會發現有兩者在重點上存在重大差異。
Nginx作爲一款前端Web服務器,可以將請求代理到您的後端Web服務器/應用服務器,並提供靜態內容。
Mongrel2是堆棧中的輕微變化。如前所述,它的功能來自它將zeromq用作它與後端appservers之間的傳輸層。它可以爲動態請求URL(應用程序請求)提供服務,並使用zeromq將任務的計算部分導出到不同的後端。 mongrel2允許您不僅僅服務http,websockets等,還有其他協議(如果您傾向於所以)都來自同一臺服務器。用戶永遠不會知道應用程序的某些部分是從不同的後端服務的。
如果您對webapp功能的要求不斷變化,或者您希望添加流式處理,在後端以不同語言編碼的能力等,那麼我肯定會考慮mongrel2。或者甚至有一個混合動力 ,其中您使用nginx/haproxy/varnish作爲靜態文件和緩存,其他所有內容都指向mongrel2。
也一樣,只是不同而已。挑選你喜歡的一個 – Javier 2011-05-22 16:16:20