2

我想实现一个像证券交易所这样的网络应用程序,其中的值会一直变化(比如说每秒一次)。我可能会使用 ajax comet 来做到这一点。

由于应用程序的性质,用户会有些并发,我对性能有点担心。

这些是我的想法:

我想在 Rails 3 中实现它,但我担心性能。有什么好的托管公司可供选择?我应该使用云吗?ruby 1.9.2 中的 Rails 3 会比 php 快(包括数据库查询)?

我可以在 Play 框架中实现它,它可能没有性能问题,但我想在生产中即时进行更改(如果需要),无需重新部署等。我也更喜欢 rails。

我可以用 PHP 做,但需要更多时间,更多代码

我在使用 Rails 或 Play 的实际生产系统中没有经验,所以我对性能了解不多。任何人都可以帮忙吗?

4

2 回答 2

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 管理它,但它会更重,这似乎值得关注给你 :)

于 2011-06-08T10:46:28.437 回答
2

使用Faye可能值得考虑,它是一个“用于网络的简单发布/订阅消息传递”的框架。

Faye 拥有 Ruby 和 Node.js 服务器组件,以及 Ruby 客户端,对于您的用例 Web 浏览器至关重要(显然是通过 javascript)。

有两种方法:

  • 将 Faye 服务器嵌入到您的 rails 应用程序中。漂亮而简单,更少的活动部件,更少的管理流程,但可能不如以下可扩展性:
  • 在 Node.js 中运行一个单独的 Faye 服务器,并使用 Ruby Faye 客户端从您的 Rails 应用程序向其推送消息。稍微复杂一些。更多的运动部件。管理更多流程。但是,至关重要的是,所有繁重的连接都在 Node.js 中完成,这是它非常擅长的。

如果是我,我会从选项 1 开始以保持简单,当且仅当我能证明有必要时才升级到选项 2。

Railscast 260中对使用 Ruby 中的 Faye 进行了很好的介绍。

于 2011-06-08T11:08:19.037 回答