2

我希望能就我们的 Rails 3 应用程序的架构获得一些意见。

目前,我们有一个 Rails 3.0.7 应用程序,它允许用户通过我们连接的媒体设备之一管理在他们的电视上显示的内容(促销、视频、菜单、体育统计等)。我们有超过 1000 台(并且还在不断增加)这些连接设备,它们每分钟轮询我们的系统以检查其内容的变化,并每 15 分钟报告一次它们的统计信息(例如 CPU、内存等)。

我们系统的主要优势之一是,作为管理员,我们可以更改单个内容项的外观/工作方式,并将其分发到使用它的所有设备。此功能的缺点是当我们进行更改时,我们的系统会暂时无法使用,因为所有连接的设备几乎同时要求更新。

因此,我们计划重新构建我们的应用程序,以便内容管理。当设备与应用程序通信时,系统不会受到影响。可能有几十种方法可以解决这个问题。一种方法是拥有一个单独的 Rails 应用程序,该应用程序仅用于设备获取它们应该显示的内容、管理员可以监控等。它可以与当前内容管理共享模型、数据库等。系统。这种方式可能难以管理模型、迁移等。我显然不想复制模型。如果内容 mgt 也是理想的。系统仍然可以显示帐户的设备状态,以便帐户管理员可以查看他们的设备是否在线等。

我认为某种类型的队列机制非常适合 resque/redis,因为当在内容管理中进行更改时。系统我们可以只排队设备实例可以拾取和处理的作业。

我想把它扔给社区,以从其他可能已经工作或仍在使用利用连接设备的系统的人那里获得意见和想法。提前感谢您的贡献。我很感激!

路易斯

4

1 回答 1

0

1000 多个客户,约 1 个请求。每分钟听起来不像是需要更改架构才能正常运行的负载。一般来说,从长远来看,简单的单一应用架构会更容易维护,因此您应该尝试坚持下去,直到出现无法解决的问题。

如果性能/响应能力是主要问题,为什么不向堆栈添加缓存代理服务器?

另一个简单的选择是将应用程序安装在两台服务器上,一台用于管理员,另一台用于客户端设备。请注意,这仅在数据库不是瓶颈时才有帮助。

于 2012-04-04T23:58:48.237 回答