我正在研究一個非常典型的Web應用程序。用戶體驗的主要組件是網站所有者將在其首頁安裝的小部件。每當他們的首頁加載時,小部件會與我們的服務器通話並顯示一些返回的數據。Rails Metal(&Rack)是實現高流量Web服務api的好方法嗎?
因此有兩個組件來此Web應用程序:
- 站點用戶使用來配置他們的小工具,響應控件的Web API調用
- 後端組件前端UI
以前我們所有的這些都在PHP中運行。現在我們正在嘗試使用Rails,這對於#1(前端UI)來說太棒了。問題是如何有效地做到#2,小部件信息的後臺服務。很明顯,這比前端的負載要高得多,因爲每當我們的客戶的某個網站上加載前臺頁面時就會調用它。
我可以看到兩個明顯的方法:
A. 並行堆棧:設置使用比其他軌道的東西(如我們的老PHP爲基礎的方法),但訪問同一個數據庫前平行堆結束
B. Rails的金屬:使用Rails的金屬/機架繞過Rails的路由機制,但保留Rails應用程序中的API呼叫響應
我的主要問題:
- Rails/Metal是一種合理的方法嗎?
而且...
- 將在加載Rails環境仍然過重的開銷?
- 有沒有辦法讓Rails更接近金屬,繞過大部分環境?
- 請問Rails/Metal性能是否接近直接PHP的類似任務的性能(只是在這裏尋找球場)?
- 是否有會比A和B都好得多一個 'C' 的選項?也就是說,在將C代碼的長度編譯爲二進制文件並將其安裝爲nginx或apache模塊之前?
而且......
在此先感謝您的任何見解。
託比,非常感謝你 - 這裏有很多很棒的信息。在優化點之前完全同意該措施。有了這個問題,我真的試圖弄清楚在完成這條路徑之前,完整的Rails方法是否合理,並且來自您的信息,Justice和Ryan似乎使得這個方法非常可靠。儘管我對Rails的性能有一些假設 - 但在我上次評估之後的最後18-24個月裏,我已經走了很長一段路。 – Greg 2010-04-12 16:30:10