2013-02-14 26 views
6

隨着應用服務器這麼多的選擇(!客運,薄,獨角獸,雜種,彪馬和彩虹),我不知道什麼是適合以下情況選擇應用服務器純粹用於API後端(所有資產都與Nginx一起提供)。一些API調用依賴於其他API服務,所以有時他們需要一段時間才能完成。的API後端

響應式應用程序與移動客戶端,平板電腦和桌面客戶端一起使用,因此不保證客戶端的連接。

在這種情況下,您認爲哪種應用程序服務器適合?選擇什麼東西時應該考慮?

+0

這將在Saas或獨立服務器上運行嗎? – TheIrishGuy 2013-02-14 13:04:56

+0

@TheIrishGuy:獨立。 – randomguy 2013-02-14 14:08:22

回答

13

如果您的應用程序對其他服務進行API調用,那麼Unicorn是一個不錯的選擇。 Unicorn是一款單線程多進程應用程序服務器,專爲快速,短期運行的CPU綁定工作負載而設計。使HTTP API調用算作長時間運行的阻塞I/O請求。這不是一個限制,而是Unicorn的一個明確的設計選擇。這由the Unicorn website,「在某些情況下更糟糕」部分確認。

理論上,Thin可以處理這種高併發工作負載,因爲它使用了偶數I/O。但是,這需要以代碼的形式提供明確的框架和應用程序支持。很少的框架和應用程序可以做到這一點。 Rails和Sinatra不會。

因此,這隻留下多線程的應用程序服務器。三名競爭者是Puma,Rainbows和Phusion Passenger 4 Enterprise

  • 彪馬是比較新的。彩虹稍微老一點,但作者對它是否運作良好沒有保證。 Phusion Passenger已經成熟,已經存在多年,目前已被超過150000個網站使用,其中包括Pixar,紐約時報,AirBnB等大型網站。
  • Puma's和Rainbows的使用模式與Unicorn和Thin類似你開始一堆進程,並通過反向代理配置將它們掛接到Nginx。另一方面,Phusion Passenger被設計爲直接集成到Nginx中,所以它需要更少的配置,流程管理和其他管理開銷。
  • Phusion Passenger 4 Enterprise不是一個嚴格的多線程服務器,而是一個混合多進程/多線程服務器。這意味着它可以運行多個進程(以提高穩定性和使用多個CPU內核的能力),每個進程都有多個線程(用於高I/O併發)。
  • Phusion Passenger 4 Enterprise攜帶many advantages擁有比Puma和Rainbows更多的功能:例如它具有帶外垃圾收集功能,可以根據流量動態調整流程數量,完全自動化滾動重新啓動,因此您無需編寫腳本等等

您可能也有興趣this writeup欲瞭解更多信息。

3

知道一個真正的方法是在實際條件下測試和測量性能。其他任何事情都是假設和猜測。與此同時,你應該從一個你知道足夠好的角度開始(獨角獸似乎是一個相當受歡迎和體面的選擇),並且在服務器性能成爲瓶頸後處理服務器性能。

+0

+1獨角獸。 獨角獸在乘客。 如果他會使用工人,還會有其他問題。如果使用Heroku,我會用瘦來開始。彪馬或獨角獸背後的nginx反向代理。 – TheIrishGuy 2013-02-14 23:11:10

2

根據您的獨立請求,我建議使用nginx反向代理背後的Puma或Unicorn服務器。對工作隊列使用sidekiq。這是假設一個Rails應用程序,如果使用Sinatra,瘦可能是足夠的雅。就像其他人說的那樣,首先要比測試表現寫穩定性。