我希望得到关于Rails 3应用程序架构的一些意见。
目前我们有一个Rails 3.0.7应用程序,允许用户通过我们连接的媒体设备管理其电视上显示的内容(促销,视频,菜单,体育统计等)。我们有超过1000个(并且正在增长)这些连接设备每分钟轮询我们的系统以检查其内容的变化,并且每15分钟报告一次他们的统计数据(例如CPU,内存等)。
我们系统的一个主要优点是,作为管理员,我们可以更改单个内容项的外观/工作方式,并将其分发给使用它的所有设备。此功能的缺点是,当我们进行更改时,我们的系统暂时无法使用,因为所有连接的设备都会在同一时间内请求更新。
因此,我们计划重新设计我们的应用程序,以便内容为mgt。当设备与应用程序通信时,系统不受影响。可能有很多方法可以解决这个问题。一种方法是拥有一个单独的Rails应用程序,仅用于设备获取他们应该显示的内容,管理员可以监控等等。它可以与当前内容mgt共享模型,数据库等。系统。这种方式可能难以管理模型,迁移等。我显然不想复制模型。如果内容mgt也是理想的。系统仍然可以显示帐户设备的状态,以便帐户管理员可以查看他们的设备是否在线等等。
我认为某种类型的队列机制非常适合resque / redis,因为在内容mgt中进行了更改。系统我们可以将设备实例可以拾取和处理的作业排队。
我想把这个问题告诉社区,以便从其他人那里获得意见和想法,这些人可能已经或正在使用利用连接设备的系统。在此先感谢您的贡献。我很感激!
路易斯
答案 0 :(得分:0)
1000多个客户,需求量大约为1。每分钟每个听起来不像是需要对正常操作进行架构更改的负载。通常,从长远来看,简单的单应用程序架构将更容易维护,因此您应该尝试坚持它,直到出现无法解决的问题。
如果性能/响应性是主要问题,为什么不将高速缓存代理服务器添加到堆栈?
其他简单的选项是在两台服务器上安装应用程序,并使用一台用于管理员,另一台用于客户端设备。请注意,这只有在数据库不是瓶颈的情况下才有用。