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管理,但它会更重,这似乎是你关心的:)