2011-06-08 36 views
2

我想實現一個像股票交易所那樣的價值會隨時變化的網站應用程序(比如說一次)。我可能會用阿賈克斯彗星做。Rails 3的性能

由於應用程序的性質,用戶將會有點併發,並且我正在爲性能而煩惱。

這是我的想法:

我想讓它在Rails 3中,但我去擔心性能。任何優秀的託管公司可供選擇?我應該使用雲嗎? Ruby 1.9.2中的Rails 3將比PHP(包括db查詢)更快?

我可以在Play框架中製作,它可能沒有性能問題,但是我想在生產中隨時進行更改(如果需要),而不需要重新部署等。另外,我更喜歡滑軌。

我可以使它在PHP,但它需要更多的時間,更多的代碼

我沒有在的experiance真正生產系統使用Rails或玩,所以我不知道很多關於性能。任何人都可以幫忙嗎?

+0

你真正的問題是什麼? – 2011-06-08 11:00:01

+0

你爲什麼會擔心語言/框架?在底層語言(http服務器,RDBMS,HDD子系統不足等)之前,有很多東西是瓶頸。 – 2011-06-08 11:04:03

+5

在我的評估中,當下面有兩個「合理的答案」時,爲什麼這被標記爲「封閉」,因爲它「目前的形式無法合理地回答」。 – 2011-06-08 11:18:30

回答

2

這可能是值得考慮使用Faye,這是一個「簡單的pub/sub消息的網絡」框架。如果你有使用Ruby和Node.js的服務器組件,以及Ruby的客戶端,並且對你的用例web瀏覽器(顯然是通過javascript)來說至關重要。

有兩種方法可供選擇:

  • 嵌入您的軌道里面的王菲Server應用程序。漂亮,簡單,移動部件更少,管理流程更少,但可能不像以下那樣具有可擴展性:
  • 在Node.js中運行單獨的Faye服務器,並使用Ruby Faye客戶端從Rails應用程序推送消息。稍微複雜一些。更多移動部件。更多的進程來管理。但是,關鍵的是,所有重要的連接都是在Node.js中完成的,這是它非常擅長的。

如果是我,我會用選項1開始讓事情變得簡單,並升級到選項2 當且僅當我可以證明這是必要的。

這裏有一個很好的介紹,使用來自Ruby的Faye Railscast 260

2

如果不知道您的建築物的具體情況,但對於可能被許多客戶端同時訪問的事物而言,確實很難具體,而且可能不一定需要訪問Rails應用程序的完整應用程序環境,你可能會考慮使用諸如node.js + Rails之類的組合。如果我正確地理解了你,一旦打開一個頁面,它將通過comet/websocket連接到服務器,並且該頁面上的元素將經常更新。

您可以讓您的Rails應用程序通過node.js應用程序(通過Redis或某些類似)通知相關更改,然後將這些更改廣播給任何連接的客戶端...保持node.js服務器正在播放的角色以輕量級的最低限度。當有人上網時,頁面加載,一個彗星流(稱爲你喜歡的...一個套接字)被打開到真正輕量級的node.js,並且無論有什麼內容被推送到瀏覽器,然後是廣播更新它會在Rails應用程序內收到作爲事件發生的事件。將所有這些客戶端連接到Rails環境中似乎很愚蠢,因爲有更好的工具可以實現這種功能。

我不是說不要使用Rails的,我只是建議你在服務方面考慮您的應用程序並運行相關的工具這些服務;)

下面是一個小例子播出如何使用Node.js聊天應用程序,只給你一個想法:

http://fzysqr.com/2011/02/28/nodechat-js-using-node-js-backbone-js-socket-io-and-redis-to-make-a-real-time-chat-app/

的node.js只是一個建議......你可以走和研究方案,或肯定的是,如果你想保持事情「簡單」,只是從Rails管理,但它會更重,這似乎是你關心的:)